Bonjour à tous et à toutes,
J'ai une base pour gérer les adhérents d'une association.
J'utilise principalement un formulaire de saisie dans lequel j'ai un bouton "Sauvegarde" pour valider mes données.
Afin de garder un historique des différentes modifications effectuées, j'y ai associé (avec l'aide d'un certains nombre de contributeurs de ce site que je ne remercierai jamais assez) le code suivant
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| Private Sub Sauvegarde_Click()
' Dim stDocName As String
' On Error GoTo Err_Sauvegarde_Click
If Me.Dirty And Me.N°Adherent < DLast("[N°Adherent]", "[T Adhérents]") Then
'DoCmd.RunCommand acCmdSaveRecord
'Me.Refresh
'
'Sauvegarde anciennes valeurs
'
Dim T_Anciennes_valeurs As Recordset
Set T_Anciennes_valeurs = CurrentDb.OpenRecordset("T_Anciennes_valeurs", DB_OPEN_TABLE)
T_Anciennes_valeurs.AddNew
T_Anciennes_valeurs("N°Adherent") = Me.N°Adherent.OldValue
T_Anciennes_valeurs("Titre") = Me.Titre.OldValue
T_Anciennes_valeurs("NomAdherent") = Me.NomAdherent.OldValue
T_Anciennes_valeurs("PrenomAdherent") = Me.Prénom.OldValue
T_Anciennes_valeurs("Adherent") = Me.Adherent.OldValue
T_Anciennes_valeurs("DateAdhesion") = Me.DateAdhesion.OldValue
T_Anciennes_valeurs("TypeAdherent") = Me.TypeAdherent.OldValue
T_Anciennes_valeurs("Fonction") = Me.Fonction.OldValue
T_Anciennes_valeurs("Specialite") = Me.Spécialité.OldValue
T_Anciennes_valeurs("Origine") = Me.NomOrigine.OldValue
T_Anciennes_valeurs("DateOrigine") = Me.DateOrigine.OldValue
T_Anciennes_valeurs("DateNaissance") = Me.DateNaissance.OldValue
T_Anciennes_valeurs("DateRadiation") = Me.DateRadiation.OldValue
T_Anciennes_valeurs("MotifRadiation") = Me.MotifRadiation.OldValue
T_Anciennes_valeurs("DateDeces") = Me.DateDeces.OldValue
T_Anciennes_valeurs("Adresse") = Me.Adresse.OldValue
T_Anciennes_valeurs("Ville") = Me.NomVille.OldValue
T_Anciennes_valeurs("CP") = Me.CP.OldValue
T_Anciennes_valeurs("Region") = Me.Region.OldValue
T_Anciennes_valeurs("Pays") = Me.Pays.OldValue
T_Anciennes_valeurs("Telephone") = Me.Téléphone.OldValue
T_Anciennes_valeurs("Mobile") = Me.Mobile.OldValue
T_Anciennes_valeurs("EMail") = Me.EMail.OldValue
T_Anciennes_valeurs("Fax") = Me.Fax.Value
T_Anciennes_valeurs("Profession") = Me.Profession.OldValue
T_Anciennes_valeurs("Retraite") = Me.Retraite.OldValue
'T_Anciennes_valeurs("DerniereMAJ") = Me.DateMiseAJour.OldValue
T_Anciennes_valeurs("Divers") = Me.Divers.OldValue
T_Anciennes_valeurs("Chemin") = Me.Chemin.Value
T_Anciennes_valeurs("MiseAJour") = Now
T_Anciennes_valeurs.Update
T_Anciennes_valeurs.Close
'
'sauvegarde nouvelles valeurs
'
Dim T_Nouvelles_valeurs As Recordset
Set T_Nouvelles_valeurs = CurrentDb.OpenRecordset("T_Nouvelles_valeurs", DB_OPEN_TABLE)
T_Nouvelles_valeurs.AddNew
T_Nouvelles_valeurs("N°Adherent") = Me.N°Adherent
T_Nouvelles_valeurs("Titre") = Me.Titre
T_Nouvelles_valeurs("NomAdherent") = Me.NomAdherent
T_Nouvelles_valeurs("PrenomAdherent") = Me.Prénom
T_Nouvelles_valeurs("Adherent") = Me.Adherent
T_Nouvelles_valeurs("DateAdhesion") = Me.DateAdhesion
T_Nouvelles_valeurs("TypeAdherent") = Me.TypeAdherent
T_Nouvelles_valeurs("Fonction") = Me.Fonction
T_Nouvelles_valeurs("Specialite") = Me.Spécialité
T_Nouvelles_valeurs("Origine") = Me.NomOrigine
T_Nouvelles_valeurs("DateOrigine") = Me.DateOrigine
T_Nouvelles_valeurs("DateNaissance") = Me.DateNaissance
T_Nouvelles_valeurs("DateRadiation") = Me.DateRadiation
T_Nouvelles_valeurs("MotifRadiation") = Me.MotifRadiation
T_Nouvelles_valeurs("DateDeces") = Me.DateDeces
T_Nouvelles_valeurs("Adresse") = Me.Adresse
T_Nouvelles_valeurs("Ville") = Me.NomVille
T_Nouvelles_valeurs("CP") = Me.CP
T_Nouvelles_valeurs("Region") = Me.Region
T_Nouvelles_valeurs("Pays") = Me.Pays
T_Nouvelles_valeurs("Telephone") = Me.Téléphone
T_Nouvelles_valeurs("Mobile") = Me.Mobile
T_Nouvelles_valeurs("EMail") = Me.EMail
T_Nouvelles_valeurs("Fax") = Me.Fax
T_Nouvelles_valeurs("Profession") = Me.Profession
T_Nouvelles_valeurs("Retraite") = Me.Retraite
T_Nouvelles_valeurs("MiseAjour") = Now
T_Nouvelles_valeurs("Divers") = Me.Divers
T_Nouvelles_valeurs("Chemin") = Me.Chemin
'T_Nouvelles_valeurs("DerniereMAJ") = Me.DateMiseAJour.OldValue
T_Nouvelles_valeurs.Update
T_Nouvelles_valeurs.Close
Me.DateMiseAJour = Now
Dim Ctl As Control
For Each Ctl In Me.Détail.Controls
If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or (Ctl.ControlType = acCheckBox) Then
Ctl.Locked = True
End If
Next Ctl
Else
For Each Ctl In Me.Détail.Controls
If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or (Ctl.ControlType = acCheckBox) Then
Ctl.Locked = True
End If
Next Ctl
Exit_Sauvegarde_Click:
Exit Sub
End If
Err_Sauvegarde_Click:
MsgBox Err.Description
' Resume Exit_Sauvegarde_Click
End Sub |
J'ai observé quelques anomalies :
1
If Me.Dirty And Me.N°Adherent < DLast("[N°Adherent]", "[T Adhérents]") Then
Est-ce correct ? Je ne veux pas en effet que les données d'un nouvel adhérent apparaissent dans ma T_nouvelle_données.
2 j'ai rajouté 2 champs (fax et Chemin) dans la procédure car je les avaient oubliés lors de la création de cette procédure.
Or par exemple
T_Anciennes_valeurs("Fax") = Me.Fax.OldValue
n'est pas accepté (Erreur de compilation / Membre de méthode ou de données introuvable)
Il a fallu que je corrige en
T_Anciennes_valeurs("Fax") = Me.Fax.Value
pour que cela passe.
Est-ce équivalent
3 Enfin et surtout quand je valide, un popup access "vide" apparait (voir PJ)
Je fais Ok.
Mes données apparaissent bien dans mes 2 tables (anciennes et nouvelles valeurs).
Cela risque fort de perturber l'utilisateur quotidien de cette base (le trésorier).
Si l'on peut m'aider pour régler ces petits problèmes, cela m'arrangerait.
Merci de votre aide
A+
C15nantes
Partager