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 :

Besoin d'aide avec combobox et datagrid


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 16
    Points
    16
    Par défaut Besoin d'aide avec combobox et datagrid
    Bonjour,
    Encore un petit problème pour moi...


    Petit problème dont je cherche la solution est qu'en fait j'ai rempli un combobox comme ceci

    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
    Private Sub remplircomboEquipe()
     
    sql = "SELECT * FROM Equipe"
        Set rs = New ADODB.Recordset
        rs.Open sql, dbsbase
     
        With ComboEquipe
            .Clear
            While Not rs.EOF
                If Not IsNull(rs!nom_équipe) Then .AddItem rs!nom_équipe & " " & rs!Division & " " & rs!Niveau & " [" & rs!Sexe & "]"
                rs.MoveNext
            Wend
            Set rs = Nothing
      End With
     
     
    End Sub

    j'aimerais lorsque je clique sur une équipe, faire un filtre dans ma datagrid avec l'index de l'équipe voulue...

    voici ce a quoi ressemble ma dg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub remplirdg()
     
    sql = "SELECT * FROM Joueur Where Equipe = 1"
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open sql, dbsbase
     
     
     
    Set DataGrid1.DataSource = rs
     
    End Sub
    j'aimerais au lieu de Equipe = 1 prendre l'id correspondant dans la ComboEquipe
    Voila j'espère ne pas trop vous ennuyer en ce dimanche

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    L'idée serait de ne pas chercher a faire un filtre sur la grille, mais sur le recordset sous-jacent.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Delbeke Voir le message
    L'idée serait de ne pas chercher a faire un filtre sur la grille, mais sur le recordset sous-jacent.
    oui et d'ainsi charger la grille au moment du choix effectué

  4. #4
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Bon voila ce que je te propose.

    Vu que tu ne recuperes pas l'index (enfin tu ne l'utilises pas dans ton combobox). ce que tu doit faire c mettre les index dans un tableau (dynamique biensur) et ainsi pouvoir faire le filtre avec les elements du tableau.

    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
     
    Dim TbIndex () as string  ' S'il sagit des strings
     
     
    Private Sub remplircomboEquipe()
        Dim NbElt as integer, i as integer
    sql = "SELECT * FROM Equipe"
        Set rs = New ADODB.Recordset
        rs.Open sql, dbsbase
     
    '***********************************
        'On recupere le nombre d'element
        NbElt = rs.RecordCount
     
        'On Redimensione le tableau
        Redim TbIndex (NbElt)   
        i=0
    '**********************************
        With ComboEquipe
            .Clear
            While Not rs.EOF
                If Not IsNull(rs!nom_équipe) Then .AddItem rs!nom_équipe & " " & rs!Division & " " & rs!Niveau & " [" & rs!Sexe & "]"
     
    '**********************************
                'Pendant que l'on rempli le combobox, on rempli aussi le tableau, pour garder les memes index
               TbIndex(i)=rs!Index
               i=i+1
    '********************************* 
                rs.MoveNext
            Wend
            Set rs = Nothing
      End With
     
     
    End Sub

    Ensuite tu filtres juste en utilisant les elements du tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Private Sub remplirdg()
     
       sql = "SELECT * FROM Joueur Where Equipe = " & TbIndex(ComboEquipe.ListIndex)
       Set rs = New ADODB.Recordset
     
       rs.CursorLocation = adUseClient
       rs.Open sql, dbsbase
     
       Set DataGrid1.DataSource = rs
     
    End Sub

    Voila comme ca, ca devrais marché.
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 167
    Points
    17 167
    Par défaut
    Salut
    'On recupere le nombre d'element
    NbElt = rs.RecordCount
    malheureusement, si on ne fait pas un .MoveLast .MoveFirst, RecordCount = 0.
    Le .MoveLast .MoveFirst fait perdre du temps, c'est pourquoi il peut être utile de partir du tableau = 0 et faire des redim preseve dans la boucle de remplissage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        'On Redimensione le tableau
       i=0
        Redim TbIndex (i)   
     '**********************************
    '....................
     
    '**********************************
                'Pendant que l'on rempli le combobox, on rempli aussi le tableau, pour garder les memes index
                Redim Preserve TbIndex(i)
               TbIndex(i)=rs!Index
               i=i+1
    '*********************************
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Salut
    malheureusement, si on ne fait pas un .MoveLast .MoveFirst, RecordCount = 0.
    Le .MoveLast .MoveFirst fait perdre du temps,
    tout a fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c'est pourquoi il peut être utile de partir du tableau = 0 et faire des redim preseve dans la boucle de remplissage.
    bienvu, j'aurais c sur fait un movelast, movefirst
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

Discussions similaires

  1. Besoin d'aide avec Regexp::Assemble
    Par mobscene dans le forum Modules
    Réponses: 5
    Dernier message: 11/04/2007, 12h39
  2. [ASA] J'ai besoin d'aide avec sybase et vb6 svp !!
    Par tibo830 dans le forum SQL Anywhere
    Réponses: 7
    Dernier message: 12/05/2006, 10h09
  3. Besoin d'aide avec TinyXML
    Par Clad3 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/08/2005, 18h20
  4. Réponses: 2
    Dernier message: 29/08/2003, 17h52
  5. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29

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