Re: [firebase-br] Transação + Stored Procedure

Francisco A Souza francisco em logosinfo.com.br
Qua Ago 9 08:04:14 -03 2006


se for dbx, eu uso assim:
var
    Tb1: TSQLStoredProc;
    Td:TtransactionDesc;
begin
   tb1:=tsqlstoredproc.create(nil);
   tb1.SQLConnection:=dmdados.bd;
   Td.transactionid:=1;
   Td.Isolationlevel:=xilREADCOMMITTED;
   dmdados.bd.StartTransaction(td);
   try
      CF.First;
      JV2.Minimum:=0;
      JV2.Maximum:=CF.RecordCount;
      TB1.Close;
      tb1.StoredProcName:='CF_INCLUSAO';
      WHILE NOT CF.EOF DO BEGIN
         Application.ProcessMessages;
         screen.Cursor:=crsqlwait;
         if cfcupon.AsString<>'' then begin
            rxlabel8.Caption:='Importando CF:'+strzero(CFCUPON.AsString,6);
            rxlabel8.Refresh;
            IDCF:=TBINC('CF');
            JV2.Position:=CF.RecNo;
            tb1.ParamByName('ID').AsInteger:=IDCF;
            tb1.ParamByName('ID_LOJA').AsInteger:=CFIDLOJA.AsInteger;
            tb1.ParamByName('CUPON').AsString:=CFCUPON.AsString;
            tb1.ParamByName('ecf').value:=CFECF.AsString;
            tb1.ParamByName('emissao').value:=CFEMISSAO.Value;
            tb1.ParamByName('caixa').value:=CFCAIXA.AsString;
            tb1.ParamByName('total').value:=CFTOTAL.AsCurrency;
            tb1.ParamByName('cancelamentos').value:=CFCANCELAMENTOS.AsCurrency;
            tb1.ParamByName('descontos').value:=CFDESCONTOS.AsCurrency;
            tb1.ParamByName('ACRESCIMOS').value:=CFACRESCIMOS.AsCurrency;
            tb1.ParamByName('STATUS').value:=CFSTATUS.AsString;
            tb1.ParamByName('USUARIO').value:='IMPORTACAO';
            tb1.ParamByName('VENDEDOR').value:=CFVENDEDOR.AsString;
            tb1.ParamByName('CLIENTE').Clear;
            try
               TB1.ExecProc;
            except
               on exc:exception do begin
                  Log(Alog,DateTimeToStr(Now)+' - Erro de Importacao CF 
:'+exc.Message);
                  Log(Alog,DateTimeToStr(Now)+' - Cupon Fiscal 
:'+CFCUPON.AsString+' '+CFEMISSAO.AsString+' '+CFECF.AsString+' 
'+CFTOTAL.AsString);
                  Log(Alog,REPLIC('-',100));

               end;
            end;
         end;
         cf.Next;
      end;
      TB1.Close;

      dmdados.bd.Commit(td);
   except
      on exc:exception do begin
         Log(Alog,DateTimeToStr(Now)+' - Erro de Importacao');
         Log(Alog,DateTimeToStr(Now)+replic('-',100));
         dmdados.bd.Rollback(td);
         screen.Cursor:=crdefault;
      end;
   end;






Mais detalhes sobre a lista de discussão lista