Comprendre le bitcoin, l'intelligence artificielle, faire un site web... En 3 minutes en vidéo!

Dans MS-Access - Module Audit Trail - comment le modifier pour un sous-formulaire ?

Forum informatique > Aide logiciels bureautique & jeux > Dans MS-Access - Module Audit Trail - comment le modifier pour un sous-formulaire ?

<<<1>>>

[Page 1 sur 1 - 1 message]
Informations Messages

Joh422

Avatar de Joh422
3 messages
Neurone isolé
Neurone isolé

Lien direct Le 10 Juin 2008 à 12h51

Bonjour,

Il y a un module Access 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

 

Publicité

<<<1>>>

[Page 1 sur 1 - 1 message]

Forum informatique > Aide logiciels bureautique & jeux > Dans MS-Access - Module Audit Trail - comment le modifier pour un sous-formulaire ?