Announcement

Collapse
No announcement yet.

dataset.getchanges

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • dataset.getchanges

    Hallo,
    ich habe ein recht merkwürdiges Ergebnis bei der Anwendung von Dataset.GetChanges(). Ausgangssituation:

    - Dataset1 wird gefüllt über ein Merge mit anschließendem AcceptChanges
    - eine Zeile wird über ein Datagridview geändert
    - Dataset2 = Dataset1.GetChanges() ohne RowState - Angabe
    - Dataset2 wird an eine Funktion übergeben in der neue, geänderte und
    gelöschte Zeilen getrennt weiterbearbeitet werden sollen
    - gelöschte Zeilen: TransferDataset=Dataset2.GetChanges(DataRowState.D eleted)
    ->TransferDataset is Nothing da keine Zeile gelöscht wurde
    - geänderte Zeilen:
    TransferDataset=Dataset2.GetChanges(DataRowState.M odified)
    ->TransferDataset isnot Nothing - geänderte Zeile ist in der entsprechenden Tabelle
    - neue Zeilen:
    TransferDataset=Dataset2.GetChanges(DataRowState.A dded)
    ->TransferDataset isnot Nothing - es wird die gleiche Zeile wie im Fall 2 zurückgegeben

    Das bringt natürlich beim Update der Datenbank einen Fehler, wenn versucht wird eine bereits vorhandene Zeile erneut einzufügen.
    Hat vielleicht jemand eine Idee was da schief läuft?

    Vielen Dank im Voraus
    Conny

  • #2
    Dataset1 wird gefüllt über ein Merge mit anschließendem AcceptChanges
    Du bist dir sicher das deine Datenmenge einen eindeutigen PrimaryKey hat und du nicht nach dem Merge Duplikate des selben Datensatzes im Dataset hast?

    - Dataset2 = Dataset1.GetChanges() ohne RowState - Angabe
    Wieviele Datensätze hast du nun in Dataset2? Mehr als einen?

    ->TransferDataset isnot Nothing - es wird die gleiche Zeile wie im Fall 2 zurückgegeben
    Eher unwahrscheinlich. Die DataRowState(s) sind keine Flags und eindeutig unterscheidbar. Ein Datensatz kann also nicht gleichzeitig Modified und Added sein. Was ich mir aber vorstellen kann ist das du es hin bekommen hast 2 Datensätze mit gleichen Daten aber unterschiedlichem RowState zu haben.

    Comment


    • #3
      Hallo Ralf,
      danke für die Antwort.
      Es gibt natürlich einen eindeutigen PK.
      Nach Dataset2 = Dataset1.GetChanges() ohne RowState - Angabe
      lasse ich mir alle Zeilen mit ihrem Rowstate anzeigen. Es ist nur eine Zeile in der betreffenden Tabelle enthalten.
      Nach TransferDataset=Dataset2.GetChanges(DataRowState.A dded)
      hab ich mir das TransferDataset im Debugger angesehen. In der Tabelle befindet sich eine Zeile und erstaunlicherweise hat dies Zeile den Rowstate Modified (16). Das finde ich ja nun ganz verwunderlich. Also es wird nicht die geänderte Zeile mit Rowstate Added zurückgegeben sonder mit Rowstate Modified.
      Wie siehst du die Sache nun?

      Gruß Conny

      Comment

      Working...
      X