Comment gérer 2 variables dans une liste déroulante ?

polop Messages postés 9 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 24 juin 2006 - 4 juin 2002 à 14:40
txetxen Messages postés 2 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 25 août 2005 - 25 août 2005 à 10:19
bonjour,

j'aimerai gérer une liste déroulante :
- la remplir à partir d'une table
- la remplir de libellé
- avoir en sortie, la valeur d'un autre champ que celui listé

en access on gère cela très facilement avec une 'zone de liste'.

merci d'avance.

8 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
4 juin 2002 à 19:46
Il faut utiliser le TDBLookupComboBox.

Il permet d'afficher dans la liste une ou plusieurs colonnes d'une table afin de sélectionner une valeur. Cette valeur ne faisant pas forcément partie des colonnes affichées.

TDBLookupComboBox.ListSource contient la source de données permettant le remplissage de la liste.
TDBLookupComboBox.KeyField contient le nom du champ dont la valeur doit être gardée dans la base.
TDBLookupComboBox.ListField contient le(s) nom(s) du(des) champ(s) affiché(s).

--- :sleepy) Nono du Moulin :sleepy) ---
0
polop Messages postés 9 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 24 juin 2006
5 juin 2002 à 09:01
Merci pour la réponse, mais je n'arrive pas à récupérer la valeur voulu (celle qui n'est pas listée) après une sélection dans la liste !

A+
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
5 juin 2002 à 21:50
Ce que je n'ai pas précisé, c'est que le composant doit être utilisé avec un base de donnée. Il permet de remplir le champ d'une base par l'une des valeur d'une colonne d'une autre base. On ne peut pas récupérer la valeur autrement.

Par exemple si on doit remplir le champ "Valeur" de la base "T1.DB" avec l'une des valeur de la colonne "N" de la base "T2.DB" en affichant la colonne "Texte" de "T2.DB" :
Si Table1 et DataSource1 contiennent la table T1
et Table2 et DataSource2 contiennent la table T2
Il faut faire :
TDBLookupComboBox.ListSource:=DataSource2;
TDBLookupComboBox.KeyField:='N';
TDBLookupComboBox.ListField:='Texte';
TDBLookupComboBox.DataSource:=DataSource1;
TDBLookupComboBox.DataField:='Valeur';
Table1 et Table2 doivent être active pour que le composant fonctionne.

--- :sleepy) Nono du Moulin :sleepy) ---
0
polop Messages postés 9 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 24 juin 2006
6 juin 2002 à 09:00
Oui mais Non,

ce n'est pas exactement cela que j'airemais avoir.
si tu connais Access , je veux le même genre de possibilité qu une zone de liste, car :
je n'ai qu'un seul datasource en entrée, et selon le choix dans la liste, je fais <> actions. il n'y a pas de 2ème table à mettre à jour, juste récupérer dans une variable, la valeur correspondante au choix.

Merci par avance.
0

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

Posez votre question
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
6 juin 2002 à 21:30
Je ne connais pas Access, et je n'avais pas compris la question...

Il n'y a pas de solution intermédiaire entre la ComboBox et la LookUpComboBox. Je crains que tu sois obligé de remplir un ComboBox à la main en parcourant la table...

Il y a peut-être alors une solution un peu différente : utilise un DBStringGrid connecté à ton DataSource et affichant seulement les colonnes voulues. L'utilisateur pourra alors parcourir la liste et la valeur cherchée sera sur l'enregistrement en cours de la base de donnée.

--- :sleepy) Nono du Moulin :sleepy) ---
0
polop Messages postés 9 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 24 juin 2006
7 juin 2002 à 10:36
c'est bien dommage, access est très simple (voir simpliste).

je vais essayer le DBStringGrid.

sinon cela ne me dérange pas de charger le ComboBox ' à la main ', par contre je n'arrive pas à afficher une valeur et en même temps avoir en sortie une autre valeur !

c'est surement tout bête mais je sèche §

( pour info vas voir nzn.fr.delphi, j'ai trouvé un bug sur le DBLookupListBox )

Et encore merci, et à bientot.
0
txetxen Messages postés 2 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 25 août 2005
25 août 2005 à 10:16
salut, je viens de lire ton post et c'est a peu de choses pres ce que je veux faire, mais en asp.
En fait, j'ai une base dans laquelle se trouvent les 2 tables qui m'intéressent pour faire le traitement que tu as décrit.
Connais-tu donc l'équivalent de ce composant delphi en asp?
Merci d'avance de ta réponse.
0
txetxen Messages postés 2 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 25 août 2005
25 août 2005 à 10:19
désolé mais j'ai oublié de préciser que le poste que j'ai lu est celui de nono40 et qui dit:


Ce que je n'ai pas précisé, c'est que le composant doit être utilisé avec un base de donnée. Il permet de remplir le champ d'une base par l'une des valeur d'une colonne d'une autre base. On ne peut pas récupérer la valeur autrement.

Par exemple si on doit remplir le champ "Valeur" de la base "T1.DB" avec l'une des valeur de la colonne "N" de la base "T2.DB" en affichant la colonne "Texte" de "T2.DB" :
Si Table1 et DataSource1 contiennent la table T1
et Table2 et DataSource2 contiennent la table T2
Il faut faire :
TDBLookupComboBox.ListSource:=DataSource2;
TDBLookupComboBox.KeyField:='N';
TDBLookupComboBox.ListField:='Texte';
TDBLookupComboBox.DataSource:=DataSource1;
TDBLookupComboBox.DataField:='Valeur';
Table1 et Table2 doivent être active pour que le composant fonctionne.

--- Nono du Moulin ---
0
Rejoignez-nous