Firedac e banco Firebird pelo aqruivo INI
Olá!
Pessoal, utilizei o código abaixo para efetuar a conexão com banco.
Tudo certo quando a aplicação é local; porém, não consegue conexão se o banco está em um servidor na rede.
Substituo o localhost pelo IP do servidor mas retorna erro [indicarei o erro aqui quando eu voltar no local da instalação].
Segue mais abaixo também, os parâmetros do INI.
Desde já, agradeço qualquer manifestação que possa me auxiliar. Grato!
'Config.INI':
[Sistema]
Server=localhost
User=SYSDBA
Password=masterkey
Database=C:\BACKUPS\AGENDA FINANCEIRA\Win32\Debug\Dados\DADOS.FDB
Procedimento na Aplicação:
procedure TfrmPrincipal.CaminhoBanco;
var
arquivoINI: TIniFile;
server, user, password, database, auxError, driver : string;
begin
if FDconexao.Connected then
FDconexao.Connected:= False;
arquivoINI:= TIniFile.Create(System.SysUtils.ExtractFilePath(ParamStr(0))+'\config.ini');
server:= arquivoINI.ReadString('Sistema','Server','');
user:= arquivoINI.ReadString('Sistema','User','');
password:= arquivoINI.ReadString('Sistema','password','');
database:= arquivoINI.ReadString('Sistema','Database','');
try
FDconexao.Params.Strings[0] := 'User_Name='+ user;
FDconexao.Params.Strings[1] := 'Password='+ password;
FDconexao.Params.Strings[2] := 'Database='+ database;
FDconexao.Params.Strings[3] := 'Server='+ server;
FDconexao.Connected:= True;
except
on E : exception do
begin
auxError := Copy(E.Message,20,500);
MessageDlg('Erro ao tentar se conectar com o banco de dados.'+#13
+#13+'Motivo:'+#13+#13+''+auxError,TMsgDlgType.mtWarning,[TMsgDlgBtn.mbOK],0);
Application.Terminate;
end;
end;
end;
Pessoal, utilizei o código abaixo para efetuar a conexão com banco.
Tudo certo quando a aplicação é local; porém, não consegue conexão se o banco está em um servidor na rede.
Substituo o localhost pelo IP do servidor mas retorna erro [indicarei o erro aqui quando eu voltar no local da instalação].
Segue mais abaixo também, os parâmetros do INI.
Desde já, agradeço qualquer manifestação que possa me auxiliar. Grato!
'Config.INI':
[Sistema]
Server=localhost
User=SYSDBA
Password=masterkey
Database=C:\BACKUPS\AGENDA FINANCEIRA\Win32\Debug\Dados\DADOS.FDB
Procedimento na Aplicação:
procedure TfrmPrincipal.CaminhoBanco;
var
arquivoINI: TIniFile;
server, user, password, database, auxError, driver : string;
begin
if FDconexao.Connected then
FDconexao.Connected:= False;
arquivoINI:= TIniFile.Create(System.SysUtils.ExtractFilePath(ParamStr(0))+'\config.ini');
server:= arquivoINI.ReadString('Sistema','Server','');
user:= arquivoINI.ReadString('Sistema','User','');
password:= arquivoINI.ReadString('Sistema','password','');
database:= arquivoINI.ReadString('Sistema','Database','');
try
FDconexao.Params.Strings[0] := 'User_Name='+ user;
FDconexao.Params.Strings[1] := 'Password='+ password;
FDconexao.Params.Strings[2] := 'Database='+ database;
FDconexao.Params.Strings[3] := 'Server='+ server;
FDconexao.Connected:= True;
except
on E : exception do
begin
auxError := Copy(E.Message,20,500);
MessageDlg('Erro ao tentar se conectar com o banco de dados.'+#13
+#13+'Motivo:'+#13+#13+''+auxError,TMsgDlgType.mtWarning,[TMsgDlgBtn.mbOK],0);
Application.Terminate;
end;
end;
end;
Bruno Gisse
Curtidas 0
Melhor post
Bruno Gisse
24/08/2020
Olá, Meu amigo!
É a segunda vez que você me salva. Valeu mesmo.
Entendi perfeitamente e a boa notícia é que funcionou.
Abraços e uma excelente semana!
É a segunda vez que você me salva. Valeu mesmo.
Entendi perfeitamente e a boa notícia é que funcionou.
Abraços e uma excelente semana!
GOSTEI 1
Mais Respostas
Emerson Nascimento
22/08/2020
tente assim:
'Config.INI':
Procedimento na Aplicação:
'Config.INI':
[Sistema] Driver=FB ; quando houver ao menos uma conexão remota, use o IP real do servidor Server=192.168.101.156 User=SYSDBA Password=masterkey Database=C:\\BACKUPS\\AGENDA FINANCEIRA\\Win32\\Debug\\Dados\\DADOS.FDB ;Port deve ser indicada quando alterar a porta padrão ou quando usar servidor remoto Port=3050 ; Protocol: Local/TCPIP - quando servidor local não precisa informar; quando remoto, colocar TCPIP Protocol=TCPIP ; obs: mesmo que seja um servidor local, pode ser efetuada a configuração ; indicando ip, porta e protocolo como se fosse remoto, assim você pode ter ; um únco INI, que vai funcionar tanto para conexão local quanto para remota
Procedimento na Aplicação:
procedure TfrmPrincipal.CaminhoBanco; var arquivoINI: TIniFile; driver, server, user, password, database, auxError, protocol: string; port: integer; begin arquivoINI := TIniFile.Create(System.SysUtils.ExtractFilePath(ParamStr(0))+'\\config.ini'); // abre o arquivo ini driver := arquivoINI.ReadString('Sistema','Driver','FB'); server := arquivoINI.ReadString('Sistema','Server',''); user := arquivoINI.ReadString('Sistema','User',''); password := arquivoINI.ReadString('Sistema','password',''); database := arquivoINI.ReadString('Sistema','Database',''); port := arquivoINI.ReadInteger('Sistema','Port',0); // obrigatóirio informar quando alterar a porta ou quando for servidor remoto protocol := arquivoINI.ReadString('Sistema','Protocolo','Local'); // Local/TCPIP - quando servidor remoto, deve ser TCPIP FreeAndNil(arquivoINI); // fecha o arquivo ini if FDconexao.Connected then FDconexao.Close; FDconexao.Params.Clear; // limpa os parâmetros, para preenchê-los conforme a configuração do INI try FDconexao.Params.Add('DriverID='+driver); FDconexao.Params.Add('Database='+database); FDconexao.Params.Add('Password='+password); FDconexao.Params.Add('User_Name='+user); FDconexao.Params.Add('Protocol='+protocol); FDconexao.Params.Add('Server='+server); FDconexao.Params.Add('Port='+System.SysUtils.IntToStr(port)); FDconexao.Open(); except on E:exception do begin auxError := Copy(E.Message,20,500); MessageDlg( 'Erro ao tentar se conectar com o banco de dados.'+#13 +#13+'Motivo:'+#13+#13+''+auxError,TMsgDlgType.mtWarning,[TMsgDlgBtn.mbOK],0); Application.Terminate; end; end; end;
GOSTEI 0