MPGLARTISTE
Messages postés3Date d'inscriptiondimanche 25 février 2007StatutMembreDernière intervention27 février 2007
-
25 févr. 2007 à 14:53
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
27 févr. 2007 à 23:32
bonjour à toutes et tous,
Apres des heures et des heures de recherches sur le forum, et sur le net, je n'arrive pas à trouver mon bonheur. J'ai une BDD access, dans laquel j'ai plusieurs tables, deux tables sont relier entre elles via leur ID. La table 1 (Archer) contient les informations civils des archers, la table2 (Arc) contient le(s) arc(s) que chaques archers possedes.
J'ai Créé deux Combobox sous VB6, dans la premiere je selectionne l'archer, et dans la deuxieme, je selectione le(s) arc(s) dont il est propriétaire. mon probleme étant que, dans la 2eme combobox, j'ai la totalité des arcs qui s'affiche, je n'arrive pas à relier les arcs a sont archer. Il doit me manquer une condition de tri, mais je n'arrive pas a la faire.
voici le code que j'ai fais :
Premiere combobox :
Private Sub refresh_archers()
Set rsArchers = dbCDR.OpenRecordset("Archer")
rsArchers.MoveFirst
cboArchers.Clear
While (rsArchers.EOF = False)
cboArchers.AddItem (rsArchers("NOM") + " " + rsArchers("PRENOM"))
cboArchers.ItemData(cboArchers.NewIndex) = rsArchers("ID")
rsArchers.MoveNext
Wend
End Sub
Deuxieme Combobox :
Private Sub refresh_Arcs()
Set rsArcs = dbCDR.OpenRecordset("Arc")
rsArcs.MoveFirst
cboArcs.Clear
While (rsArcs.EOF = False)
cboArcs.AddItem (rsArcs("MARQUE") + " " + rsArcs("MODELE"))
cboArcs.ItemData(cboArcs.NewIndex) = rsArcs("ID")
rsArcs.MoveNext
Wend
End Sub
voila, il doit me manquer une condition de tri dans la deuxieme mais je trouve pas.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 25 févr. 2007 à 15:26
En fait, je dirais que tu as 2 options.
1- Tu remplis le 1er combo. Sur click (ou double-click) d'un item, tu charges le combo2 à l'aide d'une requête avec seulement les données se rapportant à cette personne.
2- Tu remplis les 2 combos avec des valeurs uniques (Select Distinct...) Sur click d'un et/ou l'autre combo, tu fais une requête pour trouver toutes les possibilités se rapportant à la personne ou l'arc choisi, et affichés dans un autre contrôle.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 26 févr. 2007 à 22:44
Si tu sélectionnes un archer et que tu veuilles afficher ses arcs
"Select Arc From MaTable Where Archer = '" & comboArcher.text & "'"
Si tu sélectionnes un arc et que tu veuilles afficher les archers, ben c'est le contraire
"Select Archer From MaTable Where Arc = '" & ComboArc.Text & "'"
Si tout se trouve dans 2 tables et que tu as un champ commun (j'espère...) il te faut ajouter une condition au Where"Select * From TableArcher, TableArc Where TableArcher.Archer '" & comboArcher.text & "' and TableArcher.ChampCommun TableArc.ChampCommun"
Ça devrait ressembler à ça
Ensuite, tu charges le combo avec le résultat
Combo.clear
Do Until Rs.EOF
Combo.AddItem Rs!Archer
Rs.Movenext
Loop
MPGLARTISTE
Messages postés3Date d'inscriptiondimanche 25 février 2007StatutMembreDernière intervention27 février 2007 27 févr. 2007 à 18:13
merci de ton aide, ca doit te paraitre enfantin tout ça.
J'ai bien essayer une condition dans le meme genre que la tienne, mais VB6 me saoule avec "Attendu : Case" a la place de l'* ou de tout autres choses (de Select * From).
enfin voila.
Encore merci de ton aide
Lartiste
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 févr. 2007 à 23:32
Ce doit être la façon dont tu as écris la requête
Il est vrai qu'un Select attend un End Select et aussi un Case
Mais dans ton cas, ce n'est pas ce genre de Select que tu veux utiliser.
Il te faut donc utiliser un objet Recordset comme ceci
Set rsArchers = dbCDR.OpenRecordset("Select ...From...Where...And...")
remplacer le bout en bleu par une requête comme je te donnais
Le nom du Recordset n'a pas vraiment d'importance, tant qu'il est déclaré comme étant un Recordset et utilisé pour remplir un ou l'autre de tes combos.