GARANTIR DESCONTO

Fórum Não consigo atualizar registro duas vezes seguidas #491729

11/09/2014

0

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

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

Sidnei Junior

Responder

Posts

11/09/2014

Marisiana Battistella

Olá Sidnei!
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

Não sei isso se aplica ao teu caso...
Desculpa não poder ajudar mais especificamente.
Responder

Gostei + 0

11/09/2014

Sidnei Junior

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!
Responder

Gostei + 0

11/09/2014

Mauricio Rodrigues

procedure TFCad.ButGravaClick(Sender: TObject);
begin
if QCadastro.State in [dsInsert,dsEdit] then
begin
QCadastro.Post;
QCadastro.close;
QCadastro.open;
end;

end;
Responder

Gostei + 0

12/09/2014

Marisiana Battistella

Sidnei, chegou a aplicar o exemplo que o Mauricio postou? Resolveu?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar