Passagem de Parametros em Tempo de Execução

Delphi

18/11/2006

Oi Pessoal,

nos meus projetos sempre repasso os parametros ao sqlconnection atraves de um arquivo .ini, cujo conteúdo é:

[PROJETO]
DriverName=UIB Firebird15
Database=C:\Sistemas\base.FDB
RoleName=RoleName
User_Name=SYSDBA
ServerCharSet=WIN1252
SQLDialect=3
BlobSize=-1
CommitRetain=False
WaitOnLocks=True
LocaleCode=
ErrorResourceFile=
Interbase TransIsolation=Read Commited
lc_ctype=WIN1252
TrimChar=False

e no evento OnCreate do DataModule:

procedure Tdm.DataModuleCreate(Sender: TObject);
begin
try
ConexCajex.Connected := False;
ConexCajex.Params.Clear;
ConexCajex.Params.LoadFromFile(extractfilepath(Application.ExeName)+´base.ini´);
ConexCajex.Params.Add(´Password=masterkey´);
ConexCajex.LoginPrompt := False;
ConexCajex.Connected := True;
except
begin
showmessage(´Base de Dados Não Encontrada!´);
Application.Terminate;
end;
end;

no D7 e no D2005 funciona perfeitamente, no entanto no D2006 ocorre um erro:

´Missing Database property´

o q está acontecendo?

Muito Obrigado


Fajo

Fajo

Curtidas 0

Respostas

Rogerioluz

Rogerioluz

18/11/2006

Em vez de usar o Create use o evento Before connect mais ou menos desse jeito:

procedure TDados.SQLConnection1BeforeConnect(Sender: TObject);
var
ini : Tinifile;
server : String;
begin
ini := Tinifile.Create(´seuarquivo.ini´);
try
if (ini.ReadString(´Conexao´,´host´,´´) <> ´´) AND (ini.ReadString(´Conexao´,´database´,´´) <> ´´) then
Begin
server := trim(ini.ReadString(´conexao´,´host´,´´));
server := server + ´:´ + trim(ini.ReadString(´conexao´,´database´,´´));
end
else
server := ´LOCALHOST:caminho do banco completo´;

SQLConnection1.Params.Values[´Database´] := server;
finally
ini.Free;
end;
end;

Um abraço...

Rogério Luz


GOSTEI 0
POSTAR