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 :

Procédure pour remplir un Datagridview depuis une requête


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Procédure pour remplir un Datagridview depuis une requête
    Bonjours à tous,
    mon problème est le suivant : J'essaye maintenant depuis plusieurs jours de remplir un Datagridview avec des données que j’extraie de ma base de données à l'aide d'une procédure.

    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
     Public Sub ProcPeuplerDtg(ByVal pRequete As String, ByVal pDataGridView As System.Windows.Forms.DataGridView, ByVal pTab As ArrayList)
            Dim Connexion As New SqlClient.SqlConnection
            ProcConnexion(Connexion)
            Try
                Dim Command As New SqlClient.SqlCommand(pRequete, Connexion)
                Dim SdrReq As SqlClient.SqlDataReader
                Dim i As Integer
                Dim ChaineTemp As String
                SdrReq = Command.ExecuteReader
                ChaineTemp = ""
                i = 0
                Do While SdrReq.Read()
                    ChaineTemp = SdrReq(pTab(i)) & ", " & ChaineTemp
                    i = i + 1
                Loop
                pDataGridView.Rows.Add(ChaineTemp)
                SdrReq.Close()
            Catch Probleme As Exception
                MessageBox.Show("L'erreur suivante a été rencontrée : " & Probleme.Message, "Erreur de connexion", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub
    Mais rien ne s'affiche dans mon Datagridview, j'ai juste les nom des colonnes.
    J'ai vérifié ma requête, et elle me renvoi bien des résultats.
    Et enfin, voici comment j'appelle ma procédure :

    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
                    ReqRech = "SELECT P.IdPers, NomPers, PrenomPers, NumRuePers, NomRuePers, CpPers, VillePers, TelPers, RaisonEntree, DateEntree, DateSortie, NumSecu FROM Personne P, Patient Pa WHERE P.IdPers = Pa.IdPers AND P.IdPers LIKE '%%' AND NomPers LIKE '%" & Me.TxtNom.Text & "%' AND PrenomPers LIKE '%" & Me.TxtPrenom.Text & "%' AND NumRuePers LIKE '%" & Me.TxtNumRue.Text & "%' AND NomRuePers LIKE '%" & Me.TxtNomRue.Text & "%' AND CpPers LIKE '%%' AND VillePers LIKE '%" & Me.TxtVille.Text & "%' AND TelPers LIKE '%%' AND RaisonEntree LIKE '%" & Me.TxtMotif.Text & "%' AND DateEntree LIKE '%" & Me.DtpEntree.Text & "%' AND DateSortie LIKE '%" & Me.DtpSortie.Text & "%' AND Pa.NumSecu LIKE '%%'"
     
                    Dim TabCol As New ArrayList
                    With TabCol
                        .Add("IdPers")
                        .Add("NomPers")
                        .Add("PrenomPers")
                        .Add("NumRuePers")
                        .Add("NomRuePers")
                        .Add("CpPers")
                        .Add("VillePers")
                        .Add("TelPers")
                        .Add("RaisonEntree")
                        .Add("DateEntree")
                        .Add("DateSortie")
                        .Add("NumSecu")
                    End With
                    ProcPeuplerDtg(ReqRech, Me.DtgResultat, TabCol)
    Sauriez-vous pourquoi rien ne s'affiche?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    code étrange pour remplir un datagridview ...


    sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Do While SdrReq.Read()
        ChaineTemp = SdrReq(pTab(i)) & ", " & ChaineTemp
        i = i + 1
    Loop
    pDataGridView.Rows.Add(ChaineTemp)
    le while .Read va bien lire toutes les lignes retournées par la requete
    par contre à la fin de la boucle tu ajoutes une ligne (une seule au lieu d'une par tour de boucle) et n'ayant qu'un seul champ qui est à vue de nez une concaténation de toutes les colonnes
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Irlande

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 98
    Points : 318
    Points
    318
    Par défaut
    Bonjour,

    j'ai eu la même problématique et je me suis résigné a développer une méthode qui permet de remplir un datagrid view jsute en placant celui ci et la requete en parametre :

    Si cela peut t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Sub RemplitDataGridView(ByVal requete As String, ByVal dtgvcible As DataGridView, ByVal datatab As DataTable)
            Me._Command.Connection = 'saisir ici ton objet de connexion
            Dim MonDataAdapter As System.Data.Odbc.OdbcDataAdapter = New Odbc.OdbcDataAdapter(requete, Me._Connection)
            Dim Commandbuilder As System.Data.Odbc.OdbcCommandBuilder = New Odbc.OdbcCommandBuilder(MonDataAdapter)
            Dim Madatatable As DataTable = New DataTable
            MonDataAdapter.Fill(Madatatable)
            MonDataAdapter.Fill(datatab)
            Madatatable.Locale = System.Globalization.CultureInfo.InvariantCulture
            dtgvcible.DataSource = Madatatable
            dtgvcible.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
            Me._Connection.Close()
        End Sub
    Me._connection appelle simplement un objet de type System.Data.Odbc.OdbcConnection

    Mais pour ta SQLCommand il suffit d'adapter !

    C'est très pratique car tu n'as plus qu'a appeler cette méthode à chaque fois !

  4. #4
    Invité
    Invité(e)
    Par défaut
    @Pol63 :
    code étrange pour remplir un datagridview ...
    Les profs insistent pour que l'on fasse comme ça

    par contre à la fin de la boucle tu ajoutes une ligne (une seule au lieu d'une par tour de boucle) et n'ayant qu'un seul champ qui est à vue de nez une concaténation de toutes les colonnes
    En effet, je vais voir pour changer ça

    @Homo_Informaticus : Merci de ton aide, mais j'ai peur de ne pas encore avoir le niveau pour bien comprendre ton code


    EDIT : Après débogage, je me suis rendu compte que je ne rentais jamais dans la boucle Sauriez-vous pourquoi?

  5. #5
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Au passage, tu pourrais peut-être utiliser un AddRange aussi ...

    Il y a déjà beaucoup de lignes quand on code, donc si on peut faire plus concis, faut pas hésiter.
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pourrais tu me donner un exemple? J'ai cherché sur le net, mais je n'ai rien trouvé qui marche...

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je crois que ca mérite un petit
    http://plasserre.developpez.com/cours/vb-net/
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Remplir un Datagridview avec une requête Postgres
    Par robertisaline dans le forum VB.NET
    Réponses: 1
    Dernier message: 02/02/2012, 08h24
  2. Remplir une DataGrid depuis une requête ODBC
    Par peephole83 dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 28/07/2010, 12h07
  3. remplir un datagridview depuis une classe
    Par thor76160 dans le forum C#
    Réponses: 2
    Dernier message: 03/04/2010, 14h00
  4. [MySQL] récupération variable depuis une requête pour en déclencher une autre
    Par Baldric de Dol dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/05/2008, 20h35
  5. Procédure pour remplir table et sa table dérivée
    Par C_C dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/12/2005, 20h41

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