OVH Cloud OVH Cloud

choix dans liste déroulante

7 réponses
Avatar
débutante caro
bonjour...

je suis une vrai débutante, alors pardonnez cette question...

J'ai une table "commande" et une autre table "clients".

Dans mon formulaire de commande, j'ai une liste déroulante avec les clients.
J'aimerais que lors de la sélection d'un nom dans la liste, toutes les infos
relatives à ce client (no de tel, cell, fax, etc) s'inscrivent
automatiquement dans les champs vides de mon formulaires, infos qui sont déjà
dans la table clients.

Merci de m'aider, car ceci pourra s'appliquer à plusieurs autres sélections
que je dois faire dans le même formulaire (choisir numéro de site et obtenir
automatiquement les infos provenant d'une table site - adresse, code postal,
etc.)

J'ai tenté plusieurs choses, mais sans succès...

7 réponses

Avatar
Tisane
Bonjour caro,

je suis une vrai débutante, alors pardonnez cette question...
Ne t'excuse pas. Le forum est fait pour aider tout le monde ;-)


J'ai une table "commande" et une autre table "clients".
Dans mon formulaire de commande, j'ai une liste déroulante avec les
clients. J'aimerais que lors de la sélection d'un nom dans la liste,
toutes les infos relatives à ce client (no de tel, cell, fax, etc)
s'inscrivent automatiquement dans les champs vides de mon
formulaires, infos qui sont déjà dans la table clients.
[...]


Il y a un moyen simple... sans programmation...
Il permettra d'afficher (mais pas de modifier) les données souhaitées.
- dans la source de ta liste déroulante "Clients", ajoute tous les champs
dont tu as besoin (tel, cell, fax,...)
- mets la largeur de leur colonne à 0cm afin de ne pas les voir quand on
déroule la liste
- crée autant de zones de texte indépendantes que tu as de champs à afficher

En supposant que la 1re colonne de la liste soit le code client (clé), la 2e
le nom du client, la 3e le téléphone, la 4e le cellulaire, etc. :
- dans la propriété "Source contrôle" de la zone de texte qui contiendra le
téléphone, tape simplement :
=Nom_de_ta_Liste.column(2)
(Access compte les colonnes de ta liste à partir de 0).
- sur celle du cellulaire : =Nom_de_ta_Liste.column(3)
- etc.

Pour l'ergonomie (ce n'est qu'un conseil), tu peux mettre les propriétés
Activé "Non" et Verrouillé "Oui" de toutes ces zones de texte et choisir
"Ciselé" dans la propriété Apparence.
Les utilisateurs comprendront tout de suite qu'il ne s'agit que d'affichage
et ne pourront pas modifier ces données.

--
Tisane

Avatar
Eric
Bonjour Tisane,

J'utilise une autre méthode pour faire cela. Mais je ne sais pas si elle
est performante.
Je construis une requête sur les tables commande et client en prenant,
entre autres, le numclient (clé étrangère) de la table commande et les
champs nomclient, adresse, ... , tel, ... dans la table client. Cette
requête servira de source au formulaire.
Dans le formulaire, je transforme la zone de texte NumClient en zone de
liste modifiable avec 2 colonnes (NumClient, NomClient) avec pour source
une requête basée sur la table client. Les autres champs concernant le
client dans le formulaire sont verrouillés et non activés.
(Je fais de même pour les lignes de commande avec la table Article, côté
sous-formulaire)

D'où ma question : côté Performance, laquelle des 2 méthodes est à
privilégier ?

[...]

Il y a un moyen simple... sans programmation...
Il permettra d'afficher (mais pas de modifier) les données souhaitées.
- dans la source de ta liste déroulante "Clients", ajoute tous les
champs dont tu as besoin (tel, cell, fax,...)
- mets la largeur de leur colonne à 0cm afin de ne pas les voir quand on
déroule la liste
- crée autant de zones de texte indépendantes que tu as de champs à
afficher

En supposant que la 1re colonne de la liste soit le code client (clé),
la 2e le nom du client, la 3e le téléphone, la 4e le cellulaire, etc. :
- dans la propriété "Source contrôle" de la zone de texte qui contiendra
le téléphone, tape simplement :
=Nom_de_ta_Liste.column(2)
(Access compte les colonnes de ta liste à partir de 0).
- sur celle du cellulaire : =Nom_de_ta_Liste.column(3)
- etc.

Pour l'ergonomie (ce n'est qu'un conseil), tu peux mettre les propriétés
Activé "Non" et Verrouillé "Oui" de toutes ces zones de texte et choisir
"Ciselé" dans la propriété Apparence.
Les utilisateurs comprendront tout de suite qu'il ne s'agit que
d'affichage et ne pourront pas modifier ces données.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Tisane
Bonjour Eric,

J'utilise une autre méthode pour faire cela. Mais je ne sais pas si
elle est performante.
Je construis une requête sur les tables commande et client en prenant,
entre autres, le numclient (clé étrangère) de la table commande et les
champs nomclient, adresse, ... , tel, ... dans la table client. Cette
requête servira de source au formulaire.
Dans le formulaire, je transforme la zone de texte NumClient en zone
de liste modifiable avec 2 colonnes (NumClient, NomClient) avec pour
source une requête basée sur la table client. Les autres champs
concernant le client dans le formulaire sont verrouillés et non
activés. (Je fais de même pour les lignes de commande avec la table
Article, côté sous-formulaire)
D'où ma question : côté Performance, laquelle des 2 méthodes est à
privilégier ?


Ta suggestion est finalement plus simple (elle nous évite de compter les
colonnes) et peut-être plus performante (elle évite aussi à Access de...
compter les colonnes ;-)
Il est vrai que je reprends rarement l'intégralité des données d'un client
en affichage, dans un formulaire de commandes (généralement le nom et la
ville), pour ne pas surcharger l'écran.
Je privilégie la création de boutons de navigation qui permettent d'accéder
par exemple au formulaire complet du client.

--
Tisane/Caféine ;-)


Il y a un moyen simple... sans programmation...
Il permettra d'afficher (mais pas de modifier) les données
souhaitées. - dans la source de ta liste déroulante "Clients",
ajoute tous les champs dont tu as besoin (tel, cell, fax,...)
- mets la largeur de leur colonne à 0cm afin de ne pas les voir
quand on déroule la liste
- crée autant de zones de texte indépendantes que tu as de champs à
afficher

En supposant que la 1re colonne de la liste soit le code client
(clé), la 2e le nom du client, la 3e le téléphone, la 4e le
cellulaire, etc. : - dans la propriété "Source contrôle" de la zone
de texte qui contiendra le téléphone, tape simplement :
=Nom_de_ta_Liste.column(2)
(Access compte les colonnes de ta liste à partir de 0).
- sur celle du cellulaire : =Nom_de_ta_Liste.column(3)
- etc.

Pour l'ergonomie (ce n'est qu'un conseil), tu peux mettre les
propriétés Activé "Non" et Verrouillé "Oui" de toutes ces zones de
texte et choisir "Ciselé" dans la propriété Apparence.
Les utilisateurs comprendront tout de suite qu'il ne s'agit que
d'affichage et ne pourront pas modifier ces données.



--
Tisane


Avatar
Eric
re,

J'espère que l'un des 2 Pierre, ou Jessy voire Raymond s'il est par là,
nous indiqueront quelle est la méthode la plus performante.
J'ai vu des bases tourner avec la méthode que tu indiques mais je me
suis toujours posé la question. Aussi je profitais du fil ;-)

Bonjour Eric,
Ta suggestion est finalement plus simple (elle nous évite de compter les
colonnes) et peut-être plus performante (elle évite aussi à Access
de... compter les colonnes ;-)
[...]


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Pierre CFI [mvp]
bonjour
ah, le calcul des perfs d'une base access ! vaste débat, surtout qu'en général on scinde la base (meme en mono poste)
çà dépend du pc et du réseau pour une grande part
personnellement, je fais comme Tisane, moins j'ai de choses à l'écran, plus c'est plus mieux
sur excel, itou, je préfére plus de feuilles et moins de données, que des tableaux de 100 colonnes et 10 000 lignes
Il me semble que c'est notre petit (???) anor qui faisait des chronos, mais quelques centiémes de secondes.... à l'age de
pierrot-la-gueuse-et-frites :o)))

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"Eric" a écrit dans le message de news: %
re,

J'espère que l'un des 2 Pierre, ou Jessy voire Raymond s'il est par là, nous indiqueront quelle est la méthode la plus
performante.
J'ai vu des bases tourner avec la méthode que tu indiques mais je me suis toujours posé la question. Aussi je profitais du fil ;-)

Bonjour Eric,
Ta suggestion est finalement plus simple (elle nous évite de compter les colonnes) et peut-être plus performante (elle évite
aussi à Access de... compter les colonnes ;-) [...]


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonjour Pierre,

Moi de même je ne reprends pas toutes les infos du client (dans ce cas
de figure) mais je me demandais si c'était un non-sens que de faire le
genre de manip que je propose par rapport à une liste ayant autant de
colonnes que nécessaire et des champs indépendants de formulaire pour
lesquels la source serait une des colonnes de la zone de liste car dans
les 2 cas le nombre de champs affichés dans le formulaire est le même,
seules leurs sources de données sont différentes.
(PS:Le terme performance n'était peut-être pas adapté.)

bonjour
ah, le calcul des perfs d'une base access ! vaste débat, surtout qu'en général on scinde la base (meme en mono poste)
çà dépend du pc et du réseau pour une grande part
personnellement, je fais comme Tisane, moins j'ai de choses à l'écran, plus c'est plus mieux
sur excel, itou, je préfére plus de feuilles et moins de données, que des tableaux de 100 colonnes et 10 000 lignes
Il me semble que c'est notre petit (???) anor qui faisait des chronos, mais quelques centiémes de secondes.... à l'age de
pierrot-la-gueuse-et-frites :o)))



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Pierre CFI [mvp]
../..
au fond la bonne solution est celle qui fonctionne, qui donne satisfaction et facilement modifiable plusieurs années aprés :o)

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"Eric" a écrit dans le message de news: %
Bonjour Pierre,

Moi de même je ne reprends pas toutes les infos du client (dans ce cas de figure) mais je me demandais si c'était un non-sens que
de faire le genre de manip que je propose par rapport à une liste ayant autant de colonnes que nécessaire et des champs
indépendants de formulaire pour lesquels la source serait une des colonnes de la zone de liste car dans les 2 cas le nombre de
champs affichés dans le formulaire est le même, seules leurs sources de données sont différentes.
(PS:Le terme performance n'était peut-être pas adapté.)

bonjour
ah, le calcul des perfs d'une base access ! vaste débat, surtout qu'en général on scinde la base (meme en mono poste)
çà dépend du pc et du réseau pour une grande part
personnellement, je fais comme Tisane, moins j'ai de choses à l'écran, plus c'est plus mieux
sur excel, itou, je préfére plus de feuilles et moins de données, que des tableaux de 100 colonnes et 10 000 lignes
Il me semble que c'est notre petit (???) anor qui faisait des chronos, mais quelques centiémes de secondes.... à l'age de
pierrot-la-gueuse-et-frites :o)))



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr