Combobox(s) et access

MPGLARTISTE Messages postés 3 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 27 février 2007 - 25 févr. 2007 à 14:53
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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.

Merci de votre aide.

5 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.

MPi
0
MPGLARTISTE Messages postés 3 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 27 février 2007
26 févr. 2007 à 19:17
Salut MPI,

mon probleme étant la fameuse requete, que je n'arrive pas a créér.

merci de ta réponse, j'vais me pencher la dessus.

Lartiste
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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

MPi
0
MPGLARTISTE Messages postés 3 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 27 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
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.

MPi
0
Rejoignez-nous