Fórum Try/Except trava em applyupdates(0) mas funciona!!?? #268974
17/02/2005
0
try
....
tabela.post;
tabela.applyupdates(0);
except
showmessage(´erro´);
end;
blz, so que se eu tento salvar com as chaves iguais a um registro existente, ele identifica o key violation mas nao da a menssagem que eu criei simplesmente nao salve nao da erro e continua funcionando normal;
entao compilei com F7 e vi que o compilador trava na linha tabela.applyupdates(0); mostra o erro (do delphi) key violation e continua funcionado o programa mas o compilador nao sai da linha como se tivesse dado um F9
o programa funciona blz mas nao consigo fazer o except funcionar neste procedure
Obrigado;
Ricna
Curtir tópico
+ 0Posts
17/02/2005
Briciosm
Você vai achar o que precisa. Me lembro de ter visto ontem o mesmo problema que você está relatando.
Sei que o try ... except neste caso não vai funcionar.
Parece que você vai ter que usar if tabela1.applyupdates(0)<>0 then
erro.....
Acho que é isso!
Gostei + 0
17/02/2005
Vinicius2k
O DataSet q vc chama de ´tabela´ é um TClientDataSet ?
Se sim, TClientDataSets NUNCA geram exceção no método ApplyUpdates. Try/Except não funciona neste caso.
A única forma de exibir a mensagem original de erro é utilizar o evento [b:c517ebf571]OnReconcileError[/b:c517ebf571] do TClientDataSet. Neste evento vc pode chamar, por exemplo :
ShowMessage(E.Message);
Vc pode verificar se houve algum erro, verificando o valor retorno do método ApplyUpdates. O método retorna o número de erros ocorridos durante a tentativa de aplicação. Ex:
if CDS.ApplyUpdates(0) > 0 then ShowMessage(´Ocorreu um erro...´);
T+
Gostei + 0
17/02/2005
Ricna
entao meu sistema inteiro esta errado :oops:
Bom e com esse OnReconcileError tem como distinguir quando ele foi chamado , se na hora de salvar ou deletar , se o TClientDataSet tava em dsedit ou dsinsert?
valeu mesmo ai
Gostei + 0
18/02/2005
Vinicius2k
Para proteger erros no ambiente do lado do cliente (operações no ClientDataSet) vc pode utilizar Try/Except, como ao efetuar o Post, por exemplo. Try/Except só não resolve com o AppyUpdates..
No exemplo que vc passou :
try ... ClientDataSet1.Post; ClientDataSet1.ApplyUpdates(0); except ShowMessage(´Erro !´); end;
Neste caso, vc irá conseguir capturar a exceção no Post. A forma com que vc fez não está errada, só incompleta, pois para ter certeza que não houve erro vc precisa utilizar uma das formas que mencionei na minha primeira mensagem...
Algo +/- assim :
try ... ClientDataSet1.Post; if ClientDataSet1.ApplyUpdates(0) > 0 then ShowMessage(´Erro no AppyUpdates !´); except ShowMessage(´Erro no Post !´); end;
Blz?
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)