Rafraichir un champs après modif d'un autre

Céline -  
 JefEnSuz -
Salut,
Je suis actuellement entrain de créer une base de données Access. Je solicite votre aide pour mon petit problème.

Je voudrais mettre automatique à jour un champ de contacts associé à une société si le texte du champs de société change.

J'attends avec impatience votre réponse. Merci a tous.

6 réponses

JefEnSuz
 
bonjour,

je gère cela en VBA. Exemple :

j'ai une table de sociétés appelée sociétés (avec un champ d'identification et un pour le nom).

Et une table de contacts appelée contacts (avec un champ d'identification, un champ pour faire le lien avec la table de sociétés et un pour le nom du contact).

Dans un formulaire, je place 2 zones de liste déroulante, 1 pour les sociétés (lstSocietes) et 1 pour les contacts (lstContacts).

Je charge dans lstSociétés la liste des sociétés (origine source = table/requête, contenu = sociétés, colonne liée = 1)

J'associe à l'évènement 'Après MAJ' de ce contrôle le code suivant :

'début du code---------------
dim strSQL as string

'je prends comme habitude de mettre à false par défaut la valeur
'des zones de liste. Je déteste gérer le vbNull
if (me.lstSocietes) = false then
exit sub
endif

strSQL = "SELECT contacts.id, contacts.nom FROM contacts WHERE (((contacts.societe)=" + str(me.lstSocietes)+")) ORDER BY contacts.nom;"

me.lstContacts.RowSource = strSQL
me.lstContacts.setFocus
'fin du code---------------

ainsi, dès que je change de société, la liste des contacts associée est disponible dans le second champ.

Ne pas oublier de paramétrer la propriété colonne liée de lstContacts à 1 pour récupérer le numéro identifiant du contact.

Tchus,
0
Céline
 
JE te remercie poue la réponse. Je vias teste ca tout de suite.
0
Julaie
 
Bonjour,

Je cherche à faire un truc du même style sauf que ma liste déroulant est le resultat d'une requete utilisant l identifiant present dans le meme formulaire que ma liste. Mon problème c'est que je n arrive pas à ce que ma liste soit regénérer à chaque fois que je change de valeur d'identifiant (par navigation dans mon formulaire) merci d avance.

Julaie.
0
JefEnSuz
 
Normalement, le passage d'un enregistrement à un autre met à jour les infos dans un formulaire dont la rowsource = une table.

Sinon, à mon avis, il faut faire un liste.requery pour rafraichir la liste en question
0
Céline
 
Salut,

J'ai rentré le code que tu m'as donner en remplacent les noms de tables et les noms de champs par ce que j'utilise dans ma base de donnée.

Losque que je souhaites changer le champs contact, la fenetre du code s'ouvre en idiquant une erreur sur le code 'AfficheFenêtreBaseDeDonnées_Click()'. Qu'est ce que cela peut signifier?

Merci de votre réponse.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Céline
 
Salut,

J'ai réussi a faire ce que je voulais mais j'ai encore un petit problème sur ce sujet.

Car cela marche tres bien sur le premier enregistrement, mais pas dans les suivants. Le champs nom reste identique pour tout les enregistrement a celui du premier. J'ai beau changer le champs société, rien ne se passe sur le champs nom.

J'attend une réponse rapide, STP, je desespere.

Céline
0
JefEnSuz
 
Pour le passage d'un enregistrement à un autre (dans un formulaire avec table liée), normalement, tout devrait se mettre à jour automatiquement.

Si ce n'est pas le cas, pour forcer la mise à jour des contacts, place l'appel de la procédure après mise à jour sociétés (sociétés_AfterUpdate ?) dans la procédure Form_Open.
0