Bonjour.
La bonne solution : Ne pas le faire.
Quelque chose du type :
tblQuestionnaire
ClefQuestionnaire
IdentifiantPersonne
Autres infos relatives au questionnaire (ex : Date de reponse)
tblQuestionnaireDetai01
tblQuestionaireDetai01
tblQuestionnaire
Autres infos
En relation avec tblQuestionnaire sur ClefQuestionnaire
tblQuestionnaireDetai02
tblQuestionaireDetai01
tblQuestionnaire
Autres infos
En relation avec tblQuestionnaire sur ClefQuestionnaire
En centralisant ton info commune dans tblQuestionaire tu evites le probleme.
Pour ton fomrulaire de saisie tu crees un formulaire principal base sur tblQuestionnaier et des sous-formulaires bases sur chacune de tes tables (tu peux reutuiliser ceux que tu as deja).
Bon sinon tu peux faire un peu de code VBA
quelque chose comme :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public sub ChangerPersonne(prmNomTableSource as string, prmAncienIndentifiant as long, prmNouvelIdentifiant as long)
dim db as dao.database:set db=currentdb
dim listeNomTable as variant: listeNomTable=array("Table1", "Table2", "Table3") 'Liste des tables a mettre a jour.
dim r as dao.recordset
dim critere as string
dim nomTable as variant: for each nomTable in listeNomTable
if nomTable <> prmNomTableSource then
crietere="[IdentifiantPersonne]=" & prmAncienIndentifiant
set r=db.openrecorset(nomTable, dbOpenDynaset)
call r.findFisrt(critere)
do while not r.nomatch
r.edit
r![IdentifiantPersonne]=prmNouvelIdentifiant
r.update
loop
r.close: set r=nothing
end if
next nomTable
db.close:set db=nothing
end sub |
Le pont delicat va etre de recuperer la valeur d'origine.
Je pense qu'il faut le faire sur Avant Mise a jour en recuperant .value pour la valeur d'origine en la stockant dans une variable de module.
Bref c'est assez coplique pour pas grand chose.
A+
A+
Partager