DbDataAdapter.Update: kein Acceptchanges

01/03/2009 - 15:57 von Armin Zingler | Report spam
Hallo miteinander,

wieso wird bei der Funktion

DbDataAdapter.Update(ByVal dataRows() As System.Data.DataRow)

nicht Acceptchanges für jede Datarow aufgerufen? Steht so nicht in der Doku.


Ich verstehe das nicht:

'f_DS: ein Dataset
'App.DataAdapters.Dokumente: Ein OleDbDataAdapter

DTAddedModified = f_DS.Dokumente.GetChanges( _
DataRowState.Added Or DataRowState.Modified)

'DTAddedModified enthàlt eine DataRow mit RowState=Added

If Not DTAddedModified Is Nothing Then
App.DataAdapters.Dokumente.Update(DTAddedModified.Select)
End If

Wenn ich nochmal f_DS.Dokumente.GetChanges aurufe, bekomme ich wieder
dieselbe DataRow mit Rowstate=Added. Wieso das denn? Beim Update müsste doch
Acceptchanges aufgerufen worden sein und der Rowstate müsste Unchanged sein.
Was mache ich falsch?


Armin
 

Lesen sie die antworten

#1 Armin Zingler
01/03/2009 - 16:10 | Warnen spam
Armin Zingler wrote:
Hallo miteinander,

wieso wird bei der Funktion

DbDataAdapter.Update(ByVal dataRows() As System.Data.DataRow)

nicht Acceptchanges für jede Datarow aufgerufen? Steht so nicht in
der Doku.

Ich verstehe das nicht:

'f_DS: ein Dataset
'App.DataAdapters.Dokumente: Ein OleDbDataAdapter

DTAddedModified = f_DS.Dokumente.GetChanges( _
DataRowState.Added Or DataRowState.Modified)

'DTAddedModified enthàlt eine DataRow mit RowState=Added

If Not DTAddedModified Is Nothing Then
App.DataAdapters.Dokumente.Update(DTAddedModified.Select)
End If

Wenn ich nochmal f_DS.Dokumente.GetChanges aurufe, bekomme ich wieder
dieselbe DataRow mit Rowstate=Added. Wieso das denn? Beim Update
müsste doch Acceptchanges aufgerufen worden sein und der Rowstate
müsste Unchanged sein. Was mache ich falsch?




Habe es jetzt so gelöst:

Dim RowsAddedModified, RowsDeleted As DataRow()
Dim RowsAddedModifiedArraylist, RowsDeletedArraylist As ArrayList

RowsAddedModifiedArraylist = New ArrayList
RowsDeletedArraylist = New ArrayList

For Each row As DataRow In f_DS.Dokumente.Rows
Select Case row.RowState
Case DataRowState.Added, DataRowState.Modified
RowsAddedModifiedArraylist.Add(row)
Case DataRowState.Deleted
RowsDeletedArraylist.Add(row)
End Select
Next

RowsAddedModified = DirectCast( _
RowsAddedModifiedArraylist.ToArray(GetType(DataRow)), DataRow())

RowsDeleted = DirectCast( _
RowsDeletedArraylist.ToArray(GetType(DataRow)), DataRow())

App.DataAdapters.Dokumente.Update(RowsAddedModified)
App.DataAdapters.DokumenteBenutzer.Update(f_DS.DokumenteBenutzer)
App.DataAdapters.Dokumente.Update(RowsDeleted)


Habe keine Lust und Zeit mehr mich stàndig mit den Unzulànglichkeiten der
Datasets auseinanderzusetzen. So funktioniert es wenigstens.


Armin

Ähnliche fragen