ATUALIZAÇÃO DEMORADA EM TABELAS - KEY VIOLATION

Delphi

08/02/2003

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

Curtidas 0

Respostas

Anonymous

Anonymous

08/02/2003

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


GOSTEI 0
Rafael Heise

Rafael Heise

08/02/2003

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...


GOSTEI 0
Sidfaria

Sidfaria

08/02/2003

//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.


GOSTEI 0
Rafael Heise

Rafael Heise

08/02/2003

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


GOSTEI 0
POSTAR