Delphi + Firebird 1.5

09/01/2013

1

Galera gostaria de uma ajuda...

Eu preciso criar um banco e rodar os scripts em tempo de execução usando o delphi 10 e o firebird 1.5

Eu fiz o processo e funciona, porem so funciona se eu instalar o firebird 1.5 como aplicação. Se eu instalar como processo nao funciona. Da erro na linha "CreateDatabase;" (unavailable database)

Alguém sabe me informar algo ou pode me ajudar nesse problema? Agradeço desde ja.

procedure TFrmPrincipal.FormShow(Sender: TObject);
var
  DataBase : TIBDatabase;
begin
  if NOT ((FireBirdGetProcess('fbserver.exe')) OR (FireBirdGetProcess('fb_inet_server.exe'))) then
    ControlFBSvr(True);
  If not((FileExists(ExtractFilePath(Application.ExeName)+'PANDORA.FDB'))) then
  begin
    if ((FireBirdGetProcess('fbserver.exe')) OR (FireBirdGetProcess('fb_inet_server.exe'))) then
    begin
      DataBase := TIBDatabase.Create(nil);
      try
        with DataBase do
        begin
          DatabaseName := 'PANDORA.FDB';
          SQLDialect   := 3;
          Params.Clear;
          Params.Add     ('USER ''SYSDBA''');
          Params.Add     ('PASSWORD ''masterkey''');
          Params.Add     ('PAGE_SIZE 16384');
          Params.Add     ('DEFAULT CHARACTER SET WIN1252');
          CreateDatabase;
        end;
        DmPandora.gerarIni;
        DmPandora.CnxPandora.Close;
        DmPandora.CnxPandora.Params.Clear;
        DmPandora.CnxPandora.Connected := False;
        DmPandora.CnxPandora.ConnectionName := 'PANDORA';
        DmPandora.CnxPandora.DriverName := 'FIREBIRD';
        DmPandora.CnxPandora.LoadParamsOnConnect := False;
        DmPandora.CnxPandora.Params.LoadFromFile(ExtractFilePath(Application.ExeName)+'\conexao.ini');
        DmPandora.CnxPandora.Connected := True;

        GeraScripts;
        DmPandora.CdsEmail.Open;
      finally
        FreeAndNil(DataBase);
      end;
    end
    else
    begin
      MessageDlg('O banco de dados não foi ativado!', mtWarning, [mbOK], 0);
      MessageDlg('Verifique se o mesmo esta instalado. Tente novamente!', mtError, [mbOK], 0);
      Application.Terminate;
    end;
  end;
end;
Responder

Posts

Olá Vinícius, eu testei aqui com Delphi XE/Firebird 2.5 e funcionou normal.
Só não sei te dizer se isso é um problema de versão, já que aparentemente a sua lógica está correta.

A DLL do Firebird está na pasta do sistema?
Responder