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.NET Discussion :

Afficher des données en fonction de combobox [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Afficher des données en fonction de combobox
    Bonjour,

    actuellement j'affiche les données d'un tableau excel dans un DataGridView, seulement j'aimerais qu'un filtre s'applique sur les données affichées en fonction des éléments sélectionnés dans des combobox.

    Voilà le code que j'ai pour le moment :

    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
     Sub CoDataBase()
                   Try
                Dim MyConnection As System.Data.OleDb.OleDbConnection
                Dim DtSet As System.Data.DataSet
                Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
                MyConnection = New System.Data.OleDb.OleDbConnection _
                ("provider=Microsoft.Jet.OLEDB.4.0; Data Source='D:\LISTING.xls'; Extended Properties=Excel 8.0;")
                MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Page1$]", MyConnection)
                MyCommand.TableMappings.Add("Table", "TestTable")
                DtSet = New System.Data.DataSet
                MyCommand.Fill(DtSet)
                DataGridView1.DataSource = DtSet.Tables(0)
                MyConnection.Close()
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub
    Voilà si quelqu'un peut m'aider, j'en serais ravi.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    je vous proposerai une demarche qui pourrait être la moins simple

    1- créer une table pour recevoir les données d'excel
    2- créer uns sp pour collecter les données de la feuille excel et les filtrer avec un paramètre qui aura pour valeur la valeur affichée du combobox et inserer le resultat dans la table créer en un. Bien entendu la première instruction sur le sp doit être une commande de suppression pour les données existant sur la table

    3- sur evenement Enter du datagrid, definir le chargement du datagrid avec les données de la table crée en 1

    Je serai ravi de savoir que je vous ai aidé.

    Lendcap

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 11
    Points
    11
    Par défaut
    Si j'ai bien compris, tu veux que le contenu de ton DataGrid varie en fonction des choix dans tes combobox ?

    j'ai eu un problème plus ou moins similaire la semaine passée , je te passe le lien il t'aidera peut être :-)

    http://www.developpez.net/forums/d12...atatable-vers/

    La partie qui t’intéresse est en bas de page.

    Tu peux inclure ton code dans l'event "SelectedIndexChanged" de ton ou tes Combo


    A+

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Merci pour vos réponses.

    J'ai regardé ton post Julien, c'est vrai que les deux sujets se rejoignent. Mais là où je bloque encore c'est que lorsque je fais un changement dans un combo, pour filtrer les données du Datagridview je dois réouvrir une connexion vers mon fichier excel... je pense pas que ça soit la solution.

    Je vais continuer à chercher !

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir
    une possibilité pourrait être d'utiliser un DataView.
    Exemple : Combobox1 correspondant à la première colonne de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
     
            Dim orders As DataTable = DtSet.Tables(0)
     
            Dim query = _
                From order In orders.AsEnumerable() _
                Where order.Field(Of String)(0) = ComboBox1.Text _
                Select order
     
            Dim view As DataView = query.AsDataView()
            DataGridView1.DataSource = view
        End Sub

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 11
    Points
    11
    Par défaut
    slt,

    Pour moi, tu ne dois pas recharger ton fichier Excel à chaque modification du Cb, tu as déjà toutes les info dans ta Datatable lors de la première connexion.
    Il te suffit de garder cette DTT en mémoire comme table de "référence" qui alimente une autre DTT qui elle sera liée a ton DatagridViewv
    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 ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
     
            Dim DTS As new DataSet
            DTS.Tables.Add(DtSet.Tables(0).Clone)
            Dim tabrow() As DataRow = DtSet.Tables(0).Select("MonCritere=" & MaCb.SelectedValue)
     
      	For Each r As DataRow In tabrow
               DTS.tables(0).ImportRow(r)
       	 Next
            DataGridView1.DataSource = DTS 
     
    End Sub
    la solution de chrismonoye irait aussi, il fais la même chose que je propose mais d'une autre mannière .Elle me semble même un peu plus propre que la mienne

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour, merci encore pour la rapidité de vos réponses je vais essayer tous ça et je vous tiens au courant du résultat

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ca avance !
    Alors j'ai suivi vos idées ça marche bien mais (il y en a tjr un^^) j'obtiens ce message d'erreur :
    Impossible de trouver la colonne [maCB.text]

    j'ai d'abord utilisé la méthode de Julien parce que je la comprends un peu mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            DTTclone = New DataSet
            DTTclone.Tables.Add(DTT.Tables(0).Clone)
            Dim tabRow() As DataRow = DTT.Tables(0).Select("System=" & CB_system.Text)
            For Each rw As DataRow In tabRow
                DTTclone.Tables(0).ImportRow(rw)
            Next
            DTGV.DataSource = DTTclone
    Je sens que je suis pas loin mais bon. J'ai essayé de modifier cette partie ("System=" & CB_system.Text) rien a faire, soit j'obtiens le msg d'erreur cité plus haut, soit le même mais avec les crochets en moins...

    Je vais essayer ta methode Chris vu je bloque avec celle ci.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ca marche avec la methode de Chrismonoye !
    Merci bcp pour le temps que vous m'avez accordé, maintenant yapluka

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 11
    Points
    11
    Par défaut
    Ok super alors

    Pour le problème as tu essayé en ajoutant les simple quote ' pour entourer la chaine de caractère ? ( en supposant que tu n'ai pas d'apostrophe dans ta Cb )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DTT.Tables(0).Select("System='" & CB_system.Text & "' ")
    Mais bon le problème est resolu s'est le principal

    A+

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Oui j'avais également essayé comme ça mais sans résultat.

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

Discussions similaires

  1. [XL-2007] Afficher des données en fonction d'une combobox
    Par balibou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/02/2013, 16h08
  2. Réponses: 15
    Dernier message: 31/03/2009, 22h22
  3. Réponses: 5
    Dernier message: 16/02/2009, 12h05
  4. Afficher des données en fonction d'un champ select
    Par gueud dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2008, 13h48
  5. [Conception] Afficher des données en fonction du mois.
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 05/06/2006, 10h31

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