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
Code:
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 :
1Est-ce correct ? Je ne veux pas en effet que les données d'un nouvel adhérent apparaissent dans ma T_nouvelle_données.Code:If Me.Dirty And Me.N°Adherent < DLast("[N°Adherent]", "[T Adhérents]") Then
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
n'est pas accepté (Erreur de compilation / Membre de méthode ou de données introuvable)Code:T_Anciennes_valeurs("Fax") = Me.Fax.OldValue
Il a fallu que je corrige en
pour que cela passe.Code:T_Anciennes_valeurs("Fax") = Me.Fax.Value
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