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