porq so atualiza BD depois q fecha aplicaçao ?

Delphi

28/04/2005

Tenho uma aplicaçao em rede e se um usuario alterar alguma coisa num registro os outros usuarios da rede so vem a alteraçao depois q quem alterou o registro fechar o programa ou seja nao esta atualizando o banco de dados, so atualiza depois q fecha o prog!

Uso interbase 6.0 acesso via ibx !

[color=green:2fd8fad081]Tópico editado por gandalf.nho. Por favor, não poste em maiúsculas[/color:2fd8fad081]


Guilherme

Guilherme

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

28/04/2005

Vc está comitando assim que salva e setou as transações como ReadCommited?


GOSTEI 0
Guilherme

Guilherme

28/04/2005

so estou dando applyupdate no afterpost !!!!tenho q fazer mais alguma coisa???? o q ????


GOSTEI 0
Gandalf.nho

Gandalf.nho

28/04/2005

Vc precisa comitar a transação para que as alterações sejam gravadas em definitivo no banco. Provavelmente só está comitando ao fechar o sistema.


GOSTEI 0
Guilherme

Guilherme

28/04/2005

intao vc pode me falar como faço isso ????????????????


GOSTEI 0
Gandalf.nho

Gandalf.nho

28/04/2005

Vc não está usando ClientDataSet, né? Se não, após realizar suas alterações vc deve dar um Commit na transação associada ao componente que vc está usando. Não esqueça de configurar as transações como ReadCommited para que as outras máquinas possam enxergar as alterações que uma fez. E vc não precisa usar ApplyUpdates a menos que esteja com o cache ativo, basta dar o Post e depois Commit.
Ex:

Transaction1.StartTransaction;
Query1.Insert;
Query1NOME_CAMPO.Value = ´TESTE´;
Query1.Post;
Transaction1.Commit;



GOSTEI 0
Guilherme

Guilherme

28/04/2005

usei assim IBTransaction1.CommitRetaining; (assim deu certo )
pois so o commit; sumia os dados da tela por isso ocorre ???


GOSTEI 0
Gandalf.nho

Gandalf.nho

28/04/2005

Isso acontece pq o Commit fecha a transação e consequentemente os datasets associados e o CommitRetaining mantém a transação aberta.


GOSTEI 0
Steve_narancic

Steve_narancic

28/04/2005

Isso acontece pq o Commit fecha a transação e consequentemente os datasets associados e o CommitRetaining mantém a transação aberta.


Isto significa que o registro ficará bloqueado até eu der um commit?


GOSTEI 0
Gandalf.nho

Gandalf.nho

28/04/2005

O CommitRetaining comita a transação mas não a fecha como o Commit faz, vc pode usá-la, embora geralmente se recomende não deixar uma transação aberta por mais tempo que o necessário.


GOSTEI 0
POSTAR