Fórum Transação Delphi x Zeos x Mysql #376044

15/10/2009

0

Estou com um problema em um cliente que acontece da seguinte maneira:

Try
DM.Conexao.StartTransaction;
except
Erro:= True;
end;

if not Erro then
GravaVenda; //---procedure Gravando as Vendas
if not Erro then
GravaItensVenda; //---procedure Gravando os Itens da Venda

if Erro then
begin
//---------------Se der algum erro
DM.Conexao.Rollback;
end
else
begin
//------------------Se estiver tudo OK
DM.Conexao.Commit;
end;

Simplismente não grava algumas vendas....aleatório....

Alguem pode me ajudar pelo amor de deus


Gustavo Montagnoli

Gustavo Montagnoli

Responder

Posts

15/10/2009

Afarias

Com as informações apresentadas não da pra saber o q está errado, mas dá pra ver que vc está usando mal o recurso de try...except.

Vc deveria começar mudando seu código para algo assim:


DM.Conexao.StartTransaction;
try 
  GravaVenda;
  GravaItensVenda;
  DM.Conexao.Commit;
except
  DM.Conexao.Rollback; 
end;



T+


Responder

Gostei + 0

15/10/2009

Afarias

complementando, para saber q houve um erro, depois do Rollback vc pode por uma mensagem ou (re)lançar a exceção:

{...}
DM.Conexao.Rollback;
raise;
{...}


ou

{...}
DM.Conexao.Rollback;
ShowMessage(´Erro ao gravar´);
{...}


T+


Responder

Gostei + 0

16/10/2009

Gustavo Montagnoli

Valeu vou tentar...qq coisa grito de novo ok....


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar