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

Windows Forms Discussion :

[DataGridView] Comment lier un DataSet ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut [DataGridView] Comment lier un DataSet ?
    Bonjour,

    Une fois qu'un DataSet est rempli, je fais ceci :

    monDataGridView.DataSource = ds;

    cela dit, je ne trouve aucune méthode pour lier les données (comme bind() ) que faut-il faire ?

    Merci

    OdbcConnection cnx;
    cnx = new OdbcConnection("DSN=test_dev;UID=test;PWD=test;");
    try
    {
    cnx.Open();
    }
    catch(Exception e){
    // code erreur
    }

    OdbcCommand sql;
    OdbcDataAdapter adapt;
    DataSet ds;

    sql = new OdbcCommand("select NomObjet Objet, DescriptionObjet Description from objet");
    adapt = new OdbcDataAdapter(sql);
    ds = new DataSet();

    try
    {
    adapt.Fill(ds);
    }
    catch (Exception e)
    {
    // code erreur
    }

    cnx.Close();

    // Association
    dgvDataSet.DataSource = ds;
    Après débug, je m'aperçoit que mon DataSet est vide ! J'ai du mal à me connecter à ma base de donnée par DSN...

    édit:
    Avec l'Explorateur de bases de données (sous Visual C# 2005 Express) quand je veux "Ajouter une connexion" on me demande :
    - Nom de fichier de base de données (nouveau ou existant) :
    Je ne sais pas quoi renseigner à ce moment là ?

    PS : Je suis sous Vista

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    En WindowsForms, pas besoin de faire un Bind sur ta GridView pour que les données soient bindées.

    Si ton DataSet est vide, il est donc normal que rien ne s'affiche: il faut donc chercher pkoi tu ne récupères rien dedans...

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    En WindowsForms, pas besoin de faire un Bind sur ta GridView pour que les données soient bindées.

    Si ton DataSet est vide, il est donc normal que rien ne s'affiche: il faut donc chercher pkoi tu ne récupères rien dedans...
    En fait j'ai 2 problèmes :
    1) Au boulot la connexion à la base de données ne pose pas de problème, mais le gridview ne se rempli pas ?!

    2) A la maison, je tente de reproduire la même situation, mais je n'arrive pas à me connecter à ma base de données, j'ai ce message :
    test.mdf
    Vous n'avez pas l'autorisation d'ouvrir ce fichier.
    Consultez le propriétaire du fichier ou un administrateur pour obtenir cette autorisation.


    Dans un cas j'utilise les outils professionnels (au boulot) et dans l'autre les version Express (à la maison)... et je dois dire que je maitrise pas trop les outils Express !

    Il y a aussi une autre différence : Au boulot on utilise une connexion (c'est une BDD Sybase ASE) et ici j'utilise l'authentification windows (base SQL 2005 Express), j'arrive même pas à créer une connexion avec login/MdP !

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    string requete = "SELECT NumDossier, NomAssure, PrenomAssure, NumContrat, DateSinistre FROM dbo.Dossier";


    OdbcConnection cnx;
    cnx = new OdbcConnection("DSN=fmbprod2;UID=***;PWD=***;");
    try
    {
    cnx.Open();
    }
    catch (Exception ex)
    {
    // traitement d'erreur
    }

    OdbcDataAdapter adapt;
    OdbcCommand cmd;
    DataSet ds;

    cmd = new OdbcCommand(requete, cnx);
    adapt = new OdbcDataAdapter(cmd);
    ds = new DataSet();

    try
    {
    adapt.Fill(ds); // problème
    }
    catch (Exception ex)
    {
    // traitement d'erreur
    System.Diagnostics.Debug.Print(ex.Message);
    }


    cnx.Close();

    dgvRecherche.DataSource = ds;
    édit:
    Bonjour,

    Mon DataSet se rempli bien maintenant (gros oubli : la connexion) cela dit je n'arrive pas à remplir mon DataGridView avec ?!

    Merci

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Par défaut
    Bonjour,

    Citation Envoyé par Ticoche
    1) Au boulot la connexion à la base de données ne pose pas de problème, mais le gridview ne se rempli pas ?!
    Ok, mais est-ce que le DataSet se rempli ?
    Si oui alors les propriétés DataSource et DataMember de ton
    DataGridView ne sont pas correctement initialisé.
    Tu dois avoir quelque chose du style:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tonDataGridView.DataSource = tonDataSet;
    tonDataGridView.DataMember = "NomDuDataTableDeTonDataSet"

    Citation Envoyé par Ticoche
    2) A la maison, je tente de reproduire la même situation, mais je n'arrive pas à me connecter à ma base de données, j'ai ce message :
    test.mdf
    Vous n'avez pas l'autorisation d'ouvrir ce fichier.
    Consultez le propriétaire du fichier ou un administrateur pour obtenir cette autorisation.
    Et bien là le message semble clair, tu n'as pas les droits pour accéder à la base.

    Citation Envoyé par c#
    cnx = new OdbcConnection("DSN=fmbprod2;UID=***;PWD=***");
    A mon humble avis ton problème vient de ta chaîne de connection.
    Si tu utilises l'authentification intégrée, tu ne dois pas précisé l'identifiant et le mot de passe mais un paramètre dont je ne me rappelle pas. Je ne peux pas trop chercher là, mais ce que je te propose c'est de regarder sur la MSDN pour les chaînes de connection.

    Si tu n'as pas trouvé de réponse, j'essaierai de te répondre ce soir mais d'ici là je pense que d'autres personnes t'auront répondu.
    Bye

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Merci zoaax pour ta réponse.

    Je n'ai jamais utilisé la propriété DataMember et je vais chercher de ce coté.
    Mon DataSet se rempli bien (le débug me le prouve) et je penses que le problème est tellement gros que j'arrive pas à le voir

    Merci encore

    édit: En effet, maintenant que j'ai ajouter cette ligne, mon DataGridView se rempli bien. Merci beaucoup, merci vraiment :
    dgvRecherche.DataMember = "Table";

    Dernière petite question, à quel moment je peux donner un nom à mon DataTable (pour éviter d'utiliser Table par défaut) ? Après ça mon problème sera totalement résolu

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/07/2014, 11h35
  2. Comment lier un dataset avec un jdbtable
    Par djamsilvere dans le forum JBuilder
    Réponses: 1
    Dernier message: 15/12/2009, 12h42
  3. Réponses: 6
    Dernier message: 20/05/2008, 16h35
  4. Réponses: 6
    Dernier message: 27/05/2004, 10h41
  5. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45

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