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)
-   -   Transacciones en FireBird (https://www.clubdelphi.com/foros/showthread.php?t=16409)

El_Raso 26-11-2004 13:34:40

Transacciones en FireBird
 
Hola a Todos... tengo un problema que creo es por falta de conocimiento y me explico:

Antes yo usaba para las conexiones con Interbase el BDE y los TTable he decidido sumarme a la mayoria y dejar el BDE.. Ok eso es solo historia...

Con los componentes del BDE (DataBase, TTable) yo podia abrir una tranzaccion Ej.
Database1.StarTransaction

Y hacer de todo en varias tablas... como una actualizacion de un inventario donde realizo la venta de un producto, actualizo el inventario y demas... y si el usuario despues de cinco articulos cancelaba la factura, pues yo daba un RollBack y ninguna actualizacion se realizaba y todo volvia como estaba al principio de realizar la factura...

Ahora... Cual es mi problema... estoy usando FireBird 1.5 y me conecto a travez de FIBplus 6.0 que son buenisimos... pero me sucede lo siguiente.

Al realizar la misma facturacion tengo dos tablas Factura u DetalleFactura..
Cuando agrago en detalle de factura un articulo sumo usando un query el monto del articulo vendido para encontrar el monto de la factura. El gran problema... hasta que no doy un CommitRetaining en la tabla de DetalleFactura el query no me trae el total de la suma de los articulos... y entonces al dar el commit se graba fisicamente en la tabla... si quiero deshacer todo tengo que hacerlo de forma manual.. porque dando rollback el o los productos que tenia en detalle de factura se quedan...

Como lo hago? hay forma?

Gracias

athlontado 26-11-2004 16:22:04

Primero, tienes que estudiar la forma en la que se trabaja con la arquitectura de dos capas ó Cliente<->Servidor. Cuando tengas eso claro, entenderás que esa arquitectura trae muchas ventajas pero algunos cambios de la filosofía de trabajo en el programador y, en algunos casos, en los usuarios finales.

Segundo, la forma de trabajo del BDE es parecida a la que llevas ahora pero con CachedUpdates, donde los datos se almacenan en la memoria del cliente hasta que se hace un ApplyUpdates. De esa forma, siempre verás los datos con los que estás trabajando en ese momento, sin necesidad de hacer Commit ó RollBack hasta que no finalize toda la operación.


La franja horaria es GMT +2. Ahora son las 17:36:55.

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