Alisson,
No alguns erros são retornado pelo onReconcileError do ClientDataSet.
Os erros que não são tratados dentro do Try...Except trate-os dentro do
OnReconcileError do CDS.
Abraços,
Paulo Sérgio
Bthe - MG
-Mensagem original-
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROT
Desse jeito ele vai tentar executar o commit mesmo que dê erro. O
commit tem que estar dentro do bloco try.
Em 03/06/05, Vitor Luiz Redes<[EMAIL PROTECTED]> escreveu:
>Olhe, se não me engano, o seu bloco Try está errado, tente assim ...
>
> conn.StartTransaction(TD);
> try
>try
>csdC
Olha, então vc pode mudar o código para o seguinte:
if Cds1.ApplyUpdate(0) <> 0 then
Abort;
else if Cds2.ApplyUpdates(0) <> 0 then
Abort;
else if...
Daí ele não vai executar os código seguintes.
O erro que acontece depois (o de chave não especificada) é pq no seu
SQLDataSet você
Francisco e demais colegas,
Na verdade eu estou aplicando update de vários ClientDataSet's, então estou
fazendo como a própria ajuda recomenda: starto a transação, dentro de um
bloco protegido e aplico os updates de todos e salvo (commit), caso ocorra
algum erro em um dos CDS's é preciso revert
Seguinte:
Nunca use ApplyUpdate(-1) pq assim ele vai deixar passar todos os erros.
Faça um ApplyUpdate(0) que a cada erro ele vai chamar o OnReconcileError.
Se você quiser simplesmente jogar uma execeção para o usuario faça:
on e: Exception do
raise Exception.Create(e.message)
.. no evento On
Olhe, se não me engano, o seu bloco Try está errado, tente assim ...
conn.StartTransaction(TD);
try
try
csdCliente.ApplyUpdates(0);
except
conn.RollBack(TD);
finally
conn.Commit(TD);
end
end;
Foi mal se estiver com algo errado, eu não testei ... mas assim deve
funcion
Olá,
É verdade, você deve usar o evento OnReconcileError do ClientDataset
pra tratar os erros do banco. Exemplo, crie no seu datamodule uma
proc. assim: (adapte aí pra você)
procedure TDataModule1.CommonReconcile(DataSet: TCustomClientDataSet;
E: EReconcileE
Eu tive problemas pra utilzar Transações com DBExpress quando usava o
driver da UIB, ele simplesmente ignorava o exception e commitava os
dados, ai passei a usar o driver para interbase e apesar das
incompatibilidades com o FB 1.5 as transações funcionam normais agora.
carlos sene escreveu:
>
8 matches
Mail list logo