发新话题
打印

[求助] ClearQuest中,设置脚本使一个字段的可选项列表依赖于另一个字段的值????( 此文章被查看:1209次,被回复:9篇!! )

ClearQuest中,设置脚本使一个字段的可选项列表依赖于另一个字段的值????

ClearQuest中,我想实现不同的产品对应不同的模块,如下设置是可以实现:

在 【产品】的 ValueChanged 事件里写代码

Sub project_ValueChanged(fieldname)
    SetFieldValue "模块", ""
End Sub

然后在“模块”字段的“Choice List”处设置脚本
    DIM chanpin
    chanpin=GetFieldOriginalValue("产品").GetValue()
    select case chanpin
              case "cp1"
                      choices.AddItem("mk1")
         choices.AddItem("mk2")
              case "cp2"
         choices.AddItem("mk3")
         choices.AddItem("mk4")
    end select

   但是如果"产品"这个字段是系统自带的,并且不能对其进行设置和修改(脚本),那如何来实现不同"产品"对应不同的"模块"呢???



© 本文为 ty1227SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

回复 #1 ty1227 的帖子

建议你所用的产品和模块字段自己定义,这样做起来就方便多了。
另外,通过你这种方式是可以实现的,
只是这段代码:
    DIM chanpin
    chanpin=GetFieldOriginalValue("产品").GetValue()
    select case chanpin
              case "cp1"
                      choices.AddItem("mk1")
                      choices.AddItem("mk2")
              case "cp2"
                      choices.AddItem("mk3")
                      choices.AddItem("mk4")
    end select
最后能够加个判断,如果产品字段为空,怎么办,
可以尝试如下:
If chanpin = "" then
   SetFieldValue fieldname, ""
Else
   ......
End If



© 本文为 yunshanSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

那我的"模块"的可选列表内容怎么去实现呢?又到什么地方去装载呢???



© 本文为 ty1227SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

在choist list裏實現,如果是限制了,寫法和你的代碼一樣,如果是動態list,需要重新寫代碼實現

[ 本帖最后由 ying 于 2006-12-22 13:40 编辑 ]

© 本文为 ying 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

我再问一下,CQ中的父子关系是只什么???如果我想实现"产品"字段为父关系,"模块"字段为子关系,怎么去实现??

© 本文为 ty1227 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

如果想在客户端增加模块就要建一个和项目一样的记录类型
一、在记录类型—无状态下面定义一个Model 就是和Project一样的。
    字段包括
    fname    类型short_string
    fproject 类型referecnce 指向project 选项列表为DEFAULT
    fmiaosu  类型short_string
    fname是模块名称、fproject是项目名称、fmiaosu是模块的描述
二、在Model里增加了一个记录表单,在表单中设计了相应的  fproject、fname、fmiaosu。
三、在Defect的字段里增加了一个记录f_model类型为reference 指向Model 选项列表处写入VB脚本
DIM objSession, objQueryDef, operator1, ResultSet, RelatedProjectName
    Set objSession = GetSession()
    RelatedProjectName = GetFieldValue("Project").GetValue()
    Set objQueryDef = objSession.BuildQuery("Model")

    objQueryDef.BuildField("fname")

    Set operator1 = objQueryDef.BuildFilterOperator(AD_BOOL_OP_AND)
    operator1.BuildFilter "fproject", AD_COMP_OP_EQ, RelatedProjectName


    Set ResultSet = objSession.BuildResultSet(objQueryDef)

    ResultSet.execute

    Do While ResultSet.MoveNext = AD_SUCCESS

            choices.AddItem(ResultSet.GetColumnValue(1))
    Loop

    choices.Sort
四、在Defect的字段的“poject" 关于值改变的控制项加入脚本  SetFieldValue "f_model", ""
注意:1.一定要在Defect中f_model字段的choice list右键的Hook Properties中选择上 Recalculate Choice List. 要不然不会刷新
     2.SetFieldValue "f_model", "" 当项目的值改变时,将模块字段清空,然后会触发模块选择列表的事件.

© 本文为 轻扬婉儿 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

问题已经实现!!我是用的SQL语句去查询的,和楼主的有点差别拉!!!

   我问一下楼主,
     你说的::

"""四、在Defect的字段的“poject" 关于值改变的控制项加入脚本  SetFieldValue "f_model", ""
    注意:1.一定要在Defect中f_model字段的choice list右键的Hook Properties中选择上 Recalculate Choice List. 要不然不会刷新
     2.SetFieldValue "f_model", "" 当项目的值改变时,将模块字段清空,然后会触发模块选择列表的事件.   """"'

   如果在Defect的字段的“poject" 是系统自带的,不能去修改怎么办????  就不能加脚本"SetFieldValue "f_model",

  对你上面的实现有什么影响不?????
     

© 本文为 ty1227 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

上面的实现还是有些不方便的地方
我重新整理一个发到新帖上

© 本文为 轻扬婉儿 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

楼上的发到什么新帖上?很是期待呢???/

© 本文为 ty1227 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

这就是一个字段关联问题

© 本文为 selina 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
我选择,我喜欢

TOP

发新话题