Fórum Dificuldade para salvar registro de ClientDataSet #47887
04/11/2004
0
Olá Pessoal,
To enrolado há alguns dias nesse código fonte, vou tentar ser breve.
Estou utilizando Firebird 1.5 com os Seguintes componentes no meu datamodule:
1 - IBDatabase
1 - IB Transaction
1 - IB Table
1 - DatasetProvider
1 - Client Dataset
1 - datasource
Em um dos forms eu tenho meus campos os quais linkei com o datasource que está ligado ao Client Dataset, a minha enorme dificuldade esta em alterar os registros e não deixá-los apenas bufferizados.
Por exemplo no form principal executo uma query para encontrar o registro desejado. Ai coloquei um DBGrid e um botão Alterar, então seleciono o registro no grid e clico no botão alterar.
No botão alterar coloco a instrução de abrir o form mais
datamodule1.clientdataset1.edit;
O form é aberto corretamente com os registros que desejo alterar, após as alterações clico no botão Ok, o qual tem as instruções:
datamodule1.clientdataset1.post;
datamodule1.clientdataset1.applyupdates(-1);
O registro é salvo e aparece no grid atualizado, mas se saio e entro no programa novamente ele não está mais lá.
Que comando está faltando?
Desculpem o desespero, mas só falta isto para terminar meu programinha.
To enrolado há alguns dias nesse código fonte, vou tentar ser breve.
Estou utilizando Firebird 1.5 com os Seguintes componentes no meu datamodule:
1 - IBDatabase
1 - IB Transaction
1 - IB Table
1 - DatasetProvider
1 - Client Dataset
1 - datasource
Em um dos forms eu tenho meus campos os quais linkei com o datasource que está ligado ao Client Dataset, a minha enorme dificuldade esta em alterar os registros e não deixá-los apenas bufferizados.
Por exemplo no form principal executo uma query para encontrar o registro desejado. Ai coloquei um DBGrid e um botão Alterar, então seleciono o registro no grid e clico no botão alterar.
No botão alterar coloco a instrução de abrir o form mais
datamodule1.clientdataset1.edit;
O form é aberto corretamente com os registros que desejo alterar, após as alterações clico no botão Ok, o qual tem as instruções:
datamodule1.clientdataset1.post;
datamodule1.clientdataset1.applyupdates(-1);
O registro é salvo e aparece no grid atualizado, mas se saio e entro no programa novamente ele não está mais lá.
Que comando está faltando?
Desculpem o desespero, mas só falta isto para terminar meu programinha.
Reifas
Curtir tópico
+ 0
Responder
Posts
05/11/2004
Gandalf.nho
As alterações estão sendo comitadas no banco?
Responder
Gostei + 0
05/11/2004
Maicongabriel
Não utilize ´ApplyUpdates(-1)´, pois assim você ignora os erros que possam vir a ocorrer durante o ´Commit´ dos dados e consequentemente um Rollback é efetuado!
Ao invés de -1, utilize 0,1,2,... ou o numero que desejar, que deve ser igual ao numero de erros que você deseja que sejam exibidos, até efetuar o ´RollBack´.
Para verificar os Erros, no seu ClientDataSet (se você possui D7 e superior), faça o seguinte:
Declare na uses a unit: [b:893c9b5952]RecError[/b:893c9b5952]
No evento OnReconcileError, adicione:
Esta é apenas uma das possibilidades! Outras possibilidades podem estar diretamente ligadas ao ´Interbase Express´, com o qual eu particularmente não trabalho e desconheço.
Ao invés de -1, utilize 0,1,2,... ou o numero que desejar, que deve ser igual ao numero de erros que você deseja que sejam exibidos, até efetuar o ´RollBack´.
Para verificar os Erros, no seu ClientDataSet (se você possui D7 e superior), faça o seguinte:
Declare na uses a unit: [b:893c9b5952]RecError[/b:893c9b5952]
No evento OnReconcileError, adicione:
Action := HandleReconcileError(DataSet, UpdateKind, E);
Esta é apenas uma das possibilidades! Outras possibilidades podem estar diretamente ligadas ao ´Interbase Express´, com o qual eu particularmente não trabalho e desconheço.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)