PDA

Ver la Versión Completa : Problema con TClientDataSet y Transacciones


dieleo
01-09-2006, 02:06:32
Hola a todos.

Tengo un problemita, espero que alguien tenga la respuesta.
Tengo el siguiente codigo

IbTransaction.StartTransaction;
try
ClientDataSet1.ApplyUpdates(0);
ClientDataSet2.ApplyUpdates(0);
ClientDataSet3.ApplyUpdates(0);

ibTransaction.Commit;
except
ibTransaction.RollBack;
end;

Los ClientDataSet estan conectados de la siguiente forma.

IbQuery --> DataSetProvider --> ClientDataSet --> DataSource

===================================================

El problema es que si ocurre un error al actualizar el ClientDataSet2,
realizo un RollBack, corrijo el ClientDataSet2, envio a actualizar
nuevamente, y no actualiza el ClientDataSet1, o sea que no graba la base
de datos y sí graba el ClientDataSet2 y ClientDataSet3.
Me imagino que es porque luego de realizar el ApplyUpdates en
ClientDataSet1, el mismo queda como actualizado.
(Como hago para que esto no ocurra ? )

Aparte para que el ClientDataSet genere un error, para que salga por el
except tuve que levantar una excepcion desde el evento OnUpdateError
del DataSetProvider (que me parece una burres total), porque sino
generaba el error y dejaba grabado el ClientDataSet1 en la base de datos
y por supuesto no tenia grabado el ClientDataSet2 y 3.

Pregunta :
. Si hago un RollBack, no tendria que quedar sin actualizar ?
. Como hago para que el ClientDataSet1 actualice ? Grabe los registros en
la base de datos luego de un RollBack

Podria ser que el ClientDataSet trabaja fuera de la base de datos y no
presta atencion a las transacciones ?

Desde muchas gracias a quien pueda ayudar.