Fórum Tratar mensagens de erro #250536
15/09/2004
0
Agradeço desde já.
ps.: Estou usando Delphi7 + Firebird1.5 e DBExpress.
Programalista
Curtir tópico
+ 0Posts
15/09/2004
Vinicius2k
Vc está usando TClientDataSets ?
Se sim, o método ApplyUpdates não gera exceção mas sim EReconcileError...
Para exibir a mensagem de erro vc deve utilizar o evento OnReconcileError do ClientDataSet e para personalizar a mensagem, pode-se usar algo parecido com este código neste evento :
... var Msg: String; begin Msg:= ´Descrição não disponível.´; if (Pos(´violation of PRIMARY or UNIQUE KEY´, E.Message) > 0) or (Pos(´attempt to store duplicate value´, E.Message) > 0) then begin Msg:= ´A tentativa de inserção/edição iria resultar em duplicidade ´ + ´de registros nesta tabela.´; end; if Pos(´violation of FOREIGN KEY´, E.Message) > 0 then begin Msg:= ´A tentativa de atualização iria causar falhas de relacionamento, ´+ ´por existirem dependencias entre as tabelas envolvidas.´; end; ShowMessage(E.Message + #13 + ´Descrição do Erro: ´ + 13 + Msg); end;
Espero ter ajudado...
T+
Gostei + 0
15/09/2004
Programalista
Gostei + 0
22/12/2004
Technos
To com o mesmo problema que vc resolveu aee pro programalista, só que estou trabalhando com componentes IBO CORE.
Qual o Evento semelhante ao OnReconcileError pro IBO ?
Ele fica na Query ? no Ib_Connection ? No Transaction ?
Se possível, posta um exemplo blz ?
Um Abraço e um Feliz Natal pra vc´s todos aeewww
:shock:
Gostei + 0
22/12/2004
Vinicius2k
Infelizmente, eu acho q vou ficar te ´devendo´ esta... eu não trabalho com o IBO...
Mas veja bem.. Que eu saiba, apenas ClientDataSets e descendentes ou ´primos´, possuem OnReconcileError...
No meu ponto de vista, vc deve utilizar uma rotina semelhante, no Post do seu DataSet, ou no ApplyUpdates do mesmo, se vc estiver trabalhando com CachedUpdates (não sei se no IBO os termos seriam estes)...
No IBX, por exemplo, não seria necessário trabalhar no OnReconcileError... o tratamento poderia ser feito com um bloco try...except no momento do Post.
O próprio método Post dispararia a exceção em caso de erros, coisa que não acontece no ApplyUpdates do ClientDataSet e por isso é necessário ´trabalhar por fora´ no OnReconcileError...
Seria algo mais ou menos assim :
try SeuDataSet.Post; except on E: Exception do begin //aqui dentro o código do exemplo para o OnReconcileError end; end;
Feliz Natal para vc, e sua família também ! :wink:
T+
Gostei + 0
22/12/2004
Vinicius2k
Talvez seu DataSet tenha o evento OnPostError (ou semelhante)... Se tiver, poderia-se utilizar a mesma rotina que foi utilzada para o OnReconcileError do CDS.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)