Ir para conteúdo

POWERED BY:

Arquivado

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

Leonair

erro usando transação em ibquery

Recommended Posts

Ola pessoal estou com o seguinte problema....antes de inserir elementos em uma tabela auxiliar eu preciso deletar todos os dados dessa tabela, para isso eu uso o codigo abaixo. O estranho e que fazendo passo a passo verifiquei que o programa não deleta os dados da tabela ele pula da linha IBTransaction2.StartTransaction; ja para IBTransaction2.Rollback, mais não mostra a mensagem de erro......Outra coisa e que esse codigo sempre funciona em outros locais.....o que deve estar errado.....se utizo so a query sem utilizar a transação não da erro mais tb não funciona.

 

Estou usando delphi 7 com interbase 6.5

with IBQuery2 do
	 begin
	   try
		  if IBTransaction2.active then IBTransaction2.Commit;
		  IBTransaction2.StartTransaction;
		  IBQuery2.close;
		  IBQuery2.sql.clear;
		  IBQuery2.sql.add('delete from tb_depeaux');
		  IBQuery2.open;
		  IBTransaction2.commit;
	   except
		 IBTransaction2.Rollback;
		 showMessage('Ocorreu um erro ao tentar salvar informações.');
		 exit;
		end;
	  end;

Agradeço a ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não utilizo a IBQuery, mas de repente pode ser um begin faltando por aí

with IBQuery2 do
	 begin
	   try
		  if IBTransaction2.active then 
		  begin
		  IBTransaction2.Commit;
		  IBTransaction2.StartTransaction;
		  IBQuery2.close;
		  IBQuery2.sql.clear;
		  IBQuery2.sql.add('delete from tb_depeaux');
		  IBQuery2.open;
		  IBTransaction2.commit;
	   except
		 IBTransaction2.Rollback;
		 showMessage('Ocorreu um erro ao tentar salvar informações.');
		 exit;
		end;
	  end;
Aí tem que por mais um end no final, porque quando está somente then, o delphi realiza o procedimento de apenas uma linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não mostra a mensagem de erro visto que cai no except para ser tratado o erro, se quiser ver qual o erro, tire o try except, ou então capture o erro e mostre na tela, dependendo do que esta querendo excluir pode ter problema de alguma chave de relacionada que não permita a exclusão. E esta um pouco confuso este seu fonte, tente algo como:

 

 

with IBQuery2 do
	begin
	try
		if IBTransaction2.active then
			IBTransaction2.Commit;
		IBTransaction2.StartTransaction;
		IBQuery2.close;
		IBQuery2.sql.clear;
		IBQuery2.sql.add('delete from tb_depeaux');
		IBQuery2.open;
		IBTransaction2.commit;
	except
		if IBTransaction2.active then
			IBTransaction2.Rollback;
		showMessage('Ocorreu um erro ao tentar salvar informações.');
		exit;
		end;
  end;

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.