Fórum OnReconcileError #361382
20/07/2008
0
Sempre trabalhei com Firebird e Delphi usando o evento OnReconcileError para traduzir erros do banco de dados. Tive problemas algum tempo atrás com vírus e fui obrigado a formatar meu PC. Instalei todas as ferramentas de trabalho e estava tudo bem até o momento de usar o OnReconcileError. Percebi q o mesmo n está funcionando. Já baixei video-aula e conferi todos os passos e mesmo assim o evento n é disparado de jeito nenhum. Alguém já passou por esse tipo de problema? Estou a praticamente 3 dias nessa situação de ignorancia. Alguém pode me ajudar ? Desde já, obrigaduuuu !
Paulomaster10
Curtir tópico
+ 0Posts
20/07/2008
Marco Salles
ou somente post ????
Gostei + 0
20/07/2008
Paulomaster10
Gostaria de acompanhar a rotina q me leva ao onReconcileError, mas nem isso está sendo possível.
Gostei + 0
20/07/2008
Marco Salles
e qual o parâmetro que voce esta usando no aplyupdates ????
2)
nun entendi ????
Gostei + 0
20/07/2008
Paulomaster10
Queria acompanhar na depuração o momento em q entro no form do ReconcileError, mas isso n está sendo possível pq sequer o evento dispara.
Gostei + 0
21/07/2008
Marco Salles
eu estou sem Delphi aqui para olha meus Bizus
mas acho o seguinte .....
Voce esta Dando o método ApplyUpdates dentro de Um Botão ou
Algum Evento AffterPost ou BeforePost do ClientDadaSet ???
Voce esta Usando Algum Try Excpet encapsulando o applyUpdates ???
Quando Voce provoca o Erro o que informa a Instrução abaixo
showmessage(inttostr(cds.ApplyUpdates(0));
Tente colocar um Erro (Raise) no Evento BeforePost ou AfterPost Do clientDataSet simulando um erro gerado pelo Provider e veja se o
Evento é disparado
como eu disse , ja pasei por isto , e no final deu certo
Gostei + 0
21/07/2008
Paulomaster10
Os eventos q me sugeriu usar, funcionam, mas no caso teria q personalizar os erros prá cada um dos campos e o trabalho seria enorme, por isso, tenho a necessidade de fazer funcionar o evento OnReconcileError. Com esse, economizo muito em código. Fiz um resumo prá q vc veja como está a rotina q já funcionou qdo antes de formatar meu PC.
procedure TForm1.btAplicarClick(Sender: TObject);
begin
clientdataset1.ApplyUpdates(0);
end;
procedure TForm1.ClientDataSet1ReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
var
Msg : string;
begin
Action := HandleReconcileError(dataset, UpdateKind, E);
if (Pos(´Key violation of PRIMARY or UNIQUE KEY´, e.Message) > 0) or
(Pos(´attempt to store duplicate value´, msg) > 0) then
begin
msg:= ´A tentativa de inserção/edição iria resultar em duplicidade ´ +
´de registros nesta tabela.´;
ShowMessage(msg + #13 + ´Descrição do Erro: ´ + 13 + Msg);
end;
end;
Obs. Uso o Win2000 e Delphi 7.
Gostei + 0
21/07/2008
Marco Salles
estamos partindo da premissa que esteja ocorrendo de fato um erro na atualização dos dados do clientDataSet ... Certo ???
então , na sua aplicação , ´force´ este ERRO E no evento UpdateError
do DataSet Provider Digite
procedure TForm1.DataSetProvider1UpdateError(Sender: TObject;
DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
var Response: TResolverResponse);
begin
Showmessage(´é erro mesmo´+#13+e.message) ;
end;
Gostei + 0
21/07/2008
Paulomaster10
Gostei + 0
21/07/2008
Marco Salles
infelismente não .... Pode ser que não esteja dando erro
Que tipo de erro voce espera ??? Campo Unique < chave primária > ???
O campo esta marcado como requerido nos componentes de acesso ???
Gostei + 0
26/08/2008
Vini_alpha
bem, vendo este topico eu observei que na string que vc tenta capturar o erro em violalção da chave primaria esta errada, entao a sentença nunca vai ser verdadeira, nao acusando a falha.
if (Pos(´Key violation of PRIMARY or UNIQUE KEY´, e.Message)
nessa linha eh so tirar a palavra ´Key´ pois ela nao aparece na mensagem de erro.
if (Pos(´violation of PRIMARY or UNIQUE KEY´, e.Message)
Pelo menos nas minhas mensagens é assim e deu certo apos tirar o key.
Vinicius Silva
Gostei + 0
27/08/2008
Marco Salles
pq serve de referencia para outras dúvidas. As vezes um erro como o meu , de fácil solução , pode ser o motivo pelo desanimo do autor do post
Gostei + 0
20/01/2015
X Me
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)