Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

orc

[Resolvido] transações com firebird no delphi

Recommended Posts

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou rodar passo-a-passo para verificar em qual linha pode ter problema ou caindo em except ?

No caso poderia tirar o try... except e verificar se não é gerado nenhum erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou rodar passo-a-passo para verificar em qual linha pode ter problema ou caindo em except ?

No caso poderia tirar o try... except e verificar se não é gerado nenhum erro...

vlw marcio acabei achando o erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.