Procédure ne fonctionnant plus (ouverture de tables)
Bonjour à tous et à toutes,
Dans un formulaire gérant des adhérents d'une association, j'ai mis en place, avec l'aide de certains contributeurs de ce site, une procédure pour stocker, dans 2 tables différentes, certaines anciennes et nouvelles valeurs de l'enregistrement en cours.
Le but est d'avoir un historique pour documenter un annuaire "des modifications de coordonnées" diffusé aux adhérents.
La procédure suivante ne fonctionne plus.
Il semblerait, et je l'écris avec les réserves d'usage, que c'est depuis que je suis passé de Access 2003 à Access 2007 (problème de références ?)
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 127 128 129 130 131 132 133 134
| Private Sub Sauvegarde_Click()
If Me.NewRecord Then
MsgBox "S'il s'agit d'un nouvel adhérent, changer d'enregistrement par roulette souris ou le navigateur en bas à gauche" & Chr(13) & "et revenez sur la fiche du nouveau avant d'ouvrir le formulaire de ses cotisations", vbOKOnly
Exit Sub
End If
If IsNull(Me.DateRadiation) Then
'
'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("Fax") = Me.Fax.OldValue
T_Anciennes_valeurs("EMail") = Me.EMail.OldValue
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("MiseAJour") = Now
T_Anciennes_valeurs("Chemin") = Me.Chemin
T_Anciennes_valeurs("MasquerDonnees") = Me.Masquer_Données
T_Anciennes_valeurs.Update
'
'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("Fax") = Me.Fax
T_Nouvelles_valeurs("EMail") = Me.EMail
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("MasquerDonnees") = Me.Masquer_Données
T_Nouvelles_valeurs.Update
End If
'
' test suppression enregistrement si coordonnées n'ont pas changé
'
If Me.Adresse.OldValue = Me.Adresse And Me.Fax.OldValue = Me.Fax And Me.NomVille.OldValue = Me.NomVille And Me.Téléphone.OldValue = Me.Téléphone _
And Me.Mobile.OldValue = Me.Mobile And Me.EMail.OldValue = Me.EMail And Me.Masquer_Données.OldValue = Me.Masquer_Données Then
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM T_Anciennes_valeurs WHERE MiseAJour=DMax('MiseAJour', 'T_Anciennes_valeurs')"
DoCmd.RunSQL "DELETE * FROM T_Nouvelles_valeurs WHERE MiseAJour=DMax('MiseAJour', 'T_Nouvelles_valeurs')"
MsgBox "Ces modifications ne seront pas enregistrées dans les tables T_Anciennes_valeurs et T_Nouvelles_valeurs", vbOKOnly
End If
T_Anciennes_valeurs.Close
T_Nouvelles_valeurs.Close
DoCmd.SetWarnings True
If Me.Dirty Then
Me.Dirty = False
End If
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
Exit_Sauvegarde_Click:
Exit Sub
Err_Sauvegarde_Click:
MsgBox Err.Description
End Sub |
Le débogeur bloque sur la ligne
Code:
Set T_Anciennes_valeurs = CurrentDb.OpenRecordset("T_Anciennes_valeurs", DB_OPEN_TABLE)
Si je fais "Fin" à la boite de dialogue du débogueur, les modifs sont bien enregistrées mais les anciennes et nouvelles valeurs n'apparaissent pas dans les tables concernées.
Merci de votre aide.
A+
c15