Hallo Leute
bin gerade dabei ein Prog zu schreiben, um Aufträge zu erstellen. Dem User soll es möglich sein, einen Stornoauftrag zu erstellen.
Den Stornoauftrag möchte ich quasi als Duplikat per button click erstellen lassen.
Ich habe dazu ein DataSet mit zwei DataTables im Parent-Child View. Über eine Relation werden mir in der "Child"-Tabelle alle Positionen angezeigt, die zu dem Auftrag gehören.
Wenn ich nun die DataRows kopieren und einen "neuen" Auftrag mit den kopierten Zeilen erzuegen möchte, muss ich zunächst im "Parent" eine neue Zeile hinzufügen.
Die neue Zeile zum Parent hinzufügen klappt. Ich schaffe es leider nicht, die Zeilen für den "Child" aus dem vorherigen Auftrag in den neuen "Stornoauftrag" hinzuzufügen.
Mein Code wie folgt:
DataSet => Gesamtaufträge
DataTable Parent => AlleAufträge
DataTable Child => Einzelaufträge
Bin mir nicht sicher ob das verständlich war. Die zu kopierenden Zeilen werden nicht in den Stornoauftrag eingefügt, da die Zeilen "rowduplicat1" sich immer noch in der bindingsource.current befinden.
Die zeile über "Add" kann ich nur innherlab der Schleife hinzufügen, da diese außerhalb nicht erkannt wird.
Vielleicht ist das alles zu umständlich. Jemand ne Idee wie ich das hinbekomme? Oder gibts eventuell einen viel simpleren Weg?
Bin dankbar für jeden Tip oder Ansatz.
bin gerade dabei ein Prog zu schreiben, um Aufträge zu erstellen. Dem User soll es möglich sein, einen Stornoauftrag zu erstellen.
Den Stornoauftrag möchte ich quasi als Duplikat per button click erstellen lassen.
Ich habe dazu ein DataSet mit zwei DataTables im Parent-Child View. Über eine Relation werden mir in der "Child"-Tabelle alle Positionen angezeigt, die zu dem Auftrag gehören.
Wenn ich nun die DataRows kopieren und einen "neuen" Auftrag mit den kopierten Zeilen erzuegen möchte, muss ich zunächst im "Parent" eine neue Zeile hinzufügen.
Die neue Zeile zum Parent hinzufügen klappt. Ich schaffe es leider nicht, die Zeilen für den "Child" aus dem vorherigen Auftrag in den neuen "Stornoauftrag" hinzuzufügen.
Mein Code wie folgt:
DataSet => Gesamtaufträge
DataTable Parent => AlleAufträge
DataTable Child => Einzelaufträge
VB.NET-Quellcode
- 'Zeile für Parent kopieren und hinzufügen.
- Dim rowduplicat = Gesamtaufträge.Alleaufträge.NewAlleaufträgeRow()
- Dim row = DirectCast(DirectCast(AlleaufträgeBindingSource.Current, DataRowView).Row, Gesamtaufträge.AlleaufträgeRow)
- rowduplicat.ANummer = row.ANummer + " Storno!"
- rowduplicat.Bauvorhaben = row.Bauvorhaben
- rowduplicat.Kunde = row.Kunde
- rowduplicat.Auftragsdatum = row.Auftragsdatum
- AlleaufträgeBindingSource.MovePrevious() ' Da nach dem erzuegen die bindingsource in die nächste Zeile springt, gehe ich wieder eine Zeiel zurück um die Daten für neuen DataRows zu erzeugen.
- Dim row1 = DirectCast(DirectCast(FKAlleaufträgeEinzelaufträgeBindingSource.Current, DataRowView).Row, Gesamtaufträge.EinzelaufträgeRow)
- 'Zeilen für Child hinzufügen.
- For Each drv As DataRowView In FKAlleaufträgeEinzelaufträgeBindingSource.List
- Dim rowduplicat1 = Gesamtaufträge.Einzelaufträge.NewEinzelaufträgeRow()
- rowduplicat1.Kunde = row1.Kunde
- rowduplicat1.Bauvorhaben = row1.Bauvorhaben
- rowduplicat1.ANummer = row1.ANummer
- rowduplicat1.Pos = row1.Pos
- rowduplicat1.Leistung = row1.Leistung
- rowduplicat1.Menge = row1.Menge
- rowduplicat1.Einheit = row1.Einheit
- rowduplicat1.Einheitspreis = row1.Einheitspreis
- rowduplicat1.Auftragsdatum = row1.Auftragsdatum
- Gesamtaufträge.Einzelaufträge.Rows.Add(rowduplicat1)
- FKAlleaufträgeEinzelaufträgeBindingSource.MoveNext()
- Next
- Gesamtaufträge.Alleaufträge.Rows.Add(rowduplicat)
- Gesamtaufträge.Alleaufträge.AcceptChanges()
- Gesamtaufträge.Einzelaufträge.AcceptChanges()
- Gesamtaufträge.Alleaufträge.WriteXml(aufträgekomplett)
- Gesamtaufträge.Einzelaufträge.WriteXml(Kundenauftrag)
Bin mir nicht sicher ob das verständlich war. Die zu kopierenden Zeilen werden nicht in den Stornoauftrag eingefügt, da die Zeilen "rowduplicat1" sich immer noch in der bindingsource.current befinden.
Die zeile über "Add" kann ich nur innherlab der Schleife hinzufügen, da diese außerhalb nicht erkannt wird.
Vielleicht ist das alles zu umständlich. Jemand ne Idee wie ich das hinbekomme? Oder gibts eventuell einen viel simpleren Weg?
Bin dankbar für jeden Tip oder Ansatz.