[Resolvido] transações com firebird no delphi
galera tenho este codigo aqui só que o primeiro try com a transação ele grava na tabela e ok e na segunda ele passa mais não grava nada na tabela o que pode ser ??
If TmpProtocoloItem.IsEmpty then
begin
MessageBox( handle, 'Não existem conhecimentos para geração do protocolo !', 'Atenção', MB_ICONWARNING or MB_OK);
end
else
begin
{ Gera o protocolo }
//
try
dmParame.trGTrans.Active := False;
if not dmParame.trGTrans.InTransaction then
dmParame.trGTrans.StartTransaction;
//
IBStoredProc1.ParamByName( 'VDATA' ).AsDateTime := Date;
IBStoredProc1.ParamByName( 'VHORA' ).AsTime := Time;
{ Executa a Stored Procedure do Banco de Dados }
IBStoredProc1.ExecProc;
//
TESTE := IBStoredProc1.ParamByName( 'CODIGO' ).AsInteger;
//
dmParame.trGTrans.CommitRetaining;
except
dmParame.trGTrans.Rollback;
end;
//
//
try
dmParame.trGTrans.Active := False;
if not dmParame.trGTrans.InTransaction then
dmParame.trGTrans.StartTransaction;
TmpProtocoloItem.First;
while not TmpProtocoloItem.Eof do
begin
TabFinal.Close;
TabFinal.Open;
TabFinal.SQL.Clear;
TabFinal.SQL.Add('INSERT INTO TRPROTOITE ( CODPROTO, CODEMPRES, SIGSERIES, NUMCONHEC, EMICONHEC, PRECONHEC, PAGCLICNH ) ');
TabFinal.SQL.Add('VALUES ( :CODPROTO, :CODEMPRES, :SIGSERIES, :NUMCONHEC, :EMICONHEC, :PRECONHEC, :PAGCLICNH )');
TabFinal.ParamByName('CODPROTO' ).AsInteger := TESTE;
TabFinal.ParamByName('CODEMPRES').AsString := TmpProtocoloItemcodempres.AsString;
TabFinal.ParamByName('SIGSERIES').AsString := TmpProtocoloItemsigseries.AsString;
TabFinal.ParamByName('NUMCONHEC').AsInteger := TmpProtocoloItemnumconhec.AsInteger;
TabFinal.ParamByName('EMICONHEC').AsDateTime := TmpProtocoloItememiconhec.AsDateTime;
TabFinal.ParamByName('PRECONHEC').AsFloat := TmpProtocoloItempreconhec.AsFloat;
TabFinal.ParamByName('PAGCLICNH').AsString := TmpProtocoloItempagclicnh.AsString;
// tabfinal.Prepared := true;
TabFinal.ExecSQL;
TmpProtocoloItem.Next;
end;
dmParame.trGTrans.Active := True;
dmParame.trGTrans.CommitRetaining;
except
dmParame.trGTrans.Rollback;
end;
//
// IBStoredProc1.Prepared := false;
MessageBox( handle, Pchar('Foi gerado o protocolo Nº : ' + IntToStr( TESTE )) , 'Informação', MB_ICONINFORMATION or MB_OK);
QRLabel23.Caption := Label22.Caption;
QRLabel25.Caption := Label23.Caption;
//
contador := 0;
QuickRep1.Preview;Discussão (3)
Carregando comentários...