Não sei se vai resolver o seu caso, mais eu faço assim
if cds_padrao.ApplyUpdates(0) > 0 then cds_padrao.UndoLastChange(true); []s, Clériston Ramos _____ De: Paulo [mailto:[EMAIL PROTECTED] Enviada em: domingo, 20 de novembro de 2005 17:59 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] ClientDataSet - Como trazer novamente um registro do servidor, no OnReconcileError Pessoal: a) Estou usando Delphi 7 com DBExpress/ClientDataSet e InterBase 6 b) No evento OnReconcileError de um ClientDataSet, eu verifico qual foi a mensagem de erro: - Se foi violacao de chave, quero executar um raAbort - Se foi pelo fato de outro usuario na rede ter alterado o registro, quero reler o registro alterado do servidor de dados (para que o usuario que recebeu o erro veja em sua tela o registro atual do BD) c) Pelo que entendi do help do Delphi, para trazer novamente o registro do servidor, tenho que executar o comando Action := raRefresh d) Porem, quando o programa faz um Action := raRefresh, ele entra em loop (fica entrando sempre no OnReconcileError, e o usuario tem de pressionar CTRL+ALT+DEL para abortar o programa) Poderiam analisar o codigo no final deste e-mail e me dizer o que esta' errado ? Obsservacoes: 1) O ApplyUpdates(0) eu executo no evento AfterPost do ClientDataSet 2) No OnReconcileError, ja' tentei fazer um .close e .open no ClientDataSet, mas entao aparece um outro erro, referente ao "provedor" (ate' esqueci qual e') Muito obrigado pela atencao de todos Paulo procedure TFormCadMatServicos.ClientDataSetTBMATSERVICOSReconcileError(DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); var sMensagem : String; begin if Pos('PRIMARY OR UNIQUE KEY', AnsiUpperCase(E.Message)) > 0 then begin sMensagem := 'Registro já cadastrado.'; Action := raAbort; end else if Pos('REGISTRO FOI ALTERADO POR OUTRO USUÁRIO', AnsiUpperCase(E.Message)) > 0 then begin sMensagem := 'Este registro foi alterado por outro usuário.'; Action := raRefresh; end else begin sMensagem := 'Algum erro inesperado ocorreu.'; Action := raAbort; end; MessageDlg(sMensagem, mtError, [mbOK], 0); end; [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE <http://br.rd.yahoo.com/SIG=12fkti5ao/M=365837.7000707.7924794.2369893/D=brc lubs/S=2137111264:HM/Y=BR/EXP=1132523762/A=2950750/R=2/id=noscript/SIG=10tif t5qr/*http:/br.movies.yahoo.com/> <http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0829_lrec_cinema_calendario.gif > _____ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do <http://br.yahoo.com/info/utos.html> Yahoo!. __________ Informação do NOD32 1.1295 (20051120) __________ Esta mensagem foi verificada pelo NOD32 Sistema Antivírus http://www.nod32.com.br [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html