51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2118|回复: 3
打印 上一主题 下一主题

[求助] td 一个defect的内容修改后,如何自动修改另一个defect的相应内容

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-1-15 13:41:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有这么个需求:两个问题单是类似的,一个问题单是主单(因为是先提的),假设id号是1;另一个问题单是从单, id号是2

从单状态置为attached后,将主单的id号1填入了field "类似缺陷单",

从单提交后, 这时候想要主单的field“类似缺陷单” 自动的填上从单的id号2

请问脚本要怎么实现?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2016-1-26 12:49:54 | 只看该作者
Sub Defects_Bug_AfterPost
  Dim thisBugId, similarBugId
  On Error Resume Next

  similarBugIds = Bug_Fields("BG_USER_13").Value
  thisBugId = Bug_Fields("BG_BUG_ID").Value
  UpdateSimilarBugId thisBugId, similarBugIds
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2016-1-26 12:51:31 | 只看该作者
'类似问题单的依赖关系处理
Sub UpdateSimilarBugId(thisBugId, similarBugIds)
  Dim td, objBugFac, objBug, originalBugId, deletedSimilarBugIds
  Dim similarBugIdList, deletedSimilarBugIdList
  On Error Resume Next

  Set td = TDConnection
  Set objBugFac = td.BugFactory

  '问题1的类似问题单2删除后,问题单2的类似问题单1也需要删除
  deletedSimilarBugIds = getDeletedSimilarBugId(thisBugId)

  If deletedSimilarBugIds <> "" Then
    If inStr(deletedSimilarBugIds, ",") Then '多个要删除的类似问题单
      deletedSimilarBugIdList = Split(deletedSimilarBugIds, ",")
      For i = 0 To Ubound(deletedSimilarBugIdList)
        Set objBug = objBugFac.Item(deletedSimilarBugIdList(i))
        objBug.Field("BG_USER_13") = replace(objBug.Field("BG_USER_13"), thisBugId, "")
        objBug.Post
      Next
    Else
      Set objBug = objBugFac.Item(deletedSimilarBugIds)
      objBug.Field("BG_USER_13") = replace(objBug.Field("BG_USER_13"), thisBugId, "")
      objBug.Post
    End If
  End If

  '问题单1有类似问题单2,问题单1提交后,问题单2自动的更新类似问题单号为1
  If inStr(similarBugIds, ",") or inStr(similarBugIds, ",") Then '有多个类似问题单
    similarBugIdList = Split(similarBugIds, ",")
    For i=0 To Ubound(similarBugIdList)
      Set objBug = objBugFac.Item(similarBugIdList(i))
      originalBugId = objBug.Field("BG_USER_13")

      If inStr(originalBugId, thisBugId)=False Then
        If originalBugId <> "" Then
          objBug.Field("BG_USER_13") = originalBugId& "," &thisBugId
        Else
          objBug.Field("BG_USER_13") = thisBugId
        End If
        objBug.Post
      End If
    Next
  ElseIf similarBugIds <> "" Then '只有一个类似问题单
    Set objBug = objBugFac.Item(similarBugIds)
    originalBugId = objBug.Field("BG_USER_13")

    If inStr(originalBugId, thisBugId)=False Then
      If originalBugId <> "" Then
        objBug.Field("BG_USER_13") = originalBugId& "," &thisBugId
      Else
        objBug.Field("BG_USER_13") = thisBugId
      End If
      objBug.Post
    End If
  End If
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2016-1-26 12:56:28 | 只看该作者
' 获取已删除的类似问题单号
Function getDeletedSimilarBugId(bugId)
  On Error Resume Next
  Dim objBugFactory, objBug, objBugHistList
  Dim currentSimilarBugIds, preSimilarBugIds
  Dim similarBugIdList

  getDeletedSimilarBugId = ""
  Set objBugFactory = TDConnection.BugFactory
  Set objBug = objBugFactory.Item(bugId)
  Set objBugHistList = objBug.History.NewList("")

  '获取当前的类似问题单号
  For i=1 To objBugHistList.Count+1
    If objBugHistList(i).FieldName = "BG_USER_13" Then
      currentSimilarBugIds = objBugHistList(i).NewValue
      Exit For
    End If
  Next

  '获取之前的类似问题单号
  For j=i+1 To objBugHistList.Count+1
    If objBugHistList(j).FieldName = "BG_USER_13" Then
      preSimilarBugIds = objBugHistList(j).NewValue
      Exit For
    End If
  Next

  '获取已经删除的类似问题单号
  If inStr(preSimilarBugIds, ",") Then
    similarBugIdList = Split(preSimilarBugIds, ",")
    For i = 0 To Ubound(similarBugIdList)
      If inStr(currentSimilarBugIds, similarBugIdList(i))= False Then
        If getDeletedSimilarBugId = "" Then
          getDeletedSimilarBugId = similarBugIdList(i)
        Else
          getDeletedSimilarBugId =  getDeletedSimilarBugId & "," &similarBugIdList(i)
        End If
      End If
    Next
  Else
    If inStr(currentSimilarBugIds, preSimilarBugIds) = False Then
      getDeletedSimilarBugId = preSimilarBugIds
    End If
  End If

  Set similarBugIdList = nothing
  Set currentSimilarBugIds = nothing
  Set preSimilarBugIds = nothing
  Set objBugHistList = nothing
  Set objBug = nothing
  Set objBugFactory = nothing

  On Error GoTo 0
End Function
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 02:49 , Processed in 0.066963 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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