No meu botão gravar, gravo dados em 3 tabelas diferentes.
em 2 delas uso clientdataset, na outra uso query.
Joguei tudo dentro de um try except e caso de erro, dou um rollback.
O problema é que se o erro der no applyupdates(0), a exceção não será gerada e terei dados inconsistentes gravados.
Já pesquisei e vi que devo apresentar a mensagem de erro no evento OnReconcileError do clientdataset pra apresentar a mensagem de erro. Mas mesmo após a mensagem, o restante do código será executado.
O resumo do meu codigo é assim:
try
cdsagenda.post;
cdsagenda.applyupdates(0);
cdscontas.post;
cdscontas.applyupdates(0);
while not cdsitens.eof do
...
...
qrproducao.post;
except
showmessage('deu erro, não gravei nada');
transaction.rollbackretaining;
end;
Minha duvida é como cancelar tudo em caso de erro.
Pergunta
renanbg
No meu botão gravar, gravo dados em 3 tabelas diferentes.
em 2 delas uso clientdataset, na outra uso query.
Joguei tudo dentro de um try except e caso de erro, dou um rollback.
O problema é que se o erro der no applyupdates(0), a exceção não será gerada e terei dados inconsistentes gravados.
Já pesquisei e vi que devo apresentar a mensagem de erro no evento OnReconcileError do clientdataset pra apresentar a mensagem de erro. Mas mesmo após a mensagem, o restante do código será executado.
O resumo do meu codigo é assim:
try cdsagenda.post; cdsagenda.applyupdates(0); cdscontas.post; cdscontas.applyupdates(0); while not cdsitens.eof do ... ... qrproducao.post; except showmessage('deu erro, não gravei nada'); transaction.rollbackretaining; end;
Minha duvida é como cancelar tudo em caso de erro.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.