Não consigo atualizar registro duas vezes seguidas
Pessoal seguinte estou tratando o CRUD da minha aplicação verificando o estado do meu componente ADO Query ou seja quando pressiono obotão gravar ele verifica do estado da query
Quando eu faço a atualização uma única vez após ter localizado o registro o update rola normalmente, ja na segunda exibe a seuinte mensagem:
A LINHA NÃO PODE SER LOCALIZADA PARA ATUALIZAÇÃO, ALGUNS VALORES PODEM TER SIDO ALTERADOS DESDE QUE ELA FOI LIDA PELA ÚLTIMA VEZ.
aí nesse passo tenho que fazer outra busca no caso buscando o mesmo registro e alterar novamente. Não consigo alterar duas vezes seguidas?
Conhecem alguma forma de colocar esse componente novamente apto para atualização sen necessidade de uma nova busca?
procedure TFCad.ButGravaClick(Sender: TObject);
begin
if QCadastro.State in [dsInsert,dsEdit] then
QCadastro.Post;
end;
Quando eu faço a atualização uma única vez após ter localizado o registro o update rola normalmente, ja na segunda exibe a seuinte mensagem:
A LINHA NÃO PODE SER LOCALIZADA PARA ATUALIZAÇÃO, ALGUNS VALORES PODEM TER SIDO ALTERADOS DESDE QUE ELA FOI LIDA PELA ÚLTIMA VEZ.
aí nesse passo tenho que fazer outra busca no caso buscando o mesmo registro e alterar novamente. Não consigo alterar duas vezes seguidas?
Conhecem alguma forma de colocar esse componente novamente apto para atualização sen necessidade de uma nova busca?
Sidnei Junior
Curtidas 0
Respostas
Marisiana Battistella
11/09/2014
Olá Sidnei!
Encontrei essa dica na web que seria uma possível forma de solucionar esse erro:
Não sei isso se aplica ao teu caso...
Desculpa não poder ajudar mais especificamente.
Encontrei essa dica na web que seria uma possível forma de solucionar esse erro:
Quando agente não cria uma chave primaria para uma tabela, na hora do update ou post a ADO interpreta o primeiro campo como uma chave, ou seja
se na hora do post houver um outro registro na tabela cujo o valor do primeiro campo se repita da erro!
Para solucionar o problema na propriedade CursorLocation do ADOTable, ponha como clUseServer
se na hora do post houver um outro registro na tabela cujo o valor do primeiro campo se repita da erro!
Para solucionar o problema na propriedade CursorLocation do ADOTable, ponha como clUseServer
Não sei isso se aplica ao teu caso...
Desculpa não poder ajudar mais especificamente.
GOSTEI 0
Sidnei Junior
11/09/2014
Olá Marisiana pois é o pior é que minha tabela está certinha com chave primária tudo pelos conformes, estou achando que é algo referente ao componente AdoQuery que não está conseguindo interpretar que eu ja dei o post e que agora precisa ficar disponível novamente para nova inserção e/ou atualização que é o meu caso. Mas em todo caso muito obrigado!
GOSTEI 0
Mauricio Rodrigues
11/09/2014
procedure TFCad.ButGravaClick(Sender: TObject);
begin
if QCadastro.State in [dsInsert,dsEdit] then
begin
QCadastro.Post;
QCadastro.close;
QCadastro.open;
end;
end;
begin
if QCadastro.State in [dsInsert,dsEdit] then
begin
QCadastro.Post;
QCadastro.close;
QCadastro.open;
end;
end;
GOSTEI 0
Marisiana Battistella
11/09/2014
Sidnei, chegou a aplicar o exemplo que o Mauricio postou? Resolveu?
GOSTEI 0