ATUALIZAÇÃO DEMORADA EM TABELAS - KEY VIOLATION
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?
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](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-3.png)
Cic.pop
Curtidas 0
Respostas
![Anonymous Anonymous](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-6.png)
Anonymous
08/02/2003
Acho que se vc der um refresh na tabela, talvez resolva!
GOSTEI 0
![Rafael Heise Rafael Heise](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-3.png)
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](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-5.png)
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.
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](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-1.png)
Rafael Heise
08/02/2003
Era esse comando mesmo .. bem .. ai está. . só usar. ..
abraços...
abraços...
GOSTEI 0