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 :

Comportement du DataSet


Sujet :

C#

  1. #1
    Nouveau membre du Club

    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Points : 36
    Points
    36
    Par défaut Comportement du DataSet
    Bonjour,

    Alors voilà le contexte déjà. Je suis en train de travailler sur du reporting, et j'ai eu besoin d'une source de donnée. J'ai donc choisi un DataSet dans lequel j'ai placé 2 DataTables.

    Je n'ai modifié absolument aucun paramètre du DataSet, et seulement les paramètres correspondant aux colonnes des DataTables (leurs type).

    Le soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    data = new DataSet("Global");
    data.Tables.Add(dataColonne);
    data.Tables.Add(dataValeur);
    Fontionne très bien, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    data = new DataSet("Global");
    data.Tables.Add(dataValeur);
    data.Tables.Add(dataColonne);
    ne fonctionne pas.

    Ma question étant : pourquoi ?

    Merci à celui qui aura une réponse à apporter

  2. #2
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2004
    Messages : 178
    Points : 648
    Points
    648
    Par défaut
    Bonjour,

    Il faudrait qu'on en sache plus, notamment le type de dataColonne et le type de dataValeur.

    Et quelle est l'erreur ?

  3. #3
    Nouveau membre du Club

    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    DataColonne est une dataTable contenant une seul ligne, chaques colonnes possède le type de base.

    DataValeur est une dataTable contenant plusieurs lignes, avec principalement deux types de colonnes, soit des doubles, soit le type de base.

    En gros, je me sert de la première pour générer un entete de tableau et de la seconde pour remplir le tableau.

  4. #4
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2004
    Messages : 178
    Points : 648
    Points
    648
    Par défaut
    Pourrais-tu montrer ton code dans son intégralité ? (Du moins, la partie qui dataset avec déclaration de DataColonne et DataValeur)

  5. #5
    Nouveau membre du Club

    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Pas de soucis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                genererDataTableColonne(); 
                genererDataTableValeur();
     
                data = new DataSet("Global");
     
                data.Tables.Add(dataValeur);
                data.Tables.Add(dataColonne);
    Et voilà les deux fonctions qui génère les dataTable

    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
    29
    30
    31
    32
     
          public void genererDataTableColonne()
            {
                DataRow workRow;
                // Création des colonnes.
                dataColonne = new DataTable("Colonnes");
                dataColonne.Columns.Add("Libelle1");
                dataColonne.Columns.Add("Libelle2");
                dataColonne.Columns.Add("Libelle3");
                dataColonne.Columns.Add("Libelle4");
                dataColonne.Columns.Add("Libelle5");
                dataColonne.Columns.Add("Libelle6");
                foreach (IObjet oN in Objet.Liste)
                {
                    dataColonne.Columns.Add("Libelle_" + oN.LibelleTitre);
                }
     
                // Remplissage des lignes.
                workRow = dataColonne.NewRow();
                workRow["Libelle1"] = "Libelle1";
                workRow["Libelle2"] = "Libelle2";
                workRow["Libelle4"] = "Libelle4";
                workRow["Libelle3"] = "Libelle3";
                workRow["Libelle5"] = "Libelle5";
                workRow["Libelle6"] = "Libelle6";
                foreach (IObjet oN in Objet.Liste)
                {
                    workRow["Libelle_" + oN.Libelle] = oN.Libelle;
                }
                dataColonne.Rows.Add(workRow);
     
            }
    Et la deuxième, un peu plus longue mais sur le même principe :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
            /// <summary>
            /// Construit la dataTable des valeurs.
            /// </summary>
            public void genererDataTableValeur()
            {
                DataRow workRow;
                Dictionary<string, string> dicNut;
                IObjetNumeriqueBase nut;
                // Création des colonnes.
                dataValeur = new DataTable("Valeurs");
                dataValeur.Columns.Add("Libelle1");
                dataValeur.Columns.Add("Libelle2");
                dataValeur.Columns.Add("Libelle3");
                dataValeur.Columns.Add("Libelle4");
                dataValeur.Columns.Add("Libelle5");
                dataValeur.Columns.Add("Libelle6");
     
                dicNutri = new Dictionary<string, string>();
                foreach (IObjet oN in Objet.Liste)
                {
                    dataValeur.Columns.Add(oN.LibelleTitre);
                    if (!(oN is objetBooleen))
                    {
                        if (oN is objetNumeriqueBase)
                        {
                            nut = (ObjetNumeriqueBase)oN;
                            dicNut.Add(oN.LibelleTitre, nut.FormatAffichage);
                        }
                        dataValeur.Columns[oN.LibelleTitre].DataType = System.Type.GetType("System.Double");
     
                    }
                }
                // Remplissage des lignes.
     
                foreach (Objet2 oA in this.ListeO)
                {
                    workRow = dataValeur.NewRow();
                    workRow["var1"] = oA.var1;
                    workRow["var2"] = oA.var2;
                    workRow["var3"] = oA.Sousvar3 != null ? oA.Sousvar3.var3.var1 : String.Empty;
                    workRow["sous-var3"] = oA.Sousvar3 != null ? oA.Sousvar3.var1 : String.Empty;
                    workRow["var4"] = oA.TypeMatiereNut.ToString();
     
                    // Test du type 
                    if (oA is objetReference)
                    {
                        workRow["var5"] = "true";
                        objetReference al;
                        al = (ObjetReference)oA;
                        foreach (ObjetCumul oN in al.ListeObjetCumuls)
                        {
                            try
                            {
                                workRow[oN.ObjetReference.var1Court] = ((double)oN.Valeur).ToString(dicNutri[oN.ObjetReference.var1Court]);
                                Debug.WriteLine(((double)oN.Valeur).ToString(dicNutri[oN.ObjetReference.var1Court]));
                            }
                            catch
                            {
                                workRow[oN.ObjetReference.var1Court] = oN.Valeur;
                            }
                        }
                    }
                    else
                    {
                        workRow["melange aliment"] = "false";
                        foreach (ObjetNonCumul oN in oA.ListeObjetNonCumul)
                        {
                            try
                            {
                                double b;
                                b = Double.Parse("0");
                                double a = Double.Parse(oN.Valeur.ToString());
                                workRow[oN.Nut.var1Court] = a.ToString(dicNutri[oN.Nut.var1Court]);
                                Debug.WriteLine(a.ToString(dicNutri[oN.Nut.var1Court]));
                            }
                            catch
                            {
                                workRow[oN.Nut.var1Court] = oN.Valeur;
                            }
                        }
                    }
                    dataValeur.Rows.Add(workRow);
                }
     
            }

  6. #6
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2004
    Messages : 178
    Points : 648
    Points
    648
    Par défaut
    Je ne peux pas compiler car il me manque des classes, mais juste en lisant, rien ne me saute aux yeux...

    Car tu executes ton code, tu as un message d'erreur du compilateur ?

  7. #7
    Nouveau membre du Club

    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Aucun message d'erreur non
    Et je ne peux pas donner tout les classes, c'est pour un projet au boulot^^

  8. #8
    Nouveau membre du Club

    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Je viens de tester la génération d'un fichier XML à partir du DataSet, dans les deux cas.

    A part la position des deux blocs dans le XMLrien ne change. Le contenu des tables est donc identique.

Discussions similaires

  1. open avec comport
    Par Goldocrack dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/04/2009, 08h12
  2. [VB.net][PostgreSQL & ODBC] DataSet => NO_DAT
    Par rebolon dans le forum Accès aux données
    Réponses: 2
    Dernier message: 28/01/2004, 09h01
  3. [FLASH MX 2004 pro] DATASET, XML, ASP
    Par kenshi dans le forum Flash
    Réponses: 4
    Dernier message: 27/01/2004, 10h38
  4. [Free Pascal] Comportement de Exec
    Par néo333 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 01/11/2003, 17h46
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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