Programa em rede

23/05/2003

1

Configurei meu programa certinho para funcionar em rede.
Só que está acontecendo um probleminha. :cry:

Quando edito ou incluo um registro se a outra máquina estiver com o progra aberto ele não mostra o novo dado.
Se eu fechar o programa e abrir novamente, ele mostra os dados atualizados.

O que faço?


Responder

Posts

23/05/2003

Scobin

Querida:

Qual é a base de dados que vc utiliza?


Responder

23/05/2003

Latrodectrus

Acredito que o banco que está usando é o interbase se for:

primeiro vc vai colocar essas linhas no parametro de seu IBTransaction1

read_committed
rec_version
nowait

Depois coloque no evento afterPost e AfterDelete de cada Table ou DataSet...o codigo abaixo

IBTable.Database.ApplyUpdates([IBtable]);
IBTransaction1.CommitRetaining;

Naum esqueça para cada tabela ou DataSet,,
isso vai gravar seus dados fisicamente,

e beleza

Agora toda vez que vc der um post em seguida de um REFRESH também,
ex:
Ibtable1.pos;
IBtable1.Refresh;


Responder

23/05/2003

Deboraborges

Estou usando Paradox.


Responder

23/05/2003

Aroldo Zanela

168 - Configuração do BDE para ambiente de rede
Para o seu aplicativo feito em Delphi rodar em rede, você deve instalar o BDE em todas as estações. No BDE de cada estação, você deve colocar no parâmetro NET DIR do drive PARADOX o local onde estão as bases de dados e na PATH do Alias especificar o caminho das base de dados. Mas muita atenção, todas as estações devem estar com a mesma configuração do BDE. Veja o exemplo abaixo para configuração do parâmetro NET DIR do drive PARADOX e o PATH do Alias.

Estação n.1

NET DIR F:\

Path do Alias F:\DIRETORIO

Estação n.2

NET DIR F:\

Path do Alias F:\DIRETORIO

Estação n.3

NET DIR F:\

Path do Alias F:\DIRETORIO

Não é aconselhável que os aplicativos feitos em Delphi 1, sejam executados no servidor da base de dados, pois o PARADOX apresenta problemas de corrupção de arquivos e índices neste caso. É aconselhável que no servidor você coloque somente as bases de dados. Mas caso você tenha necessidade de utilizar o servidor você pode utilizar uma solução alternativa para o problema do PARADOX, esta solução esta sendo satisfatória na maioria dos casos. Digamos que a letra do drive de rede que você vai acessar o servidor, seja a letra ´F:´, então, faça o seguinte: Coloque a linha abaixo no arquivo AUTOEXEC.BAT, do servidor.

SUBST F: C:

Configure o BDE do servidor para que ele acesse o drive ´F:´

Esta linha deverá ser colocada apenas no servidor, com isso você passa a ter em seu servidor, um drive virtual para acessar o

drive C:, evitando o problema do PARADOX.

No Delphi 2 e Delphi 3, você deve utilizar um instalador de programas. No CD do Delphi 2 e Delphi 3 existe um instalador

chamado InstallShield para fazer a instalação e configuração do aplicativo e do BDE.

Veja abaixo os exemplos da configuração do BDE p/ Delphi 2 e 3:

Servidor Estação 1

NET DIR \\SERVIDOR\C NET DIR \\SERVIDOR\C

PATH DO ALIAS \\SERVIDOR\C\DIRETORIO PATH DO ALIAS \\SERVIDOR\C\DIRETORIO

LOCAL SHARE TRUE LOCAL SHARE FALSE

Estação 2 Estação 3

NET DIR \\SERVIDOR\C NET DIR \\SERVIDOR\C

PATH DO ALIAS \\SERVIDOR\C\DIRETORIO PATH DO ALIAS \\SERVIDOR\C\DIRETORIO

LOCAL SHARE FALSE LOCAL SHARE FALSE

DICA:

O executável pode ser colocado em cada máquina da rede, diminuindo assim o tráfego de rede.


Responder

24/05/2003

Deboraborges

Estou usando Delphi 5.
Configurei o BDE desta forma só que o problema é que quando eu insiro ou edito um registro em uma das máquinas, eu só consigo visualizar este dado em outra máquina se eu fechar e abrir o programa.


Responder

24/05/2003

Renan

Apos voce salvar os dados ou antes de dar append ou edit ou fazer qualquer operacao de um [b:1184a74e0c]refresh[/b:1184a74e0c] nas tabelas. isto atualizara os dados.

ex: tabela.refresh;

:wink:

[b:1184a74e0c]renan.freitas.costa@bol.com.br[/b:1184a74e0c]


Responder

24/05/2003

Aroldo Zanela

Debora,

Se você estiver usando TTables é necessário utilizar o método refresh para atualizar os dados que foram atualizados por outra estação. No caso de TQuerys é necessários utilizar o métodos de fechamento e abertura da mesma para ´pegar´ as atualizações.

Se não estiver funcionando desta maneira, recomento baixar uma nova versão do BDE pra ver se resolve. www.bdesupport.com

Me avise se não conseguir.


Responder

26/05/2003

Scobin

Se com a ajuda dos colegas vc não tenda o comando a seguir:

acrescente nas uses do form que estiver a tabela:
DBIProcs


procedure Tabela.AfterPost(DataSet: TDataSet);
begin
DBISaveChanges (tabela.Handle);
end;


Responder

26/05/2003

Deboraborges

Socorro!!!!!!! :(

Já fiz tudo isso e não adiantou. :cry:

:( *Coloquei refresh antes dos edit e append, depois dos post.

:? *Configurei BDE

Servidor
Enable BCD = False
Path C:\W_Power\Db
Net Dir C:

Clientes
Enable BCD = False
Net Dir S:
path S:\W_Power\Db


:cry: *Coloquei o comando abaixo em todos evento AfterPost de todas as tabelas:
DBISaveChanges(DataModule1.tblUsuario.Handle);


O que está faltando eu fazer para esse programa funcionar em rede?
:cry: :cry: Não sei mais o que fazer :cry: :cry:


Responder

27/05/2003

Scobin

Debora, pelo que vc escreveu deu para entender que vc:

Está usando o componente TTable no seus formulários, o que acontece é que toda vez que vc chama o seu sistema no terminal 2 o programa carrega toda a sua base de dados para este terminal 2, e quando vc faz uma alteração ou inclusão no terminal 1 a base que está carregada no terminal 2 não sofre nenhuma alteração. Sendo assim vc não conseguira ver as alterações no terminal 2 ao menos que vc feche o sistema e carregue de novo.

Vc pode fazer o seguinte:

1 - Vc está abrindo todas as tabelas no DataModule, mas quando vc fecha o formulário vc fecha as tabelas tbém? Se não fechar vc pode começando fechar as tabelas todas vez que vc fecha o formulários e abrir as tabelas toda vez que abrir o formulários.

2 - Vc pode no lugar de usar TTable usar TQuerys, sendo assim vc não trará toda a base de dados para o terminal 2, mas somente o Cadastro que vc querer, pois na TQuerys vc utilizado comando de SQL. Sendo assim qualquer alteração que a base de dados sofrer desde inclusão a uma alteração, todos os terminais terá acesso assim que acessar o cadastro alterado ou incluido.

3 - Vc abandonar o PARADOX e passar a trabalhar com Banco de Dados (Cliente/Servidor), eu particularmente utilizo o INTERBASE.

Passa o seu e-mail para mim que eu te encaminho uma apostila que fala sobre este assundo de trabalhar com (Cliente/Servidor), isso é se vc quiser.


Responder

27/05/2003

Deboraborges

No evento OnClose do Form coloquei:
tabela.active := false;
No evento OnActive coloquei:
tabela.active := true;

Estou até com :oops: de dizer que não funcionou.
Posso jogar meu programa no lixo? :cry:


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira