DataSet

Résolu
Signaler
Messages postés
65
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 mars 2010
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
-
bonjour,

Je voudrais savoir comment faire pour mettre une ligne d'enregistrement ce trouvant dans un DataSet dans un autre DataSet qui a la meme structure ?
J'ai essaye avec merge mais ca ne fonctionne pas il m'ajoute la DataSet dans l'autre si bien que je me retrouve avec deux table a l'interieur de la dataset ... "dataSet.Merge(dataSet2);"

merci !!

8 réponses

Messages postés
65
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 mars 2010
1
Je viens de trouver une solution :

                DataRow test = data.Tables[0].NewRow();
                for (int i = 0; i < dataSet.Tables[0].Rows[0].ItemArray.Length; i++)
                {
                    if (!(dataSet.Tables[0].Rows[0].ItemArray[i] is System.DBNull))
                        test[dataSet.Tables[0].Rows[0].Table.Columns[i].ColumnName] = dataSet.Tables[0].Rows[0].ItemArray[i];
                }

                data.Tables[0].Rows.Add(test);

Voila ;-)

merci encore Bidou !
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Voui c'est ce que je te proposais juste un post plus haut ;-)

<hr size="2" />VC# forever
Messages postés
65
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 mars 2010
1
j'ai essaye ausi ce genre de chose mais rien n'y fais:
    data.Tables[0].Rows.Add(dataSet.Tables[0].Rows[0]);

Il me dis que: "Cette ligne appartient deja a une autre Table"
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Salut,
Merge veut dire fusionner et ce n'est pas ce que tu veux faire.
Tu veux juster ajouter une ligne d'une datatable d'un dataset, dans une autre datatable.
Donc tu peux faire : myDataTable.Rows.Add(myOtherDataTalbe.Rows[x]
);

<hr size="2" />VC# forever
Messages postés
65
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 mars 2010
1
Merci pour la rapidite de ton message !
donc voici ce que j'ai fais:

                DataTable test = new DataTable("Toto");
                test = dataSet2.Tables[0];
                dataSet.Tables[0].Rows.Add(test.Rows[0]);

mais j'ai toujours ce fichu message d'erreur me disant: "Cette ligne appartient deja a une autre Table"
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Tu peux faire un Clone de la DataTable, mais niveau performance c'est pas top (test = dataSet2.Tables[0].Clone();)
Sinon, un peu plus long à coder mais sûrement meilleur en terme de performance, tu peux lire toutes ta ligne (cellule par cellule) et insérer ça dans ton autre DataTable...

<hr size="2" />VC# forever
Messages postés
65
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 mars 2010
1
Clone te permet juste de copier la strcuture, les schemas et les contraintes de la DataTable il ne mets pas les enregistrements .. :-(

En ce qui concerne le deuxieme cas je n'y arrive toujours pas toujours le meme message d'erreur:

                DataTable resultTable = dataSet.Tables[0].Clone();
                foreach (DataRow row in rows)
                    resultTable.ImportRow(row);
                dataSet.Tables[0].Rows.Add(resultTable.Rows[0]);
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Pour la 2ème solution, on ne c'est pas compris...
Je disais de faire qqch comme ceci :


DataRow dr = mytable.Rows[0];
object o1 = dr[0];
object o2 = dr[1];
// Le mieux c'est peut etre de faire une boucle pour ça


Et ensuite tu fais l'insertion cellule par cellule dans ton autre table...


<hr size="2" />




VC# forever