示例:存储上次输入的值
此示例显示如何使用 TDConnection 对象实现操作之间数据的持久性。例程中变量生存期仅限于例程运行时间。因此,如果以后要用它,必须存储持久的数据。建议您尽可能用 ALM API 存储持久数据,而不使用外部对象、文件或注册表。
在此示例中,用户发布缺陷时,用户定义的函数 SW_KeepLastValue 使用 Settings 对象保存输入到字段 BG_DETECTION_VERSION、BG_USER_01 和 BG_USER_03 中的值。此用户添加新缺陷时,将检索这些值并分配为默认值。
用户发布新缺陷之前,用 SET 操作从 Bug_CanPost 调用用户定义的函数。字段中的值已存储。
Function Bug_CanPost()
' Initialize the function's return value to
' avoid unpredictable behavior.
Bug_CanPost = True
If Bug_Fields("BG_BUG_ID").Value = "" Then
SW_KeepLastValue ("SET")
End If
End Function
用 GET 操作从 Bug_New 事件过程调用该函数。用户添加新缺陷时,在此用户的字段中存储的值将输入到这些字段中。
Sub Bug_New()
SW_KeepLastValue ("GET")
End Sub
根据作为参数传递的操作,用户定义的函数 SW_KeepLastValue 在当前用户的常用设置表中存储字段的值,或从 Settings 对象读取值并将值分配到相应字段。
Sub SW_KeepLastValue(action)
Dim tdc, vals, flds
Dim uset, pairs, pair
Dim bld
On Error Resume Next
bld = ""
Set tdc = TDConnection
Set uset = tdc.UserSettings
If action = "SET" Then
flds = Array("BG_DETECTION_VERSION", _
"BG_USER_01", "BG_USER_03")
vals = ""
For i = 0 To UBound(flds)
If vals <> "" Then vals = vals & ";"
vals = vals & flds(i) & "=" & _
Bug_Fields(flds(i)).Value
Next
'Open category KeepLValueSetting
uset.Open ("KeepLValueSetting")
'Setting KeepValueFields in category KeepLValueSetting
uset.Value("KeepValueFields") = vals
uset.Close
End If 'SET
If action = "GET" Then
uset.Open ("KeepLValueSetting")
vals = uset.Value("KeepValueFields")
If vals <> "" Then
pairs = Split(vals, ";")
For i = 0 To UBound(pairs)
pair = Split(pairs(i), "=")
If UBound(pair) = 1 Then
Select Case pair(0)
Case "BG_USER_03"
bld = pair(1)
Case Else
If Bug_Fields(pair(0)).Value = "" Then
Bug_Fields(pair(0)).Value = pair(1)
End If
End Select
If Bug_Fields("BG_DETECTION_VERSION").Value _
<> ""
And bld <> "" Then
SW_SetLists_VersionsBuilds _
"BG_DETECTION_VERSION", _
"BG_USER_03"
Bug_Fields("BG_USER_03").Value = bld
If Err.Number <> 0 Then Err.Clear
End If 'Bug_Fields
End If 'UBound(pair)
Next
End If 'vals <> ""
End If 'GET
uset.Close
PrintError ("Keep Last Value (" & action & ")")
On Error GoTo 0
End Sub

