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 :

dataadapter & dataset


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut dataadapter & dataset
    Attention c'est CHAUD

    Dans une form j'ai declaré un dataset et un dataadapter afin de les utiliser dans deux fonction de query distincte et dans une fonction d'update

    Mais voila j'ai un comportement bizare !!

    1 Situation normale
    Dans le cas ci apres ma fonction de select utilise un dataset local et l'adapter commun : tout va bien mais ce dataset ne pourra pas etre utilisé dans l'update donc ca ne me sert pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        select2(string selectcmd)
        {
          MySqlDataAdapter adapter = new MySqlDataAdapter();
          adapter.SelectCommand = new MySqlCommand(selectcmd, conn);
          DataSet dsAddr1 = new DataSet();
          adapter.Fill(dsAddr1);
          dgv_addr.DataSource = dsAddr1.Tables[0];
          txb_count.Text = dsAddr1.Tables[0].Rows.Count.ToString();
        }
    2 Situation INCOMPREHENSIBLE

    Dans le cas ci apres ma fonction de select utilise le dataset commun et l'adapter commun :
    Je fais un clear du dataset qui a déja eté utilisé et a servi de datasource a dgv_addr dans un autre select
    Au moment du fill un event row_enter the dgv_addr est genéré il appelle ShowAddrProp qui balance un mesage d'erreur lors du fill

    Chapeau a celui qui peut m'expliquer


    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
        select2(string selectcmd)
        {
          MySqlDataAdapter adapter = new MySqlDataAdapter();
          adapter.SelectCommand = new MySqlCommand(selectcmd, conn);
          dsAddr.Clear();
          adapter.Fill(dsAddr);  // -> event row_enter de dgv_addr et crash dans appel fonction ci apres
          dgv_addr.DataSource = dsAddr.Tables[0];
          txb_count.Text = dsAddr.Tables[0].Rows.Count.ToString();
     
        }
     
        // *******************************************************************************
       void ShowAddrProp(int addrID)
        {
          string selectcmd;
          int j;
          int di;
     
          MySqlDataAdapter adapter1 = new MySqlDataAdapter();
          selectcmd = "SELECT * FROM `containers` where addrID=" + addrID.ToString();
          adapter1.SelectCommand = new MySqlCommand(selectcmd, conn);
     
          // On définit en lieu de stockage et on le rempli avec le résultat de la requête
          DataSet ds1 = new DataSet();
          adapter1.Fill(ds1);  // crash {"There is already an open DataReader associated with this Connection which must be closed first."}
     
          dgv_cont.DataSource = ds1.Tables[0];
        }
    {"There is already an open DataReader associated with this Connection which must be closed first."}

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Countournement sans bien comprendre
    Bonjour,

    En posant le probleme j'ai pensé a qq chose qui fait que ca marche mais sans bien comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        select2(string selectcmd)
        {
          MySqlDataAdapter adapter = new MySqlDataAdapter();
          adapter.SelectCommand = new MySqlCommand(selectcmd, conn);
          dgv_addr.DataSource = null;  // j'a ajouté ceci en pensant que dgv n'allait pas aimer se trouver orphelin
          dsAddr.Clear();
          adapter.Fill(dsAddr);  // maintenant plus de plantage
          dgv_addr.DataSource = dsAddr.Tables[0];
          txb_count.Text = dsAddr.Tables[0].Rows.Count.ToString();
        }

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

    je dirais que c'est tout à fait normal.
    Le but de select2 est d'effectuer une requête SQL dans ta base de données et de charger les résultats dans le dataset dsAddr, n'est-ce pas ?

    Le datagridview dgv_addr est lié au dataset.
    Si tu modifies le dataset, les données sont mises à jour dans le datagridview et l'évènement Row_Enter est appelé.

    Bye

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

Discussions similaires

  1. DataAdapter et DataSet
    Par Nixar dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2008, 19h56
  2. DataAdapter et DataSet
    Par irongomme dans le forum C#
    Réponses: 36
    Dernier message: 29/11/2007, 15h31
  3. probleme avec dataadapter et dataset.
    Par HULK dans le forum ASP.NET
    Réponses: 22
    Dernier message: 11/06/2007, 09h08
  4. dataAdapter Fill (dataSet,"tel");
    Par lion000 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/05/2007, 18h25
  5. [C#] DataAdapter et DataSet
    Par diaboloche dans le forum Accès aux données
    Réponses: 2
    Dernier message: 17/02/2007, 17h12

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