verwendetes Datenbanksystem: <SQL Server 2002>
Hi,
ich habe hier folgenden fehlerhaften Code. Es gibt regelmässig eine Exception "diese Zeile gehört bereits zu einer Tablelle":
private void Compare(DataTable DtResult)
{
DataTable doubsDT = new DataTable();
if (String.Compare(actualFIRST, DtResult.Rows[i + 1]["Firstname"].ToString())==0)
{
// Hier gibt es den Fehler
doubsDT.Rows.Add(ccl.DtResult.Rows[i]);
}
}
Nun, ich weiss dass diese Zeile zu einer Tabelle gehört- ich will diese Spezielle Zeile ja in die Neue Tabelle hineinkopieren....warum darf ich das nicht so einfach?
Hallo Getränke Hoffmann,
Du kopierst das Objekt, also die Referenz in eine neue Tabelle. Das heißt, dass die Row zu zwei Tabellen gehört und das ist natürlich nicht machbar, weil nicht eindeutig.
Du musst die Row clonen bzw. eine neue mit den gleichen Daten erstellen.
Gruß,
Fabian
Hilft auch nichts, das gibt den gleichen Fehler:
DataRow drow = doubsDT.NewRow();
drow = DtResult.Rows[i];
doubsDT.Rows.Add(drow);
Hallo Getränke Hoffmann,
damit machst Du das gleiche, wie in Deinem ersten Post! Du kopierst nur die Referenz des Objekts und damit steht in beiden Variablen die gleiche Row!
Du musst eine neue Row erzeugen und die Daten der ersten in die neue kopieren, also Spalte für Spalte. Evtl. gibt's auch eine Clone-Methode, die das für Dich erledigt.
Gruß,
Fabian
Nein, die gibt es natürlich nur für die ganze Tabelle...
doubsDT.ImportRow(ccl.DtResult.Rows[i]);
Hab keine Ahnung, ob die Row dadurch kopiert wird oder aus der Alten DataTable entfernt und in die neue eingefügt wird.
Danke, das klappt!
EDIT: Nee, klappt doch nicht, es wird eine leere Tabellenzeile eingefügt.
Seltsam. Der Gesamte ORM unserer Firma baut darauf auf. Und läuft.
Ist die DataRow vielleicht leer? (schon vor dem Import)
Hallo,
versuche doch mal folgendes:
doubsDT.Rows.Add(ccl.DtResult.Rows_.ItemArray);
Das müsste klappen.
Viele Grüße
Olaf