Rede - Como realmente funciona?

03/01/2006

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?


Chip_set

Respostas

03/01/2006

Caninha51

Tenta servidor:c:\pasta\banco\arquivo.gdb


Responder Citar

03/01/2006

Sanses

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


Responder Citar

03/01/2006

Eixox

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]


Responder Citar

03/01/2006

Eixox

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


Responder Citar

03/01/2006

Chip_set

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:


Responder Citar

03/01/2006

Chip_set

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. :( :(


Responder Citar

03/01/2006

Chip_set

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. :( :(


Responder Citar

04/01/2006

Chip_set

Desculpem as duas mensagens seguidas, o problema foi ocorrido por causa da minha internet a rádio(radioterapia).
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?


Responder Citar

04/01/2006

Techsoft

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.


Responder Citar