例:最後に入力された値の格納
この例では、TDConnection を使用して、アクション間の維持データを実装する方法を例示します。ルーチン内の変数の寿命は、ルーチンが動作中である期間のみです。このため、維持データを後で利用する必要がある場合、維持データを格納する必要があります。可能であるときは、外部オブジェクト、ファイル、またはレジストリを使用するのではなく、常に ALM を使用して維持データを格納することを推奨します。
この例では、ユーザ定義関数 SW_KeepLastValue は、ユーザが不具合を送信するときに、Settings オブジェクトを使用して、[BG_DETECTION_VERSION],[BG_USER_01],[BG_USER_03]フィールドに入力された値を保存します。このユーザが新規不具合を追加するとき、これらの値が取得され、標準設定値として割り当てられます。
ユーザによって新規不具合が送信される前に、Bug_CanPost から SET アクションを引数にしてユーザ定義関数が呼び出されます。フィールド内の値が格納されます。
Function Bug_CanPost()
' 関数の戻り値を初期化して、
' 予期しない動作を防ぎます。
Bug_CanPost = True
If Bug_Fields("BG_BUG_ID").Value = "" Then
SW_KeepLastValue ("SET")
End If
End Function
Bug_New イベント・プロシージャから GET アクションを引数にして関数が呼び出されます。ユーザが新しい不具合を追加すると、このユーザのフィールドで格納された値が、これらのフィールドに入力されます。
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
'カテゴリ KeepLValueSetting を開きます
uset.Open ("KeepLValueSetting")
'カテゴリ KeepLValueSetting で KeepValueFields を設定します
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

