Inserção, edição no ClientDataSet
Pessoal, muito bom dia!!!
Minha dúvida é o seguinte.
Tenho um cadastro de cidade onde a tabela CIDADE possui apenas dois campos ID_CIDADE e NOME. Quando clico em Novo, eu dou o Append no cds. Depois quando eu clico em Gravar, eu dou um Post no CDS e em seguida dou um ApplyUpdates. Aí, em seguida, logo depois que eu inseri um registro, eu vou alterar o registro. Então clico em Alterar. Quando eu vou Gravar, dou novamente Post no CDS e em seguida dou um AppyUpdates. Só que está dano os seguintes erros no ApplyUpdates:
[color=red:5512c3ba97]Record not found or changed by another user.
Unable to find record. No key specified.[/color:5512c3ba97].
Esse erro é pq a aplicação não está achando o valor do campo ID_CIDADE. Sei que ele não acha o valor pq o registro foi gravado no banco e ainda não está no dataset.
Como que eu faço para pegar esse valor do campo ID_CIDADE logo depois que eu inclui um registro no banco, para eu poder, se eu quiser, em seguida alterar este mesmo registro que eu acabei de incluir???
Existe alguma propriedade no campo ID_CIDADE no CDS que eu tenho que alterar?
Estou usando Delphi 2005, SQL Server e ADO.
Cristiano
Minha dúvida é o seguinte.
Tenho um cadastro de cidade onde a tabela CIDADE possui apenas dois campos ID_CIDADE e NOME. Quando clico em Novo, eu dou o Append no cds. Depois quando eu clico em Gravar, eu dou um Post no CDS e em seguida dou um ApplyUpdates. Aí, em seguida, logo depois que eu inseri um registro, eu vou alterar o registro. Então clico em Alterar. Quando eu vou Gravar, dou novamente Post no CDS e em seguida dou um AppyUpdates. Só que está dano os seguintes erros no ApplyUpdates:
[color=red:5512c3ba97]Record not found or changed by another user.
Unable to find record. No key specified.[/color:5512c3ba97].
Esse erro é pq a aplicação não está achando o valor do campo ID_CIDADE. Sei que ele não acha o valor pq o registro foi gravado no banco e ainda não está no dataset.
Como que eu faço para pegar esse valor do campo ID_CIDADE logo depois que eu inclui um registro no banco, para eu poder, se eu quiser, em seguida alterar este mesmo registro que eu acabei de incluir???
Existe alguma propriedade no campo ID_CIDADE no CDS que eu tenho que alterar?
Estou usando Delphi 2005, SQL Server e ADO.
Cristiano
Cristianojedi
Curtidas 0
Respostas
Kotho
19/08/2005
Você pode usar um refresh apos o ApplyUpdates...
GOSTEI 0
Cristianojedi
19/08/2005
Já tentei...
Só que depois que eu dou o Refresh, o meu dbedtNome fica vazio!!! Aí eu clico em Alterar e quem que eu estou alterando, um campo vazio???
Não resolve o meu problema...
Obrigado!
Mais alguma sugestão?
Cristiano
Só que depois que eu dou o Refresh, o meu dbedtNome fica vazio!!! Aí eu clico em Alterar e quem que eu estou alterando, um campo vazio???
Não resolve o meu problema...
Obrigado!
Mais alguma sugestão?
Cristiano
GOSTEI 0
Cristianojedi
19/08/2005
Alguém mais pode me ajudar?
Cristiano
Cristiano
GOSTEI 0
Crash
19/08/2005
da um close e depois um open porque refresh eu acho q nao vai resolver. E se vc tiver utilizando IBClientDataSet.. eu te aconselho a dar um Commit no transaction.
t+
t+
GOSTEI 0
Cristianojedi
19/08/2005
É mais se eu der um close e depois um open co CDS, o meu DBEdit vai limpar... Eu não quero isso!!! Quero que quando eu clicar em Alterar, logo depois te ter incluído um registro, ele me permita fazer a alteração e gravar normalmente sem erro. Se eu limpar a tela (fechando e abrindo o CDS), O registro não vai estar lá mais pra que eu possa altera-lo.
Obrigado!
Alguém mais pode me ajudar?
Cristiano
Obrigado!
Alguém mais pode me ajudar?
Cristiano
GOSTEI 0
Cristianojedi
19/08/2005
sobe...
GOSTEI 0
Cristianojedi
19/08/2005
Mais ninguém pode me ajudar nisso?
Obrigado!!!
Cristiano
Obrigado!!!
Cristiano
GOSTEI 0
Crash
19/08/2005
entao faz o seguinte:
cira uma variavel pegando o codigo do novo registro, da um close depois um open e da um locate para esse registro. Para nao aparecer para o cliente use DisabeControls e EnableControls.
t+
cira uma variavel pegando o codigo do novo registro, da um close depois um open e da um locate para esse registro. Para nao aparecer para o cliente use DisabeControls e EnableControls.
t+
GOSTEI 0