Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

actualiser une liste déroulante de formulaire

3 réponses
Avatar
Gundt
bonsoir à tous,

J'ai un formulaire où l'utilisateur saisit par l'intermédiaire de 2
listes déroulantes un établissement et un client. Ces 2 contrôles sont
des contrôles de liste modifiable basées sur des requêtes sql.
Le dernier est le déroulant sur les clients. Si l'utilisateur revient
sur le déroulant établissement et qu'il change d'établissement, le
déroulant client affiche encore la première sélection (c'est-à-dire ceux
basés sur la première sélection).

Le 1er déroulant s'appelle : codetab et le second déroulant pour les
clients : CodeClient.

J'ai mis ceci sur réception focus du CodeClient :
Me!CodeClient.Dropdown
DoCmd.Requery "Forms![Choix_cli_fact_perso]![Codetab]"

J'ai l'erreur suivante :
erreur 2109 : Il n'y a pas de champ nommé
Forms![Choix_cli_fact_perso]![Codetab].

Je ne suis pas certain de l'avoir mis au bon endroit et ni sur le bon
contrôle.
D'autre part, le champ Codetab dans le formulaire existe bien (puisque
c'est le déroulant établissement).

Comment écrire la bonne syntaxe ?

Merci de votre aide.

Gundt

3 réponses

Avatar
Didier Bicking
Cette ligne :
DoCmd.Requery "Forms![Choix_cli_fact_perso]![Codetab]"

peut s'écrire plus simplement :
Forms![Choix_cli_fact_perso]![Codetab].Requery

Mieux encore : si tu es toujours dans le même formulaire, tu peux écrire :
Me!Codetab.Requery

Si tu veux que le champ client devienne vide lorsque tu as choisi un
établissement, écris dans "Après mise à jour" du controle Codetab :
Me!CodeClient.Requery
Me!CodeClient = Null

Si tu as une relation entre les établissements et les clients, tu peux
souhaiter qu'une fois choisi un établissement, la liste des clients ne
contienne que les clients de l'établissement choisi. Il faut alors, dans la
requête source des données du contrôle CodeClient, mettre le critère CodeTab
dans la colonne de l'établissement.

Ai-je répondu à tout ?


--
Bon courage

Didier Bicking

http://perso.wanadoo.fr/dbicking


"Gundt" a écrit dans le message de news:
4602f629$0$1276$
bonsoir à tous,

J'ai un formulaire où l'utilisateur saisit par l'intermédiaire de 2 listes
déroulantes un établissement et un client. Ces 2 contrôles sont des
contrôles de liste modifiable basées sur des requêtes sql.
Le dernier est le déroulant sur les clients. Si l'utilisateur revient sur
le déroulant établissement et qu'il change d'établissement, le déroulant
client affiche encore la première sélection (c'est-à-dire ceux basés sur
la première sélection).

Le 1er déroulant s'appelle : codetab et le second déroulant pour les
clients : CodeClient.

J'ai mis ceci sur réception focus du CodeClient :
Me!CodeClient.Dropdown
DoCmd.Requery "Forms![Choix_cli_fact_perso]![Codetab]"

J'ai l'erreur suivante :
erreur 2109 : Il n'y a pas de champ nommé
Forms![Choix_cli_fact_perso]![Codetab].

Je ne suis pas certain de l'avoir mis au bon endroit et ni sur le bon
contrôle.
D'autre part, le champ Codetab dans le formulaire existe bien (puisque
c'est le déroulant établissement).

Comment écrire la bonne syntaxe ?

Merci de votre aide.

Gundt


Avatar
Gundt
Bonjour à tous,

[...] Me!CodeClient.Requery
Me!CodeClient = Null

Si tu as une relation entre les établissements et les clients, tu peux
souhaiter qu'une fois choisi un établissement, la liste des clients ne
contienne que les clients de l'établissement choisi. Il faut alors, dans la
requête source des données du contrôle CodeClient, mettre le critère CodeTab
dans la colonne de l'établissement.
Ok, c'est fait.


Ai-je répondu à tout ?


Oui; c'est très bien. Cela marche : c'est formidable.

Mais un autre problème est apparu : le déroulant sur Codetab ne
fonctionne plus.

Sur Codetab, j'ai 2 procédures :

Private Sub Codetab_GotFocus()
Me!Codetab.Dropdown
Me!Codetab.Requery
End Sub

et l'autre :
Private Sub Codetab_AfterUpdate()
Me!CodeClient.Requery
Me!CodeClient = Null
End Sub

et ensuite, quand on arrive sur Codeclient :
Private Sub CodeClient_GotFocus()
Me!CodeClient.Dropdown
Me!Codetab.Requery
End Sub

Ai-je bien placé le code au bon endroit et pourquoi le déroulant
fonctionne encore sur CodeClient et pas sur Codetab ?

Un grand merci à Didier.

Gundt

Avatar
Gundt
bonjour à tous,

et ensuite, quand on arrive sur Codeclient :
Private Sub CodeClient_GotFocus()
Me!CodeClient.Dropdown
Me!Codetab.Requery
End Sub
J'ai inversé les 2 lignes Me! et ça marche.


Comment n'y ai-je pas pensé plus tôt ? :-(

Ai-je bien placé le code au bon endroit et pourquoi le déroulant
fonctionne encore sur CodeClient et pas sur Codetab ?

Un grand merci à Didier.


Gundt