我来把答案贴出来,我对楼主的思路进行了拓展,按照下面的步骤,可以很好的实现:
1. 定义2个无状态记录类型Project,SW_Ver
Project中有字段Project,且为主键。 SW_Ver中定义了字段SW_Ver,且为主键。
注意: 这里是最简单的实现方式,抛弃了不必要的部分,只说核心的部分。如果需要其他字段,自行扩展。
2. 在Defect下定义2个字段Project和SW_Ver分别引用Project,SW_Ver两个Stateless无状态记录类型
3. 在Project的Default Value上加上hook(目的是为Project设置一个默认值,如AA):
SetFieldValue fieldname, "AA"
4. 在Project的Value Change上加上hook(动态的清空SW_Ver字段)
SetFieldValue "SW_Ver", ""
5. 在SW_Ver的Choices List上加入下面代码:
Dim sessionObj
Dim queryObj
Dim filterObj
Dim resultObj
Dim project
Set sessionObj = GetSession
project = GetFieldValue("Project").Getvalue
Set queryObj = sessionObj.Buildquery("SW_Ver")
queryObj.BuildField("SW_Ver")
Set filterObj = queryObj.BuildFilterOperator(AD_BOOL_OP_AND)
filterObj.BuildFilter "SW_Ver",AD_COMP_OP_LIKE, project
Set resultObj = sessionObj.BuildResultSet(queryObj)
resultObj.Execute
Do While resultObj.MoveNext = AD_SUCCESS
Choices.AddItem resultObj.GetColumnvalue(1)
Loop
注意:这是至关重要的一个操作-将SW_Ver的Choices List的Hook Property设置为Recalculate Choices List
没有这个,List值不会发生变化,一直保留初始情况。
6. (Form Design部分省略) 执行可看到效果