例:最後に入力された値の格納

この例では、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