SQLConnection atraves de arquivo .INI

Delphi

21/05/2007

Estou tentando conectar o meu banco de dados através de um arquivo Ini mas está dando errado, muito estranho.
Minha Aplicação começa assim:
AberturaForm:=TFormAbertura.Create(Application);
  AberturaForm.Show;
  Application.CreateForm(TDataModule2, DataModule2);
  AberturaForm.Free;
  Application.Run;


É uma telinha de abertura... Nessa tela eu fiz no OnCreate:
procedure TFormAbertura.FormCreate(Sender: TObject);
begin
  Data := TIniFile.Create(ExtractFilePath(Application.ExeName)+´configConect.ini´);
  Try
  Data.WriteString(´IBLocal´,´Database´,ExtractFilePath(Application.ExeName)+´AGENDAX.gdb´);
  Finally
  Data.Free;
  end;
end;


Até ai tudo bem, atualiza a linha do Database para onde está o banco de dados.
No datamodule2 está assim:
procedure TDataModule2.DataModuleCreate(Sender: TObject);
begin
  SQLConnection1.Connected := false;
  SQLConnection1.Params.Clear;
  SQLConnection1.Params.LoadFromFile(ExtractFilePath(Application.ExeName)+´configConect.ini´);
sqlconnection1.Connected := true;
end;


O arquivo configConect.ini está assim:
[IBLocal]
DriverName=UIB FireBird15
BlobSize=-1
CommitRetain=False
Database=C:\Projetos\AgendaXfull\AGENDAX.gdb
ErrorResourceFile=
LocaleCode=0000
Password=masterkey
RoleName=RoleName
ServerCharSet=
SQLDialect=3
Interbase TransIsolation=ReadCommited
User_Name=SYSDBA
WaitOnLocks=True


Lembrando que eu configurei anteriormente o SQLConnection e ele está TRUE, mas já tentei colocando FALSE. E no SQLCOnnection o DAtabase está configurado para a pasta onde seria a pasta de instação do programa só que se eu modificar a pasta o .ini atualiza corretamente, mas o SQLConnection ainda busca na pasta configurada nele manualmente no Delphi.
Também já tentei utilizar a função:
SQLConnection1.LoadParamsFromIniFile(ExtractFilePath(Application.ExeName)+´configConect.ini´);

O que fazer?


Zerocalt

Zerocalt

Curtidas 0

Respostas

Zerocalt

Zerocalt

21/05/2007

Observei que o banco de dados está certo...
Tipo, ele faz a modificação no local onde está configurado no .Ini, mas se não tiver a pasta AgendaX/AGENDAX.gdb o programa não abre...


GOSTEI 0
Paullsoftware

Paullsoftware

21/05/2007

Observei que o banco de dados está certo... Tipo, ele faz a modificação no local onde está configurado no .Ini, mas se não tiver a pasta AgendaX/AGENDAX.gdb o programa não abre...


Verefique se o componente não está [b:d0c781dfc5]Connected = True[/b:d0c781dfc5]... se ele estiver como true, mesmo vc setando para false na inicialização do seu sistema não abre e as vezes não apresenta erro...
coloque dentro de bloco try except para ver o erro que é mostrado!

Também mude a TAG [IBLOCAL] para o nome do seu alias de conexão
[IBLocal] <==Mude aqui DriverName=UIB FireBird15 BlobSize=-1 CommitRetain=False Database=C:\Projetos\AgendaXfull\AGENDAX.gdb ErrorResourceFile= LocaleCode=0000 Password=masterkey RoleName=RoleName ServerCharSet= SQLDialect=3 Interbase TransIsolation=ReadCommited User_Name=SYSDBA WaitOnLocks=True


espero ter ajudado


GOSTEI 0
Brunolspp

Brunolspp

21/05/2007

entao...

pega meu exemplo do borcon 2006 no meu link de downloads gratuitos(abaixo da minha assinatura).

e veja na aplicação servidora como faço pra conectar o sqlconnection com arquivo de configuracao, e bem facil e funciona 100¬.


GOSTEI 0
Zerocalt

Zerocalt

21/05/2007

Já tentei de tudo...
Baxei exemplos, e mesmo assim nada...
Ou eu sou muito burro... Ou vou ter de mudar de componente huahuahua...
No arquivo .dfm do DataModule está assim:
object DataModule2: TDataModule2
  OldCreateOrder = False
  OnCreate = DataModuleCreate
  OnDestroy = DataModuleDestroy
  Left = 339
  Top = 150
  Height = 383
  Width = 460
  object SQLConnection1: TSQLConnection
    ConnectionName = ´AGENDAX´
    DriverName = ´UIB FireBird15´
    GetDriverFunc = ´getSQLDriverINTERBASE´
    LibraryName = ´dbexpUIBfire15.dll´
    LoginPrompt = False
    Params.Strings = (
      ´DriverName=UIB FireBird15´
      ´BlobSize=-1´
      ´CommitRetain=False´
      ´Database=C:\AgendaX\AGENDAX.gdb´
      ´ErrorResourceFile=´
      ´LocaleCode=0000´
      ´Password=masterkey´
      ´RoleName=RoleName´
      ´ServerCharSet=´
      ´SQLDialect=3´
      ´Interbase TransIsolation=ReadCommited´
      ´User_Name=SYSDBA´
      ´WaitOnLocks=True´)
    VendorLib = ´fbclient.dll´
    Left = 40
    Top = 8
  end


No .pas
{$R *.dfm}


procedure TDataModule2.DataModuleCreate(Sender: TObject);
var
vFile: String;
begin
  SQLConnection1.Connected := false;
  ShowMessage(SQLConnection1.Params.Text);
  SQLConnection1.Params.Clear;
  vFile := ExtractFilePath(Application.ExeName)+´configConect.ini´;
  SQLConnection1.Params.LoadFromFile(vFile);
  ShowMessage(SQLConnection1.Params.Text);
  Try
  sqlconnection1.Connected := true;
  except
  ShowMessage(´Não foi possível Conectar ao banco de dados!´);
  end;
end;

procedure TDataModule2.DataModuleDestroy(Sender: TObject);
begin
  sqlconnection1.Connected := false;
end;

end.


O Problema é que tipo oq configurei manualmente para fazer a conexão que seria: C:\Projetos\AgendaXfull\AGENDAX.gdb , ele sempre localiza esse arquivo... Se não existir ele na pasta da erro na abertura do programa, se ele existir, tudo bem, ele carrega o banco de dados correto que está no arquivo .INI , mas primeiramente ele tenta encontrar esse arquivo... Porém eu não crio esse arquivo nesse local na instalação do programa...

Se alguém puder me exemplificar ou me enviar um e-mail com um exemplo, ou mostrar-me como fazer a conexão em RunTime, pq já tentei tb e da erro...
SQLConnection1.Create(Self ou Application);
Da erro tb.


GOSTEI 0
POSTAR