Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Betina

o mesmo programa a executar em PC´s diferentes

Recommended Posts

Ola!Tou com um pequeno problema. Estou a tentar executar o meu programa mais que uma vez (de computadores diferentes utilizando a mesma base de dados), utilizando uma pasta partilhada.Utilizo o Paradox.A minha intenção é que o segundo utilizador possa aceder ao programa (Já estando um a ser executado noutro posto). O que queria saber é quando um segundo utilizador vai tentar correr o programa, como é que detecto que o programa já está aberto, ou que a base de dados já está a ser utilizada no outro posto? Queria saber isto para que eu o obrigue apenas a consultar o programa e não fazer alterações.Utilizei a propriedade exclusive das tabelas mas não está a funcionar. Ou seja, abre-me o programa normalmente sem dar erro a indicar que a base de dados já está aberta.Agradecia se alguém soubesse me dar uma dica.Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma dica, que pode não ser a melhor solução, mas funciona:

 

no início da sua aplicação procure sempre por um arquivo (que, de preferência, esteja na mesma pasta onde estão suas tabelas). vamos chamá-lo de shared.shd.

 

quando rodar sua aplicação, procure pelo arquivo:

1. se encontra-lo tente apagar.

1.1 se não conseguir apagar é porque outra estação está utilizando. então os dados para esse usuário deverão ser somente para leitura. ou, se conseguir apagá-lo,

1.2 crie-o e o mantenha aberto. esse usuário que conseguiu criar o arquivo e abrí-lo tem permissão para leitura/escrita no banco de dados. só o feche o arquivo shared.shd ao sair da aplicação.

2. se não encontrá-lo, siga os procedimentos do item 1.2

 

acho que isso pode ajuda-lo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja me lembrei de fazer algo parecido mas caso a aplicação aborte por algum motivo, o ficheiro nao será apagado e se o utilizador voltar a tentar abrir o programa, e o programa abrirá em modo de leitura, o que não seria correcto. Obrigada pela dica na mesma :) Aceito mais sugestões :) Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Betina, essa é a solução que eu uso, e quanto ao que você falou, é por isso que o Emerson disse que você deve tentar apagar o arquivo quando encontra-lo... Se por um acaso, o computador que o criou tiver saído sem excluir o arquivo (queda de energia, etc), você conseguirá deletar o arquivo sem problemas... Então, poderá recria-lo, para que você possa abrir em leitura/escrita...[]'s,

Compartilhar este post


Link para o post
Compartilhar em outros sites

No OnCreate do seu applicativo, coloque algo assim:

   DeleteFile( 'C:\Teste.txt' );    If FileExists( 'C:\Teste.txt' ) Then        wModo := ReadOnly    Else If CreateFile( 'C:\teste.txt' ) Then        wModo := ReadWrite;

Acho que só isso já vai funcionar...

 

Lembrando que ReadOnly e ReadWrite eu já considerei que fosse um tipo existente, criado por você, assim como a variável wModo...

 

Se precisar de algo mais detalhado, é só avisar...

 

[]'s,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.