Entrer un index différent dans une combobox

Signaler
Messages postés
61
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
9 septembre 2009
-
Messages postés
8
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
18 février 2009
-
voila,

j'ai un combobox que je remplis d'après une base de données dans un ordre alphabétique croissant.


ex de la base


id       nom      prenom


j'aimerai rentrer comme index du combobox l'id de la base de facon à
retrouver directement id de la base quand je sélectionne qqchose de le
combobox.

genre :


1       gabin       jean

2       bourvil       andré

dans le combobox :


bourvil, andré

gabin, jean


je sélectionne "bourvil, andré" et je récupère "2".


merci d'avance

3 réponses

Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
Salut,
Le problème c'est que tu ne peux pas imposer l'index d'insertion d'un additem avec une combo.
Tu peux sinon associer à ta combo une autre combo dans laquelle tu stock l'Id. Tu pourras alors récupérer après un changment de ta combo1 l'id par MyId = combo2.list(combo1.listindex)

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Je ne vois pas bien ce que tu veux faire.
Pour récupérer l'index de ta combo, tu as combo1.listindex. Mais si tu la classe par ordre alphabétique alors que tout est mélangé dans ta base, tu vas être décalé.
Je pense que ton problème c'est de faire référence à ton enregistrement, alors que tu as associé le nom et le prénom.
Moi, j'utiliserais 'split' dans ton cas

donnees=split(combo1.text,",")

Comme ça, tu as
donnees(0)="bourvil"
donnees(1)=" andre"

Mais le plus efficace est encore d'insérer un numéro d'enregistrement dans ta bdd. Tu parcoures ta base en vérifiant que l'enregistrement 'n' n'existe pas. S'il existe, tu incrémentes 'n' et tu recommences.
if rs!numero=n then n=n+1:rs.movefirst
Ca permet la suppression ;)
Ensuite, tu charges tes données dans un tableau
dim donnees(1000,2)
'donnees(n,0)' pour ton n° d'enregistrement
'donnees(n,1)' pour le nom
'donnees(n,1)' pour le prénom

donnees_combo=split(combo1.text,",")

for n=0 to 1000
if donnees(n,1)=donnees_combo(0) and donnees(n,2)=donnees_combo(1) then
numero_enregistrement=donnees(n,0)
next n

Jer
Messages postés
8
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
18 février 2009

il y a une solution tte simple si tu charge ton combo via un recordset
lorsque tu as fais ton combo.add  le nom , le prenom
tu place la ligne suivante : combo.itemdata(combo.newindex) = le id de ton reccord

exemple
Dim rst As New ADODB.Recordset
Dim icount As Integer       
If rst.EOF = False Then
            For icount = 0 To rst.RecordCount - 1
                ComboDem.AddItem rst!<<le nom>> & "," & <<le prenom>>                ComboDem.ItemData(ComboDem.newIndex) = rst!<>
                rst.MoveNext
            Next
quand tu selectionne un élément de ton combo il suffit de récupérer la valeur de item data(combo.listindex) et tu auras la valeur de ton identifiant du record
BACCHUS