Editar registro do ClientDataSet após ApplyUdates

Delphi

14/06/2005

Olá, pessoal!

Uso Delphi6 e acesso Firebird via DBX com o conjunto ClientDataSet, DataSetProvider e SQLDataSet.
Após incluir um registro no ClientDataSet e usar o método ApplyUpdates, se tentar alterar em seguida o mesmo registro e usar novamente o ApplyUpdates é disparado o seguinte erro:

´Record not found or changed by another user´

É possível alterar um registro recém incluído no ClientDataSet após o ApplyUpdates ou tenho mesmo que disparar um novo select para poder editar o registro nessa situação?

Um abraço,
Jair


Jairroberto

Jairroberto

Curtidas 0

Respostas

Cesarpir

Cesarpir

14/06/2005

Amigo eu passei por esse problema, para solucionar eu armazeno em variaveis antes da gravação a(s) chave(s) primária(s) do registro que está sendo incluido ou alterado, após o applyupdates(0) eu posiciono novamente, utilizando as variaveis, ou seja:
Close;
Passo os parametros;
Open;
e por fim Edit;

Eu trabalho com o delphi 7, firebird 1.5 e dbexpress para acessar.

Espero que tenha entendido, ou que pelo menos te ajude algo, seria bom vc detalhar um pouco mais como faz, eu tenho datamodule e ele espera parametros para inclusão, alteração, exclusão e funciona.

Abraços
César


GOSTEI 0
Jairroberto

Jairroberto

14/06/2005

Olá, César!

Também faço desta forma atualmente, mas não entendo que este seja um comportamento esperado, até porque cria algumas limitações na criação da interface com o usuário.

A mensagem é gerada no ReconcileError, o que indica que é disparada pela engine do banco de dados. Isso pode significar algum problema no controle da transação ou a falta de um commit explícito, mas eu faço tudo isso.

Se alguém puder colaborar com outras soluções...

De qualquer forma, muito obrigado César.


Um abraço,
Jair


GOSTEI 0
POSTAR