mierkool
Messages postés61Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention 9 septembre 2009
-
18 mai 2006 à 12:52
pkfran
Messages postés8Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention18 février 2009
-
31 mai 2006 à 18:01
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".
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 18 mai 2006 à 19:18
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>
JB76000
Messages postés135Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention14 février 2013 19 mai 2006 à 10:20
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
pkfran
Messages postés8Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention18 février 2009 31 mai 2006 à 18:01
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