ATUALIZAÇÃO DEMORADA EM TABELAS - KEY VIOLATION

08/02/2003

0

Galera,
Preciso de uma ajuda. Se alguem puder me ajudar fico muito grato.
Esse problema acontece tanto com banco de dados access como interbase.
Tenho uma tabela com um campo nome, por exemplo, e ele é ÚNICO, não permite duplicação. Caso eu exclua um valor existente e tentar incluí-lo novamente logo em seguida dá uma exceção de violação de integridade. Mesmo utilizando os comandos de trasação (StartTransaction,
Commit, e Rollback) esse problema acontece. Se eu fizer uma consulta constato que o valor que acabara de excluir ainda está lá como se não tivesse sido excluído e somente após algum tempo ou ao fechar a aplicação e abri-lá novamente é que a atualização acontece. Só consegui resolver isso fechando e abrindo o Database, coisa feia. Alguém pode me ajudar?


Cic.pop

Cic.pop

Responder

Posts

09/02/2003

Anonymous

Acho que se vc der um refresh na tabela, talvez resolva!


Responder

09/02/2003

Rafael Heise

isso acontece pq ao gravar ou excluir qualquer coisa, ele mantém as coisas em memória ou na própria table, e não se atualiza com o que deveria ser.. existe uma procedure que é do BDE, que faz com que o banco se atualize, ou seja, se você chamar essa procedure no AfterPost e AfterDelete das suas tabelas, ele sempre vai manter as tabelas atualizadas com o que está no banco fisicamente..... bom... eu não me lembro bem agora qual o comando .. mas se eu achar eu mando ... mas acho que um refresh também daria conta do recado...


Responder

09/02/2003

Sidfaria

//No AfterPost da Tabela faça

DBISaveChanges(NomeDaTabela.Handle);

//coloque no uses da Unit :

uses DBIProcs;

Este comando força a gravação do buffer da Tabela, que esta na memória, para o disco.


Responder

10/02/2003

Rafael Heise

Era esse comando mesmo .. bem .. ai está. . só usar. ..
abraços...


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar