Modificar filas añadidas a un DataSet

08/07/2004 - 12:26 por Jose Egea | Informe spam
Hola a todos:
Tengo un DataSet al cual se le han añadido unos registros. Antes de
actualizar la BD accedo a las filas añadidas y modifico un campo a partir de
unos cálculos y después hago el AccepChanges del dataset temporal, tras el
cual hago los INSERT con un ExecuteNonQuery de esas filas.
With ds
If .HasChanges Then
Dim tempDS As DataSet = .GetChanges(DataRowState.Added)
If Not IsNothing(tempDS) Then
Dim iContador As Integer = 0
For Each row as DataRow In tempDS.Tables(0).Rows
tempDS.Tables(0).Rows(iContador)("Calculo")
=iContador*
iContador += 1
Next
tempDS.AcceptChanges()
For Each row In tempDS.Tables(0).Rows
InsertaDatos(row)
Next

El caso es que funciona correctamente pero no se me actualizan los datos del
campo "Calculo" en el DataSet ds, con lo que tengo que recargar el Dataset
cada vez.
¿Como puedo recuperar la alguna referencia a la fila en el dataset ds desde
la fila añadida en el dataset temporal de filas añadidas para poder
actualizar el campo "Calculo"?

Gracias por anticipado.
 

Leer las respuestas

#1 Tristan
09/07/2004 - 12:08 | Informe spam
No se si comprendo demasiado lo que estás haciendo.

Lo que yo haría es utilizar un DataView, en lugar del
GetChanges, que como has comprobado devuelve una copia de
las filas y no una referencia.

If ds.HasChanges Then
Dim vista As new DataView(ds.Tables(0))
vista.RowStateFilter = DataViewRowState.Added
If vista.Count > 0 Then
Dim iContador As Integer = 0
For Each fila as DataRowView In vista
fila("Calculo") =iContador*
iContador += 1
Next
'tempDS.AcceptChanges() ' Para qué?


Y ya, por último, el Inserta Datos lo harás también sobre
la vista. Aunque no comprendo por qué no dejas que el
Update del DataAdapter haga todo el trabajo.

Preguntas similares