IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

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


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut Alimentation d'un ComboBox via une requête paramètrée par un autre ComboBox
    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 :

    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    '-----------------------Declaration Des Variables Globales--------------------------
    Dim cnx As ADODB.Connection
    Dim cob As ADODB.Recordset
    Dim coa As ADODB.Recordset
    Dim VarBanque As Integer
     
    '---------------------------------
         Private Sub 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
    Loop Until cob.EOF
     
    '-----------------------------Combo Agence--------------------------------------------
    coa.MoveFirst
    Do
    Ca.AddItem coa("NomAgence")
    coa.MoveNext
    Loop Until coa.EOF
    End Sub
     
     
    '----------------------ComboBox Banque Click----------------------------------------
     
    Private Sub Cb_Click()
     
    cob.MoveFirst
    Do Until cob.EOF
    If Cb = cob("NomBanque") Then
     
    '--------------Historique-----------
    B.Caption = cob("NomBanque")
    '-----------------------------------
     
    VarBanque = Cb.ListIndex + 1
    End If
        cob.MoveNext
    Loop
    End Sub
     
    '----------------------ComboBox Agence Clik-----------------------------------------
     
    Private Sub Ca_Click()
     
    coa.MoveFirst
    Do Until coa.EOF
    If Ca = coa("NomAgence") Then
     
    '--------------Historique------------------------------------------------------------
    A.Caption = coa("NomAgence")
    '------------------------------------------------------------------------------------
     
    End If
    coa.MoveNext
    Loop
    End Sub
     
    '----------------------CheckBox Agence CLIK------------------------------------------
     
     
    Private Sub CheckBox1_Click()
     
    If Ca.Enabled = True Then
    Ca.Text = ""
    A.Caption = ""
    La.Visible = False
    Ca.Enabled = False
    Else: Ca.Enabled = True: La.Visible = True
    End If
    End Sub
     
    Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
     
    End Sub
    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

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Si la banque à plusieurs agence, on parle de relation un à plusieurs.Code
    On traite généralement ce problème en donnant dans la table agence, un champs qui contiedra le code (ou le nom) de la banque.
    Exemple :
    Table banque
    - Code Banque
    - Nom Banque
    -etc
    Table Agence
    -Code Banque
    -Code Agence
    -Nom agence
    -etc
    A partir de la, quand tu selectionne une banque, une requette du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Select * From Agence Where [Code Banque]=" & Combo1.Text
    trouve toutes les agences de la banque sélectionnée

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut
    Je pense que le lien sur mon message, voilà :

    Ma base de donnée est bien construite et toutes les relations y sont, mais le problème n'est pas là. Le problème c'est dans quel endroit du code je dois insérer la bonne requête et comment ? y'a t-il d'autres modifications que je dois faire ?
    Merci

    Surtout je voudrais savoir:
    La correcte syntaxe de la requete en question (je galère avec les & " ' " && " & ) et où l'insérer pour que ça marche à chaque clik du combo box.
    Merci Monsieur Delbeke de m'aiclairer plus car j'arrive pas à tirer profit de votre requête.
    Ceci est le meilleur des forums

  4. #4
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Le code banque est Numérique ? alors la clause where doit être Code =Valeur
    Le code Banque est Alpha, alors çà devient Code ='Veleur'

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut ça ne marche toujours pas
    Au fait j'ai toujours l'erreur suivante : "L'operation demandée necessite un enregistrement actuel", signifie que le ComboBox ne retourne aucune valeur pouvant alimenter la requête
    Ce code commence à me casser la figure
    Un ptit effort les forts

  6. #6
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Sempiternelles questions

    Quelle ligne provoque l'erreur?
    As tu des données dans les tables ?
    Sait tu exécuter ton programme pas à pas pour voir excatement ce qu'il fait
    Suis tu le contenu des variables en cours d'exécution ?

    Autre chose, quand tu as rempli le premier combo, tu as fait une boucle de lecture de ta table, a la fin de cette boucle, le premier recordset ne pointe plus sur aucune ligne de la table (fin de fichier atteinte)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut Réponse aux questions+Remarque
    D'abord voici un aperçu des deux tables en question :


    et Voici la ligne qui donne l'erreur :


    Oui je suis l'évolution des valeurs de variables par des msgbox en revanche je ne sais pas comment faire pour l'éxécution pas à pas.
    Je croie que vous avez posé le doigt sur l'endroit qui fait mal, effectivement la boucle du premier ComboBox pointe à la fin sur rien
    Je serai reconnaissant si vous me proposer comment elle pourrait à nouveau pointer sur quelque chose de mangeable

    Mes respects les plus sincères.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut Conclusion
    L'erreur sur laquelle j'ai tardé a été pour moi d'une grande utilité, puisqu'elle m'a permis de prendre conscience de la grande utilité d'une fonction que j'ignorais jusq'uà présent : La super ItemData.
    Avec moi tous
    ItemData est vraiment utile!
    Je tiens à remercier monsieur Delbeke de sa grande patience et de la pertinence de ses remarques que j'oublierai pas.

    Ce forum est bien, prenez en soin, et surtout, restez solidaires, entraidez-vous !
    Bonne journée à tout le monde.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Alimenter un état par une requête paramétrée.
    Par JNT-GGL dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/05/2013, 18h13
  2. [AC-2007] Alimenter un MS Form 2 listbox via une Requête
    Par lakhdar16 dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/06/2012, 12h33
  3. Réponses: 6
    Dernier message: 04/05/2011, 10h07
  4. Difficulté d'affichage dans une comboBox via une requête
    Par moilou2 dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/07/2008, 10h44
  5. [MySQL] alimenter une liste déroulante via une requête
    Par stefon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/12/2006, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo