Array
(
)

Rede - Como realmente funciona?

Chip_set
   - 03 jan 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?


Caninha51
   - 03 jan 2006

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


Sanses
   - 03 jan 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.

nome_servidor:c:\pasta\banco.fdb
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


Eixox
   - 03 jan 2006

Não esqueça também de adicionar a porta de funcionamento do Firebird
no arquivo SERVICES do Windows

gbs_db 3050/tcp


Eixox
   - 03 jan 2006

gbs_db 3050/tcp

eu errei é g[u:03869f8b45]d[/u:03869f8b45]s


Chip_set
   - 03 jan 2006


Citação:
gbs_db 3050/tcp

eu errei é g[u:58d4624b36]d[/u: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.
: :(


Chip_set
   - 03 jan 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. :( :(


Chip_set
   - 03 jan 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. :( :(


Chip_set
   - 04 jan 2006

Desculpem as duas mensagens seguidas, o problema foi ocorrido por causa da minha internet a rádio(radioterapia).

Citação:
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?


Techsoft
   - 04 jan 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.