Passagem de Parametros em Tempo de Execução
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
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
Curtidas 0
Respostas
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
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