Alimentation d'un ComboBox via une requête paramètrée par un autre ComboBox

PlatiniumPhoenix Messages postés 1 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 27 juin 2008 - 27 juin 2008 à 16:51
bonjourcheval Messages postés 228 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 8 août 2011 - 10 juil. 2008 à 21:15
Bonjour tout le monde

Alors voilà, j'ai une base de donnée access, les tables suivantes sont concernés par le problème en question:
-Banque
-Agence
Une banque a plusieurs agences.

Voilà à quoi ressemble la FORM sur laquelle je travaille :

http://www.boostupload.com/img.php?i=image_776_Banque.JPG

Ce que je veux faire c'est : N'avoir dans le ComboBox de l'agence que les agences appartenant à la banque selectionnée dans le premier ComboBox.

Voici mon code :

Ce que je veux faire c'est : N'avoir dans le ComboBox de l'agence que les agences appartenant à la banque selectionnée dans le premier ComboBox.

Voici mon code :

'-----------------------Declaration Des Variables Globales--------------------------
Dim cnx As ADODB.Connection
Dim cob As ADODB.Recordset
Dim coa As ADODB.Recordset
Dim VarBanque AsInteger
 
'---------------------------------
     PrivateSub Form_Load()
'---------------------------------
 
Set cnx = New ADODB.Connection
Set cob = New ADODB.Recordset
Set coa = New ADODB.Recordset
 
'----------------------------------------------------------------------------------
VarBanque = 1
' Là j'ai initialisé la variable VarBanque pour éviter le msg d'erreur suivant :
'          "L'operation demandée necessite un enregistrement actuel"
'----------------------------------------------------------------------------------
 
cnx.Provider = "microsoft.jet.oledb.4.0"
cnx.ConnectionString = App.Path & "\GD.mdb"
cnx.Open
cob.Open"select NomBanque from Banque", cnx, adOpenDynamic, adLockOptimistic
coa.Open"select NomAgence from Agence where  NumBanque  = " & VarBanque & "", cnx, adOpenDynamic, adLockOptimistic
 
'------------------------------Combo Banque-------------------------------------------
 
cob.MoveFirst
Do
Cb.AddItem cob("NomBanque")
 
cob.MoveNext
LoopUntil cob.EOF
 
'-----------------------------Combo Agence--------------------------------------------
coa.MoveFirst
Do
Ca.AddItem coa("NomAgence")
coa.MoveNext
LoopUntil coa.EOF
EndSub
 
 
'----------------------ComboBox Banque Click----------------------------------------
 
PrivateSub Cb_Click()
 
cob.MoveFirst
DoUntil cob.EOF
     cob.MoveNext
Loop
EndSub
 
'----------------------ComboBox Agence Clik-----------------------------------------
 
PrivateSub Ca_Click()
 
coa.MoveFirst
DoUntil coa.EOF

coa.MoveNext
Loop
EndSub

Avec ce code j'ai dans le deuxième ComboBox les agences de la première Banque(Car j'ai initialisé la variable qui indique à la requête la banque 1).
Ca fait maintenant quatre jours que je galère dessus mais en vain

Je sais pas comment faire pour avoir à chaque fois que les agences appartenant à la banque selectionnée, autrement dit pour que la requete s'execute et aliment le ComboBox 'Agence' à chaque selection d'une banque.
Si quelqu'un a une idée ...
Je vous remercie d'avance pour votre collaboration

Remarque :
Je croie que quand j'ai rempli le premier combo, j'ai fais une boucle de lecture de ma table, a la fin de cette boucle, le premier recordset ne pointe plus sur aucune ligne de la table (fin de fichier atteinte)
<!-- / message -->Qu'est ce que vous en pensez ?
Merci d'avance pour votre collaboration
A voir également:

2 réponses

Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011
27 juin 2008 à 21:19
SAlut,

Je croie que quand j'ai rempli le premier
combo, j'ai fais une boucle de lecture de ma table, a la fin de cette
boucle, le premier recordset ne pointe plus sur aucune ligne de la
table (fin de fichier atteinte)
<!-- / message -->Qu'est ce que vous en pensez ?
Très bizar t'as façon de remplir tes combobox....Faire une boucle sur une table pour remplir une combobox, je ne suis pas sur que ce soit très optimisé!
Dans Access, je procédais ainsi:
Private Sub Lst_ZoneRech_Click()

'=> la liste Lst_Terme est rempli par la table Tbl_LstMod

    Dim Sql As String

    Sql = "SELECT Tbl_TypeDep.* " & _
              "FROM Tbl_TypeDep " & _
              "ORDER BY Tbl_TypeDep.TypeDep ;"

    Me.Lst_Terme.RowSource = Sql
    Me.Lst_Terme.Requery

End Sub
Et dans vb.net
Me.cboRechercherDans.DataSource = ....

Je sais pas comment faire pour avoir à
chaque fois que les agences appartenant à la banque selectionnée,
autrement dit pour que la requete s'execute et aliment le ComboBox
'Agence' à chaque selection d'une banque.
Je crois que la réponse est dans ta phrase:
chaque selection d'une banque -> requete s'execute -> aliment le ComboBox
'Agence'

1- Revois ton code pour le remplissage d'une combobox avec une requête...
2- Ensuite sur la sélection (ou changement de texte) rempli le second combobox avec une requête incluant en critère la sélection de la première combobox.

J'ai plus batteries....

@+

Gdal
0
bonjourcheval Messages postés 228 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 8 août 2011
10 juil. 2008 à 21:15
Très bizar t'as façon de remplir tes combobox....


Faire une boucle sur une table pour remplir une combobox, je ne suis pas sur que ce soit très optimisé!




Et access ne fait pas de boucle lui pour lire toutes ces lignes? ;)

Personnelement, je crois que les deux méthodes ont la même vitesse.
Resterait à tester avec un calculateur de vitesse de fonction...

vala
0
Rejoignez-nous