O sistema nã atualiza
22/12/2005
0
Eu abri o sistema duas vezes, em um eu alterei alguns dados e salvei, coloquei o comando de refres da tabela, mas só atualiza no outro sistema aberto quando eu fecho e abro ele de novo. Pq, como funciona esse negocio? O que devo fazer para ele funcionar, ou seja atuzalizar automáticamente sem que seja necessário eu fechar e abrir o sistema novamente. ;(
Eu uso Firebird 1,5 delphi7 e os componentes Ibtable da aba interbase e datasource da aba data acces.
Chip_set
Posts
22/12/2005
Eixox
responderei a sua pergunta, mas outras tantas iguais a essa já foram respondidas, portanto, não me leve a mal.
A resposta é: Quando o sistema está em ´rede´, veja que você está trabalhando com duas instâncias do mesmo sistema. Quando você atualizar os dados em uma instância, a outra, não atualizará os dados.
Por que? Simples. Uma consulta foi executada, o que você está vendo na outra instância nada mais é do que dados que estão em cache e não dados ligados diretamente a tabela - é quase um Shadow mas não é.
Portanto, para que seus dados em outra instância sejam atualizados, você deve executar o refresh manual. Se você quiser que isso seja feito automaticamente, o pessoal geralmente usa um timer ou coloca um botão para que o próprio usuário atualize os dados quando desejar.
Na forma de botão é o mais recomendado, já que dessa forma você reduz o tráfego na rede. Com o timer ele ficará executando o refresh dentro do período de tempo que você estimou.
22/12/2005
Chip_set
Eu coloquei no evento ofterpost da tabela o refresh, e ao mesmo tempo logo apos ter dado o comando post na tabela coloquei tb um refresh.
Foi logo depois de ter feito tudo isso que verifiquei o problema.
22/12/2005
Martins
Eu coloquei no evento ofterpost da tabela o refresh, e ao mesmo tempo logo apos ter dado o comando post na tabela coloquei tb um refresh.
Foi logo depois de ter feito tudo isso que verifiquei o problema.[/quote:85f2e5ac97]
Acredito q esse refresh logo após o comando post é desnecessário, já q vc tem ele no evento AfterPost da tebela, reveja tb as transações.
22/12/2005
Chip_set
Eu coloquei no evento ofterpost da tabela o refresh, e ao mesmo tempo logo apos ter dado o comando post na tabela coloquei tb um refresh.
Foi logo depois de ter feito tudo isso que verifiquei o problema.[/quote:187ef82e91]
Acredito q esse refresh logo após o comando post é desnecessário, já q vc tem ele no evento AfterPost da tebela, reveja tb as transações.[/quote:187ef82e91]
Como é que vê esse negocio de transações.
22/12/2005
Martins
22/12/2005
Chip_set
Só esses ai mesmo.
22/12/2005
Martins
Tenta então:
IBTable.Post; IBTable.Transaction.CommitRetaining;
22/12/2005
Martins
IBTable.Post; IBTable.Transaction.CommitRetaining;
ou então assim:
IBTable1.Post; IBTable1.ApplyUpdates; IBTable1.Refresh; IBTable1.Transaction.CommitRetaining;
Dê um duplo clique em seu IBTransaction, tente usar ReadCommited.
22/12/2005
Chip_set
IBTable1.Post; IBTable1.ApplyUpdates; IBTable1.Refresh; IBTable1.Transaction.CommitRetaining;
Coloquei todos, depois do post aplly, refresh, commitreta..
la na minha IBtransaction marquei a opção ReadCommited blz, ai tive que activar todas as tabelas novamente. então compilei mas abrir novamente dois sistemas, em um fiz o cadastro na agenda mas no outro ainda não aparece. Apenas se eu fechar o programa e abrir de novo.
23/12/2005
Martins
IBTable1.Post; IBTable1.ApplyUpdates; IBTable1.Refresh; IBTable1.Transaction.CommitRetaining;
Coloquei todos, depois do post aplly, refresh, commitreta..
la na minha IBtransaction marquei a opção ReadCommited blz, ai tive que activar todas as tabelas novamente. então compilei mas abrir novamente dois sistemas, em um fiz o cadastro na agenda mas no outro ainda não aparece. Apenas se eu fechar o programa e abrir de novo.[/quote:67c1a28472]
Isso é pq como o colega falou no inicio do tópico, seus dados estão no cache, vc teria q ter uma botão de refresh nessa outra aplicação ou então tente algo só para ver o q acontece, coloque um botão para fechar e abrir a tabela ou então dar um refres nela, nessa segunda instância, onde os dados estão sendo somente consultados.