Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-11-2004
El_Raso El_Raso is offline
Miembro
 
Registrado: oct 2003
Posts: 135
Poder: 21
El_Raso Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 26-11-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Poder: 20
athlontado Va por buen camino
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.
__________________
Óscar Salvador Páez
Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:37:49.


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
Copyright 1996-2007 Club Delphi