Firedac e banco Firebird pelo aqruivo INI

22/08/2020

0

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;
Bruno Gisse

Bruno Gisse

Responder

Post mais votado

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!

Bruno Gisse

Bruno Gisse
Responder

Mais Posts

24/08/2020

Emerson Nascimento

tente assim:

'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;


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar