Bienvenue invité ( Connexion | Inscription )
![]() ![]() |
09-06-2008 - 21:10
Message
#1
|
|
|
Membre Groupe : Membres Messages : 7 Inscrit : 20-03-2007 Membre n° 11 467 |
Bonjour,
Il y a un module sur le site de Microsoft, mais j'aimerais l'adapter à mes besoins. Il sert à compiler les modifications qui sont effectués dans un formulaire, concernant un enregistrement précis. (Soit l'enregistrement qui est modifié dans le formulaire actif). Ça fonctionne très bien si je l'applique à un formulaire. Je dois mettre le nom du code "Avant MAJ" du formulaire et avoir créer le champ dans la table et le formulaire. Mais dans mon cas, je voudrais pouvoir appliquer ce module aux modifications d'un SOUS-Formulaire. Mais ça ne fonctionne pas. Comment puis-je modifier le code pour qu'il fonctionne dans un sous-formulaire ?? Voici le code: Option Compare Database Option Explicit Public Function Audit_Trail() On Error GoTo Err_Audit_Trail 'ACC2000: How to Create an Audit Trail of Record Changes in a Form 'http://support.microsoft.com/default.aspx?scid=kb;en-us;197592 Dim MyForm As Form Dim ctl As Control Dim sUser As String Set MyForm = Screen.ActiveForm ' sUser = "User: " & UsersID 'You need to identify your users if you are not using Access security with workgroups. sUser = CurrentUser 'If new record, record it in audit trail and exit function. If MyForm.NewRecord = True Then MyForm!AuditTrail = MyForm!tbAuditTrail & "Nouvel Enregistrement ajouté le " & Now & ";" Exit Function End If 'Set date and current user if the form (current record) has been modified. MyForm!AuditTrail = MyForm!tbAuditTrail & vbCrLf & vbLf & "Changement fait le " & Now & ";" 'Check each data entry control for change and record old value of the control. For Each ctl In MyForm.Controls 'Only check data entry type controls. Select Case ctl.ControlType Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox If ctl.Name = "tbAuditTrail" Then GoTo TryNextControl 'Skip AuditTrail field. If ctl.Name = "DateModification" Then GoTo TryNextControl 'Skip DateModification field. 'If new and old value do not equal If ctl.Value <> ctl.OldValue Then MyForm!AuditTrail = MyForm!tbAuditTrail & vbCrLf & ctl.Name & ": Changé de: " & ctl.OldValue & ", à: " & ctl.Value 'If old value is Null and new value is not Null ElseIf IsNull(ctl.OldValue) And Len(ctl.Value) > 0 Or ctl.OldValue = "" And Len(ctl.Value) > 0 Then MyForm!AuditTrail = MyForm!tbAuditTrail & vbCrLf & ctl.Name & ": Le champ était vide, changé pour: " & ctl.Value 'If new value is Null and old value is not Null ElseIf IsNull(ctl.Value) And Len(ctl.OldValue) > 0 Or ctl.Value = "" And Len(ctl.OldValue) > 0 Then MyForm!AuditTrail = MyForm!tbAuditTrail & vbCrLf & ctl.Name & ": L'information était: " & ctl.OldValue & ", a été effacé" End If End Select TryNextControl: Next ctl Exit_Audit_Trail: Exit Function Err_Audit_Trail: If Err.Number = 64535 Then 'Operation is not supported for this type of object. Exit Function ElseIf Err.Number = 2475 Then 'You entered an expression that requires a form to be the active window Beep MsgBox "A form is required to be the active window!", vbCritical, "Invalid Active Window" Else Beep MsgBox Err.Number & " - " & Err.Description End If Resume Exit_Audit_Trail End Function -------------------- Johanne :o)
|
|
|
|
![]() ![]() |
|
Version bas débit | Nous sommes le : 03-12-2008 - 4:12 |