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