Ver Mensaje Individual
  #9  
Antiguo 29-10-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Reputación: 22
athlontado Va por buen camino
Thumbs up

En este caso concreto, creo que sería lógico que usaras dos componentes IBTransaction en el mismo DataModule, uno de sólo lectura, que permanecería abierto todo el tiempo hasta el momento que quisieras mostrar los datos actualizados en otras transacciones, y el otro en modo escritura, que sólo activarías en la fracción de segundo que necesite para ejecutarse tu código de actualización de datos.

Por ejemplo:

Vamos a llamar al componente de transacción de sólo lectura TranLee y al de escritura TranEscribe. Los querys que sólo realicen consultas, los enlazamos, todos ellos, con TranLee. Cuando queramos traernos los últimos datos que se hayan introducido/actualizado en la BBDD desde que iniciamos la transacción con TranLee, cerramos y volvemos a abrir TranLee (lo cual crea una nueva transacción) y volvemos a abrir los querys que estuviesen abiertos. Yo crearía todos los querys en el DataModule y, mediante un procedimiento, recorrería todos los querys que tengan la propiedad "Tag" en 1, volvería a abrir esos querys en el momento que reabriese TranLee para actualizar los datos mostrados. Evidentemente, para que este truco funcione como debiera, hay que poner el valor 1, cuando abramos un query de lectura y 0, cuando lo cerremos, a la propedad "Tag" del susodicho query.

TranEscribe lo usaría con el resto de los querys de actualización de datos, como es obvio. Lo ideal sería iniciar la transacción justamente antes de la sentencia que ejecuta el query y finalizarla inmediatamente después, a no ser que quieras ejecutar varios querys de actualización seguidos, que los podemos meter todos dentro del mismo bloque de la transacción.

Código Delphi [-]
 query1.SQL.Text := 'INSERT INTO CLIENTES (X, Y, Z) VALUES (1, 2, 3)';
 TranEscribe.StartTransaction;
 try
   query1.ExecSQL;
   TranEscribe.Commit;
 except
   TranEscribe.RollBack;
 end;

Venga, espero haberte ayudado en algo.

Un saludo
__________________
Ó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