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

C# Discussion :

relier un datagridview à une base de donnée


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut relier un datagridview à une base de donnée
    Bonjour,
    j'utilise un datagridview, et j'ai une base de donnée ou son stockées mes valeurs.
    J'aimerai pouvoir extraire les valeur de la base sur le datagridview sachant bien que j'utilise cette requête pour l'extraction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string strRequete = "SELECT [Valeur],[Unité],[Description] FROM Variable_open where Valeur=@nom";
    @nom:représente la première colonne de mon datagridview. et je ne sais pas comment faire.

    Merci pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Un petit tour sur les tutos ADO.NET ne te fera pas de mal.

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Citation Envoyé par ostenhard Voir le message
    Bonjour,

    Un petit tour sur les tutos ADO.NET ne te fera pas de mal.
    Ou un petit tour sur la MSDN

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Dans le cours, il ne traite que le cas d'un datagridview liée, moi j'utilise un datagridview non liée.

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Oui, je crois justement que l'article de la MSDN explique exactement ce que tu souhaites faire.

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    ce n'est pas exactement ce que je faire.
    je pense qu'on utilisant l'exemple d'un richtextbox, vous verrez mieux ce que je veux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     while (oReader2.Read())
                           {
                               richTextBox92.Text = oReader2.GetValue(2).ToString();
                               richTextBox54.Text = oReader2.GetValue(3).ToString();
                          }oReader2.GetValue(4).ToString();
    j'aimerai pouvoir la même chose avec mon datagridview
    Vous voyez un peu ce que je veux faire?

  7. #7
    Membre régulier Avatar de Klivor
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 143
    Points : 100
    Points
    100
    Par défaut
    Tu le fais en mode connecté ou déconnecté ?

  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    En mode connecté

  9. #9
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Je ne comprends pas ce que tu veux !

    Quel est le problème de la solution suivante ?

    1. Exécution de la requête à partir de la requête en faisant un ExecuteReader
    2. Remplissage d'une DataTable à partir des résultats
    3. Bind de la DataTable en affectant la datasource du datagridview


    Il faut savoir que la DataTable possède une méthode Load permettant de charger les résultats d'un DataReader directement :

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Je ne veux pas lire toute la table de la base de données, juste un ou deux champs de la base selon le besoin et l'afficher sur un cellules. le reste des cellules je les remplirai à la main

  11. #11
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Renseigne toi sur les trois étapes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    - SELECT CHAMP1, CHAMP2 FROM MATABLE
    - PASSAGE DANS UN DATAREADER ET AJOUT DES LIGNES RETOURNEES DANS UN DATATABLE
    - BINDING DU DATATABLE A LA GRID
    A mon avis, il faut vraiment que tu revoies la base. Parce que là tu sembles un peu paumé sur les principes de base.

  12. #12
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Voici le code que j'utilise
    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
    string strConnexion = " Server =CDITC136YH\\SQLEXPRESS;Database=Synclac;Trusted_Connection=True";
                    string strRequete = "SELECT [Variable],[Valeur],[Unité],[Description] FROM valeur_save where [variable]=@nom ";
     
                    SqlConnection oConnection = new SqlConnection(strConnexion);//La connectivité à SQLServer est assuré grace à SQLconnection
                   SqlCommand oCommand = new SqlCommand(strRequete, oConnection);//Executer les requêtes
                    oCommand.Parameters.Add("@nom", SqlDbType.VarChar);
                    oCommand.Parameters["@nom"].Value = dataGridView1.Columns[0].ToString();
                    oConnection.Open();
                  SqlDataReader oReader = oCommand.ExecuteReader();
    while(oReader.Read()){
     
    dataGridView1.rows[1].add(oReader.GetValue(1).ToString();)
     
     
    }
    Mais ça ne marche pas

    @nom: représente toutes les valeurs de la colonne 0 pour chaque ligne je dois afficher son unité et sa description à coté(la description et l'unité sont stockée dans la base)

  13. #13
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Je ne vois vraiment pas ce que tu souhaites réellement faire.

    Dire que ça ne marche pas ne veut rien dire, soit tu as une erreur alors dis nous laquelle, soit ça ne fait pas ce que tu souhaites et là il faudra retoucher le code qu'il le fasse.

    Et utiliser une DataTable ne veut pas dire que tu liras toute la table de la BDD, DataTable n'est qu'une classe contenant des données sous forme de table (et encore, c'est plus une collection de lignes avec plein d'autres informations autour)

  14. #14
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Ça ne fait pas ce que je veux c'est le mot exacte et vraiment j'ai essayé de travailler avec un dataset,je réussi à extraire toute la table sans problème,
    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
     string strConnexion = " Server =CDITC136YH\\SQLEXPRESS;Database=Synclac;Trusted_Connection=True";
                 string strRequete = "SELECT [Unité],[Description] FROM valeur_save where [Variable]=@nom";
     
                    SqlConnection oConnection = new SqlConnection(strConnexion);//La connectivité à SQLServer est assuré grace à SQLconnection
                   SqlCommand oCommand = new SqlCommand(strRequete, oConnection);//Executer les requêtes
                   oCommand.Parameters.Add("@nom", SqlDbType.VarChar);
                   oCommand.Parameters["@nom"].Value = dataGridView1.Columns[0].ToString();
                    oConnection.Open();
              //mes paramétres @nom
                    dataGridView1.Rows.Add("d");
                    dataGridView1.Rows.Add("e");
                    dataGridView1.Rows.Add("f");
                    dataGridView1.Rows.Add("g");
     
                    DataSet ds = new DataSet();
                    SqlDataAdapter da = new SqlDataAdapter(strRequete, oConnection);
                    da.Fill(ds);
                    dataGridView1.DataSource = ds.Tables[0];
    j'ai une erreur au niveau de ma requête : le paramètre @nom n'est pas déclarée et je n'arrive pas à retrouver comment on déclare un paramètre dans un dataset

  15. #15
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Modifies un peu ton code comme indiqué ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string nom = dataGridView1.Columns[0].ToString();
    oCommand.Parameters["@nom"].Value = nom;
    Mets un point d'arrêt sur oCommand.Parameters["@nom"].Value = nom; et dis nous quelle est la valeur de la variable "nom" sur la ligne précédente.

  16. #16
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    J'ai toujours la même erreurs et la valeurs est initialisées à 0.
    j'ai un petit problème au niveau de l'affichage je pense que ça peut être la raison de l'erreur: moi j'ai déjà créer un tableau et je l'ai formater, quand j’exécute cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dataGridView1.DataSource = ds.Tables[0];
    ça me crée de nouvelle colonne, sachant bien que j'ai déjà créer des colonne et je veux remplir les colonnes que j'ai créer et formater.

    Désolé si je vous soûlé avec mes questions tout le temps mais vraiment j'ai personne pour m'aider.
    Merci pour tout ceux qui m'ont répondu et je m'excuse pour ma mes mauvaises explication car je parle pas bien français.

  17. #17
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Pas sûr de bien comprendre, mais cela signifie donc que ton paramètre "@nom" vaut "0" et donc probablement que ta requête ne te ramène aucune donnée.
    Normal donc que la grid n'affiche rien.

    Modifie, dans ta requête ton paramètre "@nom" pour lui donner une valeur en dur (valeur qui doit exister dans ta base de données).

    Ex :
    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
    string strConnexion = " Server =CDITC136YH\\SQLEXPRESS;Database=Synclac;Trusted_Connection=True";
                 string strRequete = "SELECT [Unité],[Description] FROM valeur_save where [Variable]=@nom";
     
                    SqlConnection oConnection = new SqlConnection(strConnexion);//La connectivité à SQLServer est assuré grace à SQLconnection
                   SqlCommand oCommand = new SqlCommand(strRequete, oConnection);//Executer les requêtes
                   oCommand.Parameters.Add("@nom", SqlDbType.VarChar);
                   oCommand.Parameters["@nom"].Value = "toto";
                    oConnection.Open();
              //mes paramétres @nom
                    dataGridView1.Rows.Add("d");
                    dataGridView1.Rows.Add("e");
                    dataGridView1.Rows.Add("f");
                    dataGridView1.Rows.Add("g");
           
                    DataSet ds = new DataSet();
                    SqlDataAdapter da = new SqlDataAdapter(strRequete, oConnection);
                    da.Fill(ds);
                    dataGridView1.DataSource = ds.Tables[0];
    Bien sûr, "toto" doit être un nom qui existe dans ta base de données. Passe ensuite en débug, et dis nous ce que tu as dans ton dataset.

  18. #18
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Dans ce cas ça marche.
    Moi je veux traiter par exemple quant l'utilisateur veut afficher une dizaine de variable déjà stocker dans la base, il va pas écrire à chaque fois la requête.
    donc j'ai supposé que c'est valeur, il va les écrire sur la datagridview dans la colonne 0, après le système va y aller chercher dans la base la description et l'unité correspondante à chaque valeur, et les afficher dans les colonnes que j'ai créer: unité (colonne 2) et description(colonne3).

    Si l'utilisateur veut entrer de nouvelle variable dans la base il doit les saisir dans le datagridview avec l'unité et la description, c'est pour cela que je ne veux pas que le système me crée de nouvelle colonne pour afficher l'unité et la description.

    J’espère que j'ai bien expliquer mon projet.

  19. #19
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Citation Envoyé par kensem Voir le message
    Dans ce cas ça marche.
    C'est donc que le problème vient de la façon dont tu récupères la valeur de ton paramètre "@nom".
    Citation Envoyé par kensem Voir le message
    Moi je veux traiter par exemple quant l'utilisateur veut afficher une dizaine de variable déjà stocker dans la base, il va pas écrire à chaque fois la requête.
    donc j'ai supposé que c'est valeur, il va les écrire sur la datagridview dans la colonne 0, après le système va y aller chercher dans la base la description et l'unité correspondante à chaque valeur, et les afficher dans les colonnes que j'ai créer: unité (colonne 2) et description(colonne3).
    Cela revient à ce que je te dis plus haut :
    oCommand.Parameters["@nom"].Value = dataGridView1.Columns[0].ToString(); ne renvoie pas un nom correct.
    Il faut plutôt passer par quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oCommand.Parameters["@nom"].Value = dataGridView1.rows[x].cell[y].ToString()

    Citation Envoyé par kensem Voir le message
    J’espère que j'ai bien expliquer mon projet.
    Désolé, mais non, ce n'est pas du tout clair...

    Enfin, si je comprends bien :
    - ta grid à x lignes
    - la première colonne de chaque ligne est éditable et l'utilisateur peut y saisir un nom
    - au clic sur je ne sais quel bouton, tu veux qu'une requête soit lancée pour récupérer les données concernant les x fournisseurs présents sur chaque ligne.
    - à la récupération des données tu veux mettre à jour le grid avec les données récupérées

    c'est bien ça ?

  20. #20
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    Enfin, si je comprends bien :
    - ta grid à x lignes
    - la première colonne de chaque ligne est éditable et l'utilisateur peut y saisir un nom
    - au clic sur je ne sais quel bouton, tu veux qu'une requête soit lancée pour récupérer les données concernant les x fournisseurs présents sur chaque ligne.
    - à la récupération des données tu veux mettre à jour le grid avec les données récupérées

    c'est bien ça ?
    Oui exactement

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/12/2009, 15h00
  2. Ouvrir une base de donnée Access dans un datagridView
    Par Kemanke dans le forum C++/CLI
    Réponses: 0
    Dernier message: 06/04/2009, 08h57
  3. affiché une base de donnée dans un dataGridView
    Par abbd dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/01/2008, 11h01
  4. relier flash avec une base de donnée
    Par toufik1986 dans le forum Flash
    Réponses: 1
    Dernier message: 18/12/2007, 19h22
  5. menu deroulant en jsp relier a une base de donnée mysql?
    Par jenga dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 11/04/2006, 16h35

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