Tracer changement données
Résolu
platypus69
Messages postés
108
Date d'inscription
Statut
Membre
Dernière intervention
-
tessel75 -
tessel75 -
Bonjour,
je suis en train de créer un traceur sous ACCESS 2007, pour garder un historique des modifications faite par l'utilisateur. tous fonctionne bien sauf pour certaines valeurs. Si la valeur du champs était vide avant de rentrer une valeur pas d'ajout a la table historique et inversement, si l'utilisateur supprime la donnée, pas de traçage.
Ci-joint dessous le programme de traçage.
je suis en train de créer un traceur sous ACCESS 2007, pour garder un historique des modifications faite par l'utilisateur. tous fonctionne bien sauf pour certaines valeurs. Si la valeur du champs était vide avant de rentrer une valeur pas d'ajout a la table historique et inversement, si l'utilisateur supprime la donnée, pas de traçage.
Ci-joint dessous le programme de traçage.
Private Sub Form_BeforeUpdate(Cancel As Integer) Call Donnee_compte 'appel la fonction pour les info users DoCmd.SetWarnings False ' désactive message d'alerte 'déclaration des variables Dim sql As String Dim i As Long 'boucle pour balayer le NB de controleurs For i = 0 To Me.Controls.Count - 1 If Me.Controls(i).ControlType = 106 Or Me.Controls(i).ControlType = 109 Or Me.Controls(i).ControlType = 111 Then If Me.Controls(i).Value <> Me.Controls(i).OldValue Then 'si valeur différente 'MsgBox Me.Controls(i).ControlSource & "/" & Me.Controls(i).Name & "/" & Me.Controls(i).Value & "/" & Me.Controls(i).OldValue & "/" & Me.Controls("txt_ID_client_site").Value 'MsgBox IsNull(Me.Controls(i).Value) sql = "INSERT INTO T4_historique (id_enrg, nom_champ, old_value, new_value, date_heure, trigramme)" sql = sql + " VALUES (" & Me.Controls("txt_ID_client_site").Value & ", '" & Me.Controls(i).ControlSource & "', '" & Me.Controls(i).OldValue & "', '" & Me.Controls(i).Value & "', #" & Now & "#, '" & recUser.Fields(2) & "');" DoCmd.RunSQL sql 'execute la commande SQL End If End If Next DoCmd.SetWarnings True 'active message d'alerte Set recUser = Nothing 'cloture requete End Sub
A voir également:
- Tracer changement données
- Fuite données maif - Guide
- Changement dns - Guide
- Supprimer les données de navigation - Guide
- Trier des données excel - Guide
- Changement d'heure - Guide
2 réponses
J'ai trouvé la solution, il suffit de faire un IIF
If IIf(IsNull(Me.Controls(i).Value), "", Me.Controls(i).Value) <> IIf(IsNull(Me.Controls(i).OldValue), "", Me.Controls(i).OldValue) Then
Bonsoir,
Chacun fait comme il veut..., mais il me semble qu'il existe suffisamment de propriétés-évènements dans les formulaires pour trouver de quoi satisfaire ce qu'on cherche.
Ta méthode me parait bien compliquée pour pas grand-chose. Mais au point où tu en est je te proposerais un truc du genre:.
Après Mise à jour, ou sur Sortie, ==> If (Champ_A.OldValue & Champ_B.OldValue & etc.OldValue <> Champ_A.CurrentValue & Champ_B.CurrentValue & etc.CurrentValue ) then EnregistrementModification.
Autrement dit, si concaténation des anciennes valeurs des champs <> concaténation des nouvelles valeurs alors enregistrement. Il suffit qu'une seule valeur soit modifiée pour que la concaténation soit également modifiée.
Mais en principe avec "Sur MàJ" devrait suffire.
Bonne suite
Chacun fait comme il veut..., mais il me semble qu'il existe suffisamment de propriétés-évènements dans les formulaires pour trouver de quoi satisfaire ce qu'on cherche.
Ta méthode me parait bien compliquée pour pas grand-chose. Mais au point où tu en est je te proposerais un truc du genre:.
Après Mise à jour, ou sur Sortie, ==> If (Champ_A.OldValue & Champ_B.OldValue & etc.OldValue <> Champ_A.CurrentValue & Champ_B.CurrentValue & etc.CurrentValue ) then EnregistrementModification.
Autrement dit, si concaténation des anciennes valeurs des champs <> concaténation des nouvelles valeurs alors enregistrement. Il suffit qu'une seule valeur soit modifiée pour que la concaténation soit également modifiée.
Mais en principe avec "Sur MàJ" devrait suffire.
Bonne suite