Problema com .cfg Preciso de Ajuda!!!

22/05/2003

1

Fala Galera!
O q está acontecendo é o seguinte:
Eu tenho um programa em delphi q está instalado em várias máquinas.
Eu utilizo bde e paradox.
O q eu fiz:
Eu copiei o executável na máquina, instalei o bde e direcionei ele para o arquivo idapi.cfg q está na rede. Isso significa q todas as máquinas acessam o mesmo idapi.cfg.
Mas mesmo assim, se uma estação está com o programa aberto e outra estação vai tentar acessar, dá o erro de .net e .lck.
O procedimento q eu fiz está errado?
O q eu tenho q fazer pra rodar os programas em rede e sendo multiusuário?
Alguém sabe outra forma de eu fazer isso?
Please! Eu preciso de ajuda!
Desde já, agradeço a todos!
VLW!


Responder

Posts

22/05/2003

Rubensavelino

Ja tentou usar a configuracao BDE local apontando para seu banco em rede ?



Responder

22/05/2003

L!nk!n

[quote:c83704aec7]Ja tentou usar a configuracao BDE local apontando para seu banco em rede ?
[/quote:c83704aec7]
Fala Rubens
Mas a msg q aparece é q ´o banco já esta sendo usado por outro .net´.
aí se eu configurar os bde´s localmente, ñ é aí q vai dar pau mesmo???
por favor, me corrijam se eu estiver errado...


Responder

22/05/2003

Rubensavelino

Veja esse exemplo do Clube Delphi


http://www.clubedelphi.com.br/exemplos/paradoxrede.zip


Responder

22/05/2003

Rafael Heise

Bom, o que acontece é o seguinte. Se você está utilizando um mesmo arquivo de configurações, ele vai referencia a máquina em questão. É assim que o BDE funciona. O DBE não é multi usuário, por isso é dificil de utilizá-lo num XP ou 2000 com mais de 1 usuário. Você é obrigado a colocar o arquivo em um lugar onde todos tenham acesso, se eles podem mexer claro, ou dar permissão. Mas a questão é, se eu estou chamando da minha máquina, o .cfg de outra máquina, e lá diz C:\ como NetDir, ele deveria pegar o C:\ da minha máquina. Mas não pega. Então o que você deve fazer. Faça que seu programa ao iniciar, e não achar nas configurações do BDE o seu alias, que ele crie com o que você quer. Ou você pode fazer diferente. Na variável global da sua aplicação, Session, ela contém duas variáveis : NetFileDir e PrivDir. Sete o PrivDir para o temp da sua máquina local pois no temp da máquina local, mesmo sendo vários usuário, ele terá permissão para gravar, pois se colocar no diretório do exe, pode não ter permissão. Faça o seguinte:
function getTempDir : string;
var
tempDir : PChar;
begin
SetLength(tempDir,144);
GetTempPath(Length(tempDir),PChar(tempDir));
SetLength(tempDir,StrLen(PChar(tempDir)));
result := tempDir;
end;

e dai faça o seguinte ao iniciar a aplicação, mas lembre-se, antes de se conectar ao banco de dados:
Session.PrivateDir := getTempDir;
acredito que isso resolverá seu problema, pois assim, sua aplicação estará gravando os arquivos temporários no PrivateDir local, e não no servidor evitando conflitos por vários usuários. O NetFileDir é o diretório para controle das tabelas pela rede, para que o BDE cuide disso, mas se quiser, pode setar também, mas é um pouco arriscado se você não trata isso na sua aplicação.
abraços....

[Explicação sobre o PrivateDir retirada do Help do Delphi]


Responder