Exemple : stockage des dernières valeurs saisies

Cet exemple montre comment utiliser l’objet TDConnection pour mettre en œuvre des données persistantes entre les actions. La durée de vie d’une variable dans une routine est uniquement celle de l’exécution de la routine. Par conséquent, les données persistantes doivent être stockées si elles doivent être disponibles ultérieurement. Il est recommandé d’utiliser l’API ALM pour stocker des données persistantes chaque fois que cela est possible, plutôt que d’utiliser des objets externes, des fichiers ou le registre.

Dans cet exemple, une fonction définie par l’utilisateur, SW_KeepLastValue, utilise l’objet Paramètres pour enregistrer les valeurs saisies dans les champs BG_DETECTION_VERSION, BG_USER_01 et BG_USER_03 lorsqu'un utilisateur enregistre une anomalie. Ces valeurs sont récupérées et attribuées comme valeurs par défaut lorsque cet utilisateur ajoute une nouvelle anomalie.

La fonction définie par l’utilisateur est appelée avec l’action SET de Bug_CanPost, avant qu'une nouvelle anomalie ne soit postée par l’utilisateur. Les valeurs des champs sont stockées.

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

La fonction est appelée avec l’action GET de la procédure de l’événement Bug_New. Lorsqu'un utilisateur ajoute une nouvelle anomalie, les valeurs enregistrées dans les champs pour cet utilisateur sont saisies dans ces champs.

Sub Bug_New()
        SW_KeepLastValue ("GET")
End Sub 

En fonction de l’action passée en paramètre, la fonction définie par l’utilisateur SW_KeepLastValue stocke les valeurs des champs dans la table des paramètres communs pour l’utilisateur actuel, ou lit les valeurs de l’objet Paramètres et affecte les valeurs aux champs appropriés.

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