51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5900|回复: 19
打印 上一主题 下一主题

[原创] 如何自动添加defect fixed date

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-9-25 11:09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Defect经过开发人员修复后,开发人员把状态标为fixed,我在QC里加了一个fixed date,但是如何让这个date自动记录defect状态何时变为fixed呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-9-25 18:28:08 | 只看该作者
工作流可以实现
Sub Defects_Bug_FieldChange(FieldName)
  if FieldName="BG_STATUS"   then
     if Fields("BG_STATUS").Value = "fixed"    then
        Fields("BG_USER_02").Value=now()
      end if
  end if
End Sub
注:BG_USER_02是fixed date这个字段的名称。具体的名称可以去qc里找;这个方法只能记录日期,到天,不能到时分秒
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-9-26 11:01:42 | 只看该作者
多谢楼上!
另外,我如何学习写工作流代码?有没有成套的资料可供学习?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-9-26 12:04:27 | 只看该作者
说实话我也不知道怎么学
我就知道工作流代码是vb写的
碰到问题了我才去自己写代码
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-9-26 12:12:50 | 只看该作者
补充一点,新家的那个字段的类型选择string,这样就能记录到时分秒了
哈哈,自己顶自己一下
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-9-26 13:43:52 | 只看该作者

回复 2# 的帖子

麻烦再问一下,Sub Defects_Bug_FieldChange这个子函数总得有地方调用它吧?
这个是系统默认的子函数么?如果不是的话,我定义了它,没有地方会调用它,也不会起作用吧

另外,我查看现有的脚本里,有一个Sub Bug_FieldChange(FieldName),是不是我直接修改这个子函数就可以了?不用在定义一个新的Defects_Bug_FieldChange了?

对VB一窍不通,对QC也是一知半解,唉,见笑了...

[ 本帖最后由 Dracula.chen 于 2008-9-26 14:10 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-9-26 14:16:19 | 只看该作者
应该是直接修改Sub Bug_FieldChange(FieldName)这个函数了
我用的是td。可能td和qc的函数名不同
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-10-10 11:58:40 | 只看该作者
牛人,我代码写成如下
==========================
  If Bug_Fields.Field("BG_STATUS").Value = "Fixed" Then
     Bug_Fields.Field("BG_USER_18").Value=now()
  End If
  If Bug_Fields.Field("BG_STATUS").Value = "Reopen" Then
     Bug_Fields.Field("BG_USER_19").Value=now()
  End If
==========================
可是当我reopen bug时,bug的fixed date也变成reopen时间了,难道if逻辑有错误么?
请指教!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-10-13 15:08:51 | 只看该作者
If Bug_Fields.Field("BG_STATUS").Value = "Fixed" Then
     Bug_Fields.Field("BG_USER_18").Value=now()
     else if Bug_Fields.Field("BG_STATUS").Value = "Reopen" Then
             Bug_Fields.Field("BG_USER_19").Value=now()
     end if
end if
这样试试
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2008-11-4 11:35:27 | 只看该作者
原帖由 Dracula.chen 于 2008-10-10 11:58 发表
牛人,我代码写成如下
==========================
  If Bug_Fields.Field("BG_STATUS").Value = "Fixed" Then
     Bug_Fields.Field("BG_USER_18").Value=now()
  End If
  If Bug_Fields.Field("BG_STATUS") ...

不是逻辑问题,而是QC的问题,当状态为fix时,改变bug的任何字段都回引起fixed date的改变。我想加一个限制,就是fixed date只有在点save的时候才update,不知道如何写这个条件?麻烦高人了~不胜感激
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-11-4 17:58:41 | 只看该作者
这个我还真不知道怎么解决
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2009-11-30 14:54:01 | 只看该作者
工作流自定义很高深,
不懂
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2012-3-30 11:45:19 | 只看该作者
1、首先在Customize Project Entities的DEFECT中增加
两个字段,New Field会自动生成一个“field name”,修改Field Label为“fixed date”,修改Field tape为date(出现提示确定就可以)记录field name的值,我这里生成的是BG_USER_04,
2、进入Set Up Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
将以下代码粘入:
   
'增加fixed字段到列表,fixed、closed、reopen date 时间
Sub Defects_Bug_FieldChange(FieldName)
  On Error Resume Next
  '增加closed修改时间
  if Bug_Fields.Field("BG_STATUS").Value="Closed" then
     Bug_Fields.Field("BG_CLOSING_DATE").Value=now()
  '增加fixed修改时间
  ElseIf Bug_Fields.Field("BG_STATUS").Value="Fixed" then
         Bug_Fields.Field("BG_USER_04").Value=now()、
  '增加reopen修改时间
  ElseIf  Bug_Fields.Field("BG_STATUS").Value="Reopen" then
          Bug_Fields.Field("BG_USER_05").Value=now()
  End If
  On Error GoTo 0
End Sub

保存后。返回即可!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2012-9-21 10:42:21 | 只看该作者
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2012-9-21 10:42:27 | 只看该作者
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2012-9-21 10:42:38 | 只看该作者
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2012-9-21 10:42:53 | 只看该作者
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange,要怎样才能打开VB编辑器?
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2012-9-21 10:43:00 | 只看该作者
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange,要怎样才能打开VB编辑器?
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2012-9-21 10:43:09 | 只看该作者
为什么我的TD目录底下没有Set Up /Workflow-Script Editor-Defects module script-Defects_Bug_FieldChange,要怎样才能打开VB编辑器?
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2012-9-24 14:05:49 | 只看该作者
回复 10# Dracula.chen

     你这个问题可以这么解决:QC提供了很多固化的过程,我这里解释下什么叫过程,过程就是事务,可以这样来描述一个过程:“当操作什么....(原因),然后触发什么...(结果)!”
你上面写的Bug_Field_Change只是其中的一个固化过程,表示“当缺陷详情对话框中某一字段内容发生变化(原因),然后触发fixtime字段值等于当前时间(结果)”,这也就是你看到的为什么
缺陷详情对话框中另一字段内容发生变化,都会触发fixtime进行赋值,其实要解决该问题,也是有办法,也就是指定某字段变化才触发进行赋值,可以在If中再增加一个条件:
   if bug_fields.field("bg_status").ismodified = true then .....
这样就限定住只有bg_status这个字段变化了,才触发后续动作,而非所有的字段,明白了吗,我在解释下,.ismodified是“bg_status”字段的一个属性,所有QC中的可见的字段都有这个属性,这个属性
用来表示该字段是否变化了。
   采用我上面讲的,添加上面的IF条件,应该就可以解决你的问题了
   然后你刚才也提到,能否在最终提交的时候再去改fix_time赋值,这样的思路很好,这样也可以解决你的问题,这样你只要用到另外一个过程,canpost或者是afterpost过程就可以了
   多研究下QC的管理员手册,如果是英文的看的头疼,可以去网上下中文的,你用的还是TD8.0,现在QC都出到QC11了,QC11都有中文的了,很多资料可以供你参考的
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-7-7 18:45 , Processed in 0.790718 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表