Problemas al actualizar con dataadapter

27/03/2006 - 10:39 por solusoft | Informe spam
Hola a todos.

Tengo un mantenimiento en Winforms, y utilizo un DataAdapter para realizar
las actualizaciones a la base de datos.

Mas o menos hago algo así:

System.Data.DataRow dr = null;
dr = dsMantenimiento.Tables[indiceTable].Rows[0];

dr.BeginEdit();

dr["DS_TITULO"] = DS_TITULO;
dr["NM_CANTIDAD"] = NM_CANTIDAD;
dr["FC_ENTRADA"] = vSqlFC_ENTRADA;
dr["NM_ESTADO"] = vSqlNM_ESTADO;
dr["CD_COPIA"] = vSqlCD_COPIA;
dr["NM_PRECIO"] = vSqlNM_PRECIO;

dr.EndEdit();

...
int numFilas = ds.Tables[indiceTable].Rows.Count;

bool tieneCambios = ds.HasChanges();

// No actualizar si no se producen cambios en el Dataset
if (!tieneCambios) return;

System.Data.DataSet dsCambios = ds.GetChanges();

int numActualizados = da.Update(dsCambios); // DataTable de nombre "Table"


numFilas = ds.Tables[indiceTable].Rows.Count;

ds.Merge(dsCambios, false);

ds.AcceptChanges();

numFilas = ds.Tables[indiceTable].Rows.Count;
Console.WriteLine("Num filas " + numFilas);


El caso que después de llamar a AcceptChanges(), el número de filas del
datatable (del ds) aumenta en uno, cuando se supone que he modificado sólo la
fila de la tabla. No entiendo porqué añade otra fila en el datatable.

Por qué puede ser ?

Saludos y gracias de antemano.
 

Leer las respuestas

#1 Diego \(DCD\)
27/03/2006 - 11:59 | Informe spam
Hola,

creo que no necesitas hacer el Merge de la fila cambiada, si no que al
referenciarla todos los cambios que haces en el DataRow se reflejan también
en el DataSet. Prueba a quitar el ds.Merge(dsCambios, false); y hacer
directamente del AcceptChanges();

Un saludo.


"solusoft" escribió en el mensaje
news:
Hola a todos.

Tengo un mantenimiento en Winforms, y utilizo un DataAdapter para realizar
las actualizaciones a la base de datos.

Mas o menos hago algo así:

System.Data.DataRow dr = null;
dr = dsMantenimiento.Tables[indiceTable].Rows[0];

dr.BeginEdit();

dr["DS_TITULO"] = DS_TITULO;
dr["NM_CANTIDAD"] = NM_CANTIDAD;
dr["FC_ENTRADA"] = vSqlFC_ENTRADA;
dr["NM_ESTADO"] = vSqlNM_ESTADO;
dr["CD_COPIA"] = vSqlCD_COPIA;
dr["NM_PRECIO"] = vSqlNM_PRECIO;

dr.EndEdit();

...
int numFilas = ds.Tables[indiceTable].Rows.Count;

bool tieneCambios = ds.HasChanges();

// No actualizar si no se producen cambios en el Dataset
if (!tieneCambios) return;

System.Data.DataSet dsCambios = ds.GetChanges();

int numActualizados = da.Update(dsCambios); // DataTable de nombre "Table"


numFilas = ds.Tables[indiceTable].Rows.Count;

ds.Merge(dsCambios, false);

ds.AcceptChanges();

numFilas = ds.Tables[indiceTable].Rows.Count;
Console.WriteLine("Num filas " + numFilas);


El caso que después de llamar a AcceptChanges(), el número de filas del
datatable (del ds) aumenta en uno, cuando se supone que he modificado sólo
la
fila de la tabla. No entiendo porqué añade otra fila en el datatable.

Por qué puede ser ?

Saludos y gracias de antemano.

Preguntas similares