Bonsoir,
Juste avant le WE... J'espère que quelqu'un pourra m'aider
Voilà le problème, en synthèse :
tblClients
- CodeClient
- RaisonSociale
- Autres...
Un formulaire frmGestionClients, dans lequel l'enregistrement en cours est sélectionné grâce à une liste déroulante (lstRaisonSociale) affichant la RaisonSociale, et retournant le CodeClient. En fonction du contenu de cette liste, le reste du formulaire se met à jour (adresse, téléphone, etc...).
Un bouton cmdNouveauClient ouvre un formulaire frmNouveauClient, sur un nouvel enregistrement, pour créer un nouveau client. Si toutes les informations sont conformes, un bouton Valider enregistre le nouveau client dans tblClients.
Jusque là tout va bien.
A la fermeture de frmNouveauClient, il y a quelque chose du genre
Forms("frmGestionClients").Controls("lstRaisonSociale").Requery
pour que la liste déroulante affiche le nouveau client qui vient d'être créé.
Le problème, c'est que si on le sélectionne dans la liste, les informations "Autres" ne se mettent pas à jour (adresse, etc...)... Ils prennent la valeur qui est la valeur par "défaut" lors de l'ouverture du formulaire (avant tout choix dans la liste déroulante), i.e les valeurs correspondant au premier enregistrement. J'ai essayé un
Forms("frmGestionClients").Requery ou .Refresh
et ça remet aussi toutes les valeurs à celle du premier enregistrement.
Si je ferme le formulaire et que j'y reviens, tout marche bien.
J'ai le problème pour plusieurs formulaires du même type. J'ai résolu ce problème une fois en enregistrant le numero d'enregistrement du RecordSet avant l'ouverture de frmNouveauClient, ensuite en faisant un Requery sur le formulaire et en lui disant de retourner à ce numero d'enregistrement... Variable globale, etc... Je ne trouve pas ça élégant du tout.
Quelqu'un connaît-il un moyen simple de résoudre ce problème ?
Merci et bon WE
Partager