Bonjour à tous,
J'arrive au bout de la conception de ma base de données pour laquelle j'ai mis en place un suivi des modifications (audit trail) sur chacun des mes formulaires. J'ai pu mettre en place cet audit trail grâce au code suivant :
Le problème est que ce code ne me renvoi que les modifications ou les ajouts qui ont lieu sur le formulaire actif (Screen.ActiveForm.Controls dans le code) et pas dans les sous-formulaires du formulaire principal. Existe-t-il une syntaxe du genre "Screen.ActiveSubForm.Controls" qui me permettent de modifier mon code afin d'avoir l'audit trail pour tous les sous-formulaires de mon formulaire principal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 Sub AuditChanges(IDField As String, UserAction As String) On Error GoTo AuditChanges_Err Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim ctl As Control Dim datTimeCheck As Date Dim strUserID As String Set cnn = CurrentProject.Connection Set rst = New ADODB.Recordset rst.Open "SELECT * FROM tblAuditTrail", cnn, adOpenDynamic, adLockOptimistic datTimeCheck = Now() strUserID = Environ("USERNAME") Select Case UserAction Case "EDIT" For Each ctl In Screen.ActiveForm.Controls If ctl.Tag = "Audit" Then If Nz(ctl.Value) <> Nz(ctl.OldValue) Then With rst .AddNew ![DateTime] = datTimeCheck ![UserName] = strUserID ![FormName] = Screen.ActiveForm.Name ![Action] = UserAction ![RecordID] = Screen.ActiveForm.Controls(IDField).Value ![FieldName] = ctl.ControlSource ![OldValue] = ctl.OldValue ![NewValue] = ctl.Value .Update End With End If End If Next ctl Case Else With rst .AddNew ![DateTime] = datTimeCheck ![UserName] = strUserID ![FormName] = Screen.ActiveForm.Name ![Action] = UserAction ![RecordID] = Screen.ActiveForm.Controls(IDField).Value .Update End With End Select AuditChanges_Exit: On Error Resume Next rst.Close cnn.Close Set rst = Nothing Set cnn = Nothing Exit Sub AuditChanges_Err: MsgBox Err.Description, vbCritical, "ERROR!" Resume AuditChanges_Exit End Sub
Merci beaucoup,
Tagada_or
Partager