DbExpress - Transacciones - más de un clientDataSet
Hola foro !!!
Estoy trabajando con D7, PostgreSql y utilizo dbexpress.
Quisiera saber como trabajan uds. cuando tienen varios clientDataSet y desean que todos o ninguno se actualice.
Supongo que para esto se tienen que utilizar las transacciones. Lo que he hecho es lo siguiente:
var TD: TTransactionDesc;
begin
if not SqlConnection1.InTransaction then
begin
TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
SqlConnection1.StartTransaction(TD);
try
client1.ApplyUpdates(0);
client2.ApplyUpdates(0);
SqlConnection1.Commit(TD);
except
SqlConnection1.Rollback(TD);
end;
end;
end;
Lo he probado y funciona !!! solo un detalle que no entiendo ... si el client1 está ok y el client2 está con error, el 'commit' es el que resuelve todo y no se actualiza ninguno de los 2 client. Es decir que nunca se ejecuta el RooBack pero igualmente no graba nada (ninguno de los 2 client).
Me gustaría que me aconsejen como suelen trabajar uds. cuando tienen que actualizar varios ClientDataSet con una misma transacción.
Gracias anticipada por la ayuda.
__________________
Carlos Marí
|