Fórum OnReconcileError #361382

20/07/2008

0

Olá pessoal !

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

Paulomaster10

Responder

Posts

20/07/2008

Marco Salles

voce esta dando applyupdates ????


ou somente post ????


Responder

Gostei + 0

20/07/2008

Paulomaster10

Estou usando post e a seguir applyudates;
Gostaria de acompanhar a rotina q me leva ao onReconcileError, mas nem isso está sendo possível.


Responder

Gostei + 0

20/07/2008

Marco Salles

1)
e qual o parâmetro que voce esta usando no aplyupdates ????


2)
Gostaria de acompanhar a rotina q me leva ao onReconcileError, mas nem isso está sendo possível.


nun entendi ????


Responder

Gostei + 0

20/07/2008

Paulomaster10

ClientDataset1.ApplyUpdates(0);

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.


Responder

Gostei + 0

21/07/2008

Marco Salles

Ha muito tempo , isto tb ja aconteceu comigo ...

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


Responder

Gostei + 0

21/07/2008

Paulomaster10

Oi Marco, obrigado pela ajuda.

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.


Responder

Gostei + 0

21/07/2008

Marco Salles

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.


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;


Responder

Gostei + 0

21/07/2008

Paulomaster10

Infelizmente nada aconteceu. O evento UpdateError do Provider tb n disparou. Estou quase mudando do Wind2000 prá XP !!


Responder

Gostei + 0

21/07/2008

Marco Salles

Infelizmente nada aconteceu. O evento UpdateError do Provider tb n disparou. Estou quase mudando do Wind2000 prá XP !!


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 ???


Responder

Gostei + 0

26/08/2008

Vini_alpha

Ola Marcos,

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


Responder

Gostei + 0

27/08/2008

Marco Salles

realmente vini_alpha vc tem toda razão ; É que na maioria das vezes a gente faz as coisas de cabeça e tenta passar a idéia ...Muito ob por sua correção , pq na minha opinião tópico começado tinha que ser terminado ,
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


Responder

Gostei + 0

20/01/2015

X Me

Muito bom post... Me ajudou muito..
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar