PDA

Ver la Versión Completa : Obtener datos de un datarow marcado como deleted


edgusano
09-08-2005, 18:44:13
Hola a todos!
Mi problema es el siguiente, Un dataset cargo con los datos que se encuentran en la tabla.
Luego comienzo a realizar las ABM sobre este. Cuando el usuario finaliza todas sus ABM este dataset lo retorno, de ahi con el metodo GetChanges() obtengo otro dataset el cual solo contiene las filas(Datarows) que su estado sea diferente de unchanged, es decir para mi caso(added, deleted, modified).
Luego de obtener estos solo estos registros procedo a realizar el acceso a la BD para hacer las ABM, todo transcurre bien hasta que obtengo una fila marcada como deleted, dado que no puedo obtener los datos para asi cargarlos en el llamado del stored procedure que se encarga del borrado, como digo solo sucede con la que esta marcada como deleted.

Hay alguna forma de obtener los datos de esta fila que esta marcada como deleted¿??¿¿?

AdrianD
10-08-2005, 02:33:51
Estoy haciendo mis primeros pasos en .NET pero te podria servir lo siguiente hacer ub select del datarow con la opcion DataViewRowState.Deleted.

edgusano
10-08-2005, 18:44:10
Ya eso lo hago, el problema es que me lanza una excepcion indicandome que no puedo acceder a los datos de esa fila porque esta marcada como deleted,
la forma en como lo hago es la siguiente:
Tengo un DataSet con un DataTable asociado, el cual contiene los siguientes campos Cedula, Nombre el campo cedula es el principal.


Hago un select a la tabla de la base de datos y entonces se carga la información en el DataTable, estos registros que se cargan quedan con el estado Unchanged.
Luego paso a hacer las ABM correspondientes con estos registros.
Ya para enviar las ABM a la base de datos, utilizo lo siguiente:
DataSet dsDatosAbm = dsPrincipal.GetChages();
foreach(DataRow drRegistro in dsDatosAbm.Rows)
{
switch(drRegistro.RowState)
{
case DataRowState.Added:
SalvarDatos(drRegistro);//Metodo que inserta el registro
break;
case DataRowState.Deleted:
BorrarDatos(drRegistro);//Metodo que borra el registro
break;
case DataRowState.Modified:
ModificarDatos(drRegistro);//Metodo que modifica el registro
break;
}
}

pero como les comentaba el problema es que no me deja acceder a la informacion del campo cedula para asi llamar al stored procedure con ese parametro para que haga el borrado de ese registro en la base de datos.

edgusano
16-08-2005, 21:44:06
Bueno, despues de tanto buscar y porque no esperar tambien haber si alguien me daba alguna luz, he resuelto mi problema. He aqui la forma en que lo hice, no se si sera la mas ortodoxa, pero funciona.

Como el mensaje que lanzaba la exepcion decia que no podia acceder a la informacion de una fila marcada como deleted, entonces como en el codigo que les mostre en el post anterior el metodo que se llama BorrarDatos() el cual recibe como parametro la fila que va a ser borrada, entonces en el interior de este metodo simplemente llamo al metodo rejectchanges de esta fila que envio, con esto la fila cambia de estado de deleted a unchanged y en este ultimo estado si se pueden obtener los datos.