Fórum Atualização automática de todas as estações da rede #258472

15/11/2004

0

Salve... pessoal tenho um aplicativo em delphi 7, BD firebird 1.5, estou usando componentes IBdatabase, IBtransaction e IBDataset... essa aplicação roda em diversas máquinas em rede... quando eu insiro um registro em uma tabela em uma determinada máquina... as outras não conseguem ver este registro... somente após fechar e abrir o sistema novamente... alguem sabe o que posso fazer para corrigir isso ???

obrigado !!! :lol:


Linox

Linox

Responder

Posts

15/11/2004

Godzilla_xf

[b:d4ce569958]Olá, bom pelo que eu sei para que as alterações ou inserções que o sistema cliente faz na base de dados do servidor sejam vistas por todas as outras estações da rede vc deve executar um Commit das transações executadas para que estas sejam salvas na base de dados.

Vc esta executando este Commit após as Inserções, alterações, exclusões etc...????

Acredito que seje isso mais posso estar enganado afinal vc não mensionou se estava efetuando os Commit´s e Rollback´s nas transções!!!!

espero ter ajudado...[/b:d4ce569958]


Responder

Gostei + 0

15/11/2004

Linox

Estou usando sim... estou usando commitretaining para deixar a base ativa...

no after post das tabelas eu uso:

  IBDataset.ApplyUpdates;
  IBDataset.Refresh;
  IBTransaction.CommitRetaining;


As propriedades ( seetings ) do IBTransaction estão assim:
read_committed
rec_version
nowait


mas não atualiza pras demais estações... não sei o que é...


Responder

Gostei + 0

15/11/2004

Godzilla_xf

[b:eb683ea89d]Acredito que vc deveria tentar usar somente o ´Commit´ e não o CommitRetaining, acredito que vai funcionar. Faça um teste!!![/b:eb683ea89d]


Responder

Gostei + 0

15/11/2004

Linox

Mas deveria funcionar com commitretaining... porque não funciona ?? depois que dou o commit o que eu preciso levantar ?? o banco de dados e todas as tabelas novamente ???


Responder

Gostei + 0

15/11/2004

Linox

Dei só o commit, mas aí ele não grava a alteração.... nossa tá estranho isso...


Responder

Gostei + 0

16/11/2004

Godzilla_xf

Como esta a propriedade DefaultAction do IBTransaction1 esta como:
1. TACommit
2. TACommitRetaining

isso e só uma tentativa....


Responder

Gostei + 0

16/11/2004

Linox

TACommit


Responder

Gostei + 0

16/11/2004

Gandalf.nho

Você deve configurar as transações como ReadCommited


Responder

Gostei + 0

16/11/2004

Linox

mas ela já está...
read_committed 
rec_version 
nowait



Responder

Gostei + 0

17/11/2004

Nerdex

[u:1b0de27d68]Comentário[/u:1b0de27d68]:
Este é um velho problema... pois venho acompanhando os posts em outra seção do Fórum que trata melhor sobre este tipo de assunto... Já vi gente dizendo que isto só é possivel se vc desativar e logo reativar um dataset para poder haver o refresh nos clientes... ´Absurdo... ter que fazer isto...´
Acredito que em 3 camadas isto não seja problema...


Responder

Gostei + 0

17/11/2004

Rômulo Barros

Acredito que vc esteja abrindo seus DataSets (DataSet.Open) durante a inicialização do projeto. Faça isto no evento OnCreate do seu formulário (DataSet.Open();) e no evento OnDestroy feche a seu DataSet (DataSet.Close(););


Responder

Gostei + 0

17/11/2004

Osocram

Jah tentou fazer um refresh no dataSet so p ver se ele tras o dado?

tipo vc altera no terminal 1 e vai no terminal 2 e dah um refresh... e veja se tras.

Pois os dados q vc esta vendo provavelmente estaum em memoria... por isso non tah atualizado ainda.


Responder

Gostei + 0

24/11/2004

Linox

Poxa... pensei que isso estava resolvido... seguinte... quando eu altero um registro, ele fica pro meu micro... até sair... quando saio do sistema ele volta o valor antigo... não está adimitindo alterações alguem sabe o que pode ser ????

No AfterPost da tabela faço assim:

dsTABELA1.ApplyUpdates;
IBDdatabase.ApplyUpdates([dsTABELA1]);
IBTdatabase.CommitRetaining;
dsTABELA1.Refresh;

ME AJUDEM NAO AGUENTO MAIS...... :?


Responder

Gostei + 0

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

Aceitar