Rede - Como realmente funciona?
03/01/2006
0
Digamos:
Tenho uma aplicação desenvolvida em delphi7, banco firebird 1,5, uso o Ibexpert para modelagem, os componentes Ibdatabase e Ibtransation e as tabelas Ibtable e datasource.
No caminho do meu Ibdatabase eu coloca assim: c:\pasta\pasta\banco
isso ocorre de maneira certo no servidor que é um windows xp ou 98
Agora vem a pergunta.
E nos terminais? Sendo que eles estão mapeados assim \\servidor\c
eu tenho que colocar esse caminho no Ibdatabase?
O que é mais aconselhavel?
Chip_set
Posts
03/01/2006
Sanses
mais aconselhável é a maneira correta de se fazer. Veja, seu banco de dados trabalha com o protocolo TCP/IP. Logo, voce não precisa mapear o endereço da rede UNC como em \\nomedomicro\pastadobanco.
Faça como o colega acima sitou e tire o mapeamento da rede.
[b:c0c25f3168]nome_servidor:c:\pasta\banco.fdb[/b:c0c25f3168]
onde
nome_doservidor = nome da máquina, endereço ip(ex: 192.168.0.1)
o resto é o caminho local do banco de dados...
[]´s
Sanses
03/01/2006
Eixox
no arquivo [i:c342e47352][b:c342e47352]SERVICES [/b:c342e47352][/i:c342e47352]do Windows
[b:c342e47352]gbs_db 3050/tcp[/b:c342e47352]
03/01/2006
Eixox
eu errei é g[color=blue:03869f8b45][u:03869f8b45][i:03869f8b45][b:03869f8b45]d[/b:03869f8b45][/i:03869f8b45][/u:03869f8b45][/color:03869f8b45]s
03/01/2006
Chip_set
Eu sou totalmente leito no assunto, como se adciona isso? e mais como eu vou fazer para colocar o endereçamento la no database em tempo de execução, leio ele em um arquivo txt primeiro.
Desculpem a minha ignorancia.
: :( :cry:
03/01/2006
Chip_set
Eu coloquei no oncreate do formulário principal o seguinte código:
if bancos.IBDatabase.TestConnected=false then
begin
bancos.IBDatabase.DatabaseName:=´C:\MSHELL\LIBERTY\DADOS\LIBERTY´;
bancos.IBDatabase.Connected:=true;
if bancos.IBDatabase.TestConnected=false then
begin bancos.IBDatabase.DatabaseName:=´servidor:C:\MSHELL\LIBERTY\DADOS\LIBERTY´;
bancos.IBDatabase.Connected:=true;
if bancos.IBDatabase.TestConnected=false then
begin
showmessage(´Favor consultar o suporte técnico, não foi possivel conectar ao banco de dados´);
end;
end;
end;
será que isso poderia funcionar? mas tipo assim, como eu verificaria a conexão antes de dar o conect = true pq ai eu evitaria o erro da conexão do banco? mas ainda não sei como fazer para liberar a porta no service do windows. :( :(
03/01/2006
Chip_set
Eu coloquei no oncreate do formulário principal o seguinte código:
if bancos.IBDatabase.TestConnected=false then
begin
bancos.IBDatabase.DatabaseName:=´C:\MSHELL\LIBERTY\DADOS\LIBERTY´;
bancos.IBDatabase.Connected:=true;
if bancos.IBDatabase.TestConnected=false then
begin bancos.IBDatabase.DatabaseName:=´servidor:C:\MSHELL\LIBERTY\DADOS\LIBERTY´;
bancos.IBDatabase.Connected:=true;
if bancos.IBDatabase.TestConnected=false then
begin
showmessage(´Favor consultar o suporte técnico, não foi possivel conectar ao banco de dados´);
end;
end;
end;
será que isso poderia funcionar? mas tipo assim, como eu verificaria a conexão antes de dar o conect = true pq ai eu evitaria o erro da conexão do banco? mas ainda não sei como fazer para liberar a porta no service do windows. :( :(
04/01/2006
Chip_set
Esse código acima, funciona? qual é a verdadeira função do .TestConnected?
04/01/2006
Techsoft
meu arquivo INI contem o seguinte:
[CONFIG]
DATABASE=C:\MEU_PROG\MEU_BD.GDB
USER=SYSDBA
PASS=masterkey
***
(por exemplo)
***
isso quando estou em desenvolvimento ou se o sistema estiver rodando na mesma máquina que o servidor de BD.
Quando o cliente utilizar o sistema com um servidor e precisar informar onde está o banco, basta editar este arquivo INI e colocar o endereço correto
[CONFIG]
DATABASE=192.168.0.1:c:\MEU_PROG\MEU_BD.GDB
USER=SYSDBA
PASS=masterkey
***
(por exemplo)
***
Ai o que eu faço é o seguinte:
no onCreate eu faço o seguinte código:
var
lINI: TINIFiles
begin
lINI := TINIFiles.Create(ExtractFilePath(Application.ExeNAme)+´\NOME_DO_ARQUIVO.INI´);
with ibDatabase do
begin
Close;
DatabaseName := lINI.ReadString(´CONFIG´,´DATABASE´,´ERRO´);
Params.Add(´USER=´+lINI.ReadString(´CONFIG´,´USER´,´ERRO´);
Params.Add(´PASSWORD=´+lINI.ReadString(´CONFIG´,´PASS´,´ERRO´);
Open;
end;
lINI.Free;
end;
Sempre funciona perfeitamente e dá a possibilidade do cliente instalar em qualquer lugar que seja a base de dados e o aplicativo, basta que o EXE e o arquivo INI estejam na mesma pasta.
Não tenho bem certeza se é exatamente assim meu código, mas é quase, qualquer coisa manda um mail pra mim que assim que estiver no meu PC te mando o código correto.
techsoft@terra.com.br
Espero ter ajudado.
Clique aqui para fazer login e interagir na Comunidade :)