Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Coomit = Applyupdate (https://www.clubdelphi.com/foros/showthread.php?t=56177)

eduarcol 09-05-2008 15:28:23

Coomit = Applyupdate
 
Tengo un serio inconveniente, estoy trabajando con los componentes Zeos, siempre he manejado las transacciones con Cacheupdate, ahora he tratado de agregar en un script o ZSqlProcessor una serie de instrucciones para que se ejecuten he trabajado con commit y rollback, en resumen esto es lo que tengo:

sqScript = TZSQlProcessor;

Código Delphi [-]
sqScript.Script.Clear;
//Genera el pago
sqScript.Script.Add('Insert into Pagos (Numero, cliente, monto) values (1, 'Eduardo', 1000);');
//Actualiza el saldo
sqScript.Script.Add('update Saldos set MontoCancelado = MontoCancelado + 1000 where cliente = ''Eduardo'';');
sqScript.Script.Add('Commit;');
try
   sqScript.Execute;
except
   sqScript.Script.Clear;
   sqScript.Script.Add('Rollback;');
   sqScript.Execute;
end;

el codigo funciona muy bien, el registro se graba o se devuelve la transaccion, pero cuando voy a abrir otro query me sale un error:

Cita:

Invalid Transaction handle(Start Transacion implicit)
tengo que cerrar el sistema y volverlo a abrir para que funcione.

Que desventajas o ventajas puede tener el metodo de cacheupdate??, funcionaria igual que Commit y Rollback??

eduarcol 14-05-2008 15:02:46

bueno, inevitablemente tendre que cambiar de componente, por el momento paso a los IBX :(

egostar 14-05-2008 18:04:08

Cita:

Empezado por eduarcol (Mensaje 286577)
bueno, inevitablemente tendre que cambiar de componente, por el momento paso a los IBX :(

Vamos amigo [eduarcol] esa cara de tristeza se te quitará cuando comiences a usarl los IBX :), por ahí vendrán algunos que te recomendarán usar otros, así que manten tu mente abierta a todas las opiniones, solo te puedo comentar que el mejor componente es el que hace lo que necesitas, si, si, ya se que ADO puede ser otra opción, pero en lo personal IBX ha cubierto todas mis espectativas, claro está que no son muy complejas :D

Salud OS

eduarcol 14-05-2008 18:18:32

Cita:

Empezado por egostar (Mensaje 286618)
Vamos amigo [eduarcol] esa cara de tristeza se te quitará cuando comiences a usarl los IBX :), por ahí vendrán algunos que te recomendarán usar otros, así que manten tu mente abierta a todas las opiniones, solo te puedo comentar que el mejor componente es el que hace lo que necesitas, si, si, ya se que ADO puede ser otra opción, pero en lo personal IBX ha cubierto todas mis espectativas, claro está que no son muy complejas :D

Salud OS

Hombre pero si mi cara de tristeza no es por utilizar las IBx, mucho menos, mi cara es por tener que cambiar todo el codigo de dos aplicaciones que son las que llevo ahorita en desarrollo, las que ya estan en produccion ni soñando que lo voy hacer...

Gracias que trabajo con herencia :D:D y datasource :p

tefots 15-05-2008 09:32:23

creo que en vez de

sqScript.Script.Add('Commit;');

debes poner

sqScript.Script.Add('Commit retain;');


el problema debe ser que al hacer commit ,cierras la transaccion por defecto que maneja el zeos , y por eso luego casca.
si hicieran un commit retaining , la transaccion no la cierra , y evitarias el problema.

saludos.

eduarcol 15-05-2008 15:41:02

Cita:

Empezado por tefots (Mensaje 286800)
creo que en vez de

sqScript.Script.Add('Commit;');

debes poner

sqScript.Script.Add('Commit retain;');


el problema debe ser que al hacer commit ,cierras la transaccion por defecto que maneja el zeos , y por eso luego casca.
si hicieran un commit retaining , la transaccion no la cierra , y evitarias el problema.

saludos.

Gracias por el dato, tan pronto llegue a la oficina lo pruebo a ver que tal... pues tiene mucha logica, y son las cosas que uno dice "Como no probe eso antes" :D

eduarcol 03-06-2008 21:18:37

si funciona, el truco es el commit retain


La franja horaria es GMT +2. Ahora son las 04:51:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi