Rede - Como realmente funciona?
Ola pessoal, eu andei olhando muito aqui no forum, ja li bastante e não acheio o que realmente queria, por isso estou postando esse novo tópico.
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?
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
Curtidas 0
Respostas
Caninha51
03/01/2006
Tenta servidor:c:\pasta\banco\arquivo.gdb
GOSTEI 0
Sanses
03/01/2006
olá
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
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
GOSTEI 0
Eixox
03/01/2006
Não esqueça também de adicionar a porta de funcionamento do Firebird
no arquivo [i:c342e47352][b:c342e47352]SERVICES [/b:c342e47352][/i:c342e47352]do Windows
[b:c342e47352]gbs_db 3050/tcp[/b:c342e47352]
no arquivo [i:c342e47352][b:c342e47352]SERVICES [/b:c342e47352][/i:c342e47352]do Windows
[b:c342e47352]gbs_db 3050/tcp[/b:c342e47352]
GOSTEI 0
Eixox
03/01/2006
g[color=red:03869f8b45][b:03869f8b45]b[/b:03869f8b45][/color:03869f8b45]s_db 3050/tcp
eu errei é g[color=blue:03869f8b45][u:03869f8b45][i:03869f8b45][b:03869f8b45]d[/b:03869f8b45][/i:03869f8b45][/u:03869f8b45][/color:03869f8b45]s
eu errei é g[color=blue:03869f8b45][u:03869f8b45][i:03869f8b45][b:03869f8b45]d[/b:03869f8b45][/i:03869f8b45][/u:03869f8b45][/color:03869f8b45]s
GOSTEI 0
Chip_set
03/01/2006
g[color=red:58d4624b36][b:58d4624b36]b[/b:58d4624b36][/color:58d4624b36]s_db 3050/tcp
eu errei é g[color=blue:58d4624b36][u:58d4624b36][i:58d4624b36][b:58d4624b36]d[/b:58d4624b36][/i:58d4624b36][/u:58d4624b36][/color:58d4624b36]s
:( 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:
GOSTEI 0
Chip_set
03/01/2006
Bom vamos ver se estou no caminho.
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. :( :(
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. :( :(
GOSTEI 0
Chip_set
03/01/2006
Bom vamos ver se estou no caminho.
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. :( :(
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. :( :(
GOSTEI 0
Chip_set
03/01/2006
Desculpem as duas mensagens seguidas, o problema foi ocorrido por causa da minha internet a rádio(radioterapia).
Esse código acima, funciona? qual é a verdadeira função do .TestConnected?
Bom vamos ver se estou no caminho.
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. :( :(
Esse código acima, funciona? qual é a verdadeira função do .TestConnected?
GOSTEI 0
Techsoft
03/01/2006
Amigo, eu utilizo um arquivo INI para este tipo de coisa.
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.
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.
GOSTEI 0