[Lazarus-es] zeos-firebird: ejemplo transacciones

Ismael L. Donis García ismael en citricos.co.cu
Jue Mayo 6 20:51:53 CEST 2010


Paola, lo primero que  te recomiendo es que pases la lógica hacia la BD, 
segundo puedes obtener el valor del generador desde el mismo procedimiento 
que usas para incrementar el generador y guardarlo en una variable con la 
cual trabajarías después.

Te pasó un código de ejemplo que yo uso para que tengas una idea.

SET TERM ^ ;
CREATE PROCEDURE P_NUM_REC (
    VCH_ENTIDAD Varchar(7),
    SIN_ALMACEN Smallint )
RETURNS (
    INT_NREC Integer )
AS
BEGIN
  /* Actualiza el número de la recepción */
  select a.no_r from vtaconteo a where ((a.entidad = :vch_entidad) and 
(a.almacen = :sin_almacen)) into :int_nrec;
  update vtaconteo set no_r = no_r + 1 where ((vtaconteo.entidad = 
:vch_entidad) and (vtaconteo.almacen = :sin_almacen));
  suspend;
END^
SET TERM ; ^

Saludos
=========
|| ISMAEL ||
=========
----- Original Message ----- 
From: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy>
To: "Lista Lazarus" <lazarus-es en lists.lazarus.freepascal.org>
Sent: Thursday, May 06, 2010 11:51 AM
Subject: [Lazarus-es] zeos-firebird: ejemplo transacciones


Hola..
alguien tiene algún ejemplo (usando zeos/firebird2) donde graba varios
registros en varias tablas (usando o no sp) y que queden en la misma
transacción?? quisiera ver cómo lo están resolviendo.

esto es lo que yo hago:

   DBMain.fdb.AutoCommit:= false;

   try
     DBMain.qry.Close;
     DBMain.qry.SQL.Text:= 'update numeros set boletas =
'+IntToStr(nComprob+1);
     DBMain.qry.ExecSQL;
   except
     MessageDlg('Error', 'Hay error ', mtWarning, [mbOk], 0);
     DBMain.fdb.Rollback;
   end;

   ..... varias sentencias: inserts, updates.... todas entre try/except

   DBMain.fdb.Commit;
   DBMain.fdb.AutoCommit:= true;


Si uso un generador para incrementar el contador de comprobantes, se
supone que si todo el proceso de grabar está dentro de la misma
transacción, puedo seguir consultando por el valor del generador, que no
se me va a modificar, no?

chauuuuuuuuuu




_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es






More information about the Lazarus-es mailing list