Identische Tabellen zweier Datasets zusammenführen (DataSet.Merge)

21/08/2009 - 23:40 von Karl Heinz | Report spam
Hallo NG,

ich habe ein kleines Problem mit der o.g Funktion. Ich habe zwei
identisch aufgebaute XML-Files inkl. Schema. Diese lese ich jeweils in
ein Dataset ein. Ich möchte die beinhalteten Daten jedoch in den
Tabellen zusammen führen.

dsLev1_2 = xmlDDoc1.DataSet;
dsLev3 = xmlDDoc2.DataSet;

dsLev1_2.Merge(dsLev3);

Nach meinem Verstàndnis müßten nun die Daten aus dsLev3 im Dataset
dsLev1_2 vorhanden sein. Leider werden die Daten aber nicht zusammen
geführt sondern die Daten aus dsLev1_2 werden überschrieben. Probiert
habe ich auch schon das ganze auf Tabellen Ebene zu machen. Immer mit
dem vorgenannten Ergebnis.

Weis vielleicht jemand Rat?

Besten Dank vorab!

Gruß

Karl-Heinz
 

Lesen sie die antworten

#1 Frank Dzaebel
22/08/2009 - 07:41 | Warnen spam
Hallo Karl Heinz,

ich habe ein kleines Problem mit der o.g Funktion. Ich habe zwei
identisch aufgebaute XML-Files inkl. Schema. Diese lese ich jeweils in
ein Dataset ein. Ich möchte die beinhalteten Daten jedoch in den
Tabellen zusammen führen. [...]
Nach meinem Verstàndnis müßten nun die Daten aus dsLev3 im
Dataset dsLev1_2 vorhanden sein.



ja, das ist richtig, sogar gleiche Zeilen würden im Ergebnis
doppelt drin sein.


Leider werden die Daten aber nicht zusammen geführt
sondern die Daten aus dsLev1_2 werden überschrieben.



In folgendem Beipiel befindet sich alles wie gewünscht im ds2.
Ich vermute eine Fehler anderswo in Deinem Quellcode.

// DataSet1 ist ein DataTable mit Spalte:Name und Alter
private void Form1_Load(object sender, EventArgs e)
{
DataSet1 ds1,ds2;
ErstelleDataTable<DataSet1>(out ds1,
"Alf", 11, "Berta", 22, "Caesar", 99, "Emil", 55);
ErstelleDataTable<DataSet1>(out ds2,
"Caesar", 33, "Dora", 44);
ds2.Merge(ds1);
dataGridView1.DataSource = ds2.Tables[0];
}

private void ErstelleDataTable<D>(out D ds, params object[] args)
where D : DataSet, new()
{
ds = new D(); DataTable dt = ds.Tables[0];
for (int i = 0; i < args.Length; i+=dt.Columns.Count)
dt.Rows.Add(args[i], args[i + 1]);
}
______________

Hast Du "ggf." minimal reproduzierbaren Quellcode
und die exakte Beschreibung, was Du benötigst?


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen