Grundlagenfrage, Datatable kopieren

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Grundlagenfrage, Datatable kopieren

    Hallo,

    Mit folgenden Code versuche ich eine Datatable in eine andere zu kopieren...

    VB.NET-Quellcode

    1. Private Sub btn_DAkopieren_Click(sender As System.Object, e As System.EventArgs) Handles btn_DAkopieren.Click
    2. Me.ProgrammDatenSet.NeuDach.Clear()
    3. For Each MydataRow In Me.ProgrammDatenSet.AltDach.Rows
    4. Me.ProgrammDatenSet.NeuDach.ImportRow(MydataRow)
    5. Next MydataRow
    6. End Sub


    Machen tut er was :) er legt mir zwar zweilen an, aber es werden keine Werte übernommen...


    Gruß
    lris

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „lris08“ ()

    du kannst nicht eine Row von der einen Tabelle in eine annere kopieren.

    Erstaunlich, dasses keinen Fehler gibt.

    Du wirst wohl jede Property einzeln setzen müssen, oder etwas mittm ItemArray anstellen - damit kann man einer DataRow auch einen ganzen Satz von Werten zuweisen/abrufen.

    Möglicherweise liegt auch ein Fehler der Datenmodellierung vor, wenn das Bedürfnis entsteht, von einer Tabelle in eine annere, gleichartige zu kopieren.

    Vatter schrieb:

    Für Tabelle kopieren schau mal hier bei Datatable.Copy rein. Es kann sein, dass du vorher mit Datatable.Clone die Tabellenstructur kopieren mußt.


    Nein das nimmt er leider nicht an, da kommt dan "Die Eigenschaft "NeuDach" ist ReadOnly.

    Denke mir, dass dies klar ist- weil die NeuDach ist ja bereits vorhanden im DataSet usw.


    @ErfinderDesRades
    JA finde ich auch, keine Fehlermeldung- habe kein try etc. drinnen ;) nichts dergleichen... komisch... aber naja...

    Wenn ich Dich richtig verstehe, muß ich jede Zeile / jedes Feld einzeln durchlaufen und in die NeuDach einfügen ??
    Habe zwei DataTabel's

    Erstellt im Designer:

    Alt_DT
    Neu_DT

    DT_Alt kommen Eingaben rein, von Alt soll nach Neu kopiert werden.

    Da diese nun im Designer erstellt wurdee und im DatenSet hängen, geht Copy nicht so einfach... Da hat EDR schon Recht.

    Also so funktionierts nicht :

    VB.NET-Quellcode

    1. Private Sub GetClone(ByVal table As DataTable)
    2. ' Get a clone of the original DataTable.
    3. Dim cloneTable As DataTable
    4. Me.ProgrammDatenSet.NeuDach = table.Copy()
    5. ' Insert code to work with clone of the DataTable.
    6. End Sub
    Original Code MSDN

    Mann kann keine DT auf eine bestehende DT aufkopieren, wenn dann reinkopieren... dazu- wir EDR schon sagte einzelne Werte bzw. Einträge...


    EDIT

    Hier mein Ansatz, legt auch zeilen an- aber noch keiner Werte...

    VB.NET-Quellcode

    1. Private Sub btn_DAkopieren_Click(sender As System.Object, e As System.EventArgs) Handles btn_DAkopieren.Click
    2. Me.ProgrammDatenSet.NeuDach.Clear()
    3. For i = 0 To ProgrammDatenSet.AltDach.Rows.Count - 1
    4. Me.ProgrammDatenSet.NeuDach.ImportRow(Me.ProgrammDatenSet.AltDach.Rows(i))
    5. Next
    6. End Sub


    und so übernimmt er mir auch keine Inhalte...

    VB.NET-Quellcode

    1. Dim DataView1 As New DataView()
    2. DataView1 = ProgrammDatenSet.AltDach.DefaultView()
    3. For I = 0 To DataView1.Count - 1
    4. Me.ProgrammDatenSet.NeuDach.ImportRow(DataView1.Item(I).Row)
    5. Next I



    so, jetzt ham ma erstmal alles ausgeschlossen :)....

    EDR ich such jetzt nach ...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „lris08“ ()

    Da die datatable Neudach bereits im Dataset angelegt und somit inkl. Schema vorhanden ist, kannst du sie mit Copy nicht überschreiben. Copy kopiert Tabellenschema und Daten. Daher gehts so net.
    Ich versteh aber des ImportRow net. Wasn das?
    Du müßtest zuerst eine NeuDachNewRow erzeugen und anschließend die Datarows der AltDach duchlaufen. In jedem Durchlauf mußt du dann Feld für Feld die Values von der AltdachRow zur NeudachRow übertragen. Anners wird nix. Auch NeuDachRow = AltDachRow dürfte nicht gehen.

    Edit: Wobei du nach erfolgreicher Kopiererei redundante (doppelte) daten in deinem Dataset hast, was eigentlich unnötig sein dürfte. Wofür brauchst du die identische Datensätze?
    Ich nehme an, dass sich nur bestimmte Werte bei der bearbeitung von alt- nach Neudach ändern. Dann brauchst du ein anneres Datenmodell, was einmal die in beiden Fällen identischen Werte enthält und eine "Dach_ID" und in einer anderen Tabelle Werte alt und neu nebeneinander mit Bezug auf die "Dach_ID".
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: