Firebird dbExpress (alguns problemas e algumas soluções)

Delphi

29/09/2008

Pessoal seguem algumas possiveis soluções para problemas de instalação
de programas utilizando o firebird.
Eu instalo o FireBird somente no servidor e nas estaçãos alem do
aplicativo e banco de dados vão alguns arquivos descritos abaixo.

Dentro da pasta do seu aplicativo, devem existir os seguinte arquivos.

DbxConnections.ini
dbxDrivers.ini
(esse dois arquivos se encontram em C:\Arquivos de programas\Arquivos comuns\Borland Shared)
dbexpUIBfire15.dll (se estiver utilizando os drivers UIB)
fbclient.dll
MIDAS.DLL (se não tiver declarado a midaslib em seu programa de preferencia no dataModulo onde está o sqlConnection);

Recomendo declarar a unit midasLib, dessa forma não será necessario carregar a midas.dll
e assim evitar conflito com outras versões dessa dll.

uses

unit uDm;

interface

uses
SysUtils, Classes, DBXpress, FMTBcd, SqlExpr, DB, Provider, DBClient,

dbCtrls, Windows, dbTables,
StdCtrls,

midaslib;


Se preferir utilizar a midas externa e tiver alguns erros de execução do seu sistema
do tipo ´Cannot load library´ por exemplo. Ja tive alguns problemas com essa dll
mas que não me recordo das mensagens e foi só registrar que tudo deu certo,
claro que com o resto das configurações corretas também.

O ideal é copiar a versão dessa dll que está no cd do Delphi para dentro da pasta c:\windows\system32
e registra-la utilizando o seguinte comando:
Entre no menu iniciar, clique em executar e digite ´regsvr32 c:\windows\system32\midas.dll

Hoje em dia eu declaro a midaslib e assim evito alguns problemas.

Se você vai trabalhar com o banco de dados e na sua aplicação você precisa informar o caminho,
no caso de redes por exemplo, o idel é carregar os parametros no envento on create do datamodulo
atravez de um arquivo com extenção INI.
Da seguinte forma:

Primeiro deve-se mudar no sqlConnection a propriedade LoadParamsOnConnect para true.
Outra coisa,mantenham os sqlDataSets e ClientDataSets fechados.

procedure Tdm.DataModuleCreate(Sender: TObject);
begin
dm.SQLConnection1.Close;
dm.SQLConnection1.LoadParamsOnConnect := True;
dm.SQLConnection1.Params.Clear;
dm.SQLConnection1.LoadParamsFromIniFile(´c:\minhaaplicacao\inicio.ini´); (O ideal é carregar esse arquivo de dentro do path da aplicação)
dm.SQLConnection1.Open;
end;

O conteudo desse arquivo você pode copiar do dbxconnections.ini que está
em C:\Arquivos de programas\Arquivos comuns\Borland Shared, basta encontrar a
chave que indica sua conexção, macar e salvar no seu arquivo INI
Exemplo:

[CONEXAO_SISTEMA]
DriverName=UIB FireBird15
BlobSize=-1
CommitRetain=False
Database=C:\minhaaplicacao\dados\banco_de_dados.fdb (aquí pode ser o caminho da rede ´192.168.1.1:C:\minhaaplicacao\dados\banco_de_dados.fdb´)
ErrorResourceFile=
LocaleCode=0000
Password=masterkey
RoleName=RoleName
ServerCharSet=
SQLDialect=3
Interbase TransIsolation=ReadCommited
User_Name=SYSDBA
WaitOnLocks=True


Um outro erro que pode ocorrer é que se você for instalar o sistema numa estação que exista ou ja existiu o Delphi instalado,
poderá ocorrer um erro do tipo Driver Missing Property.
Isso porquê o Delphi registra o dbxConnextions e dbxDrivers no registro do windows.
Se o Delphi está instalado e precisa ficar nessa maquina,então você tem que copiar as linhas do seu
arquivo INI para dentro do dbxConnections do Delphi, ou seja criar a conexão da sua aplicação.
Você também pode copiar o seu dbxConnections para essa outra maquina se tiver certeza que não inteferirá no sistema
de outras pessoas.
Você deve também incorporar ao dbxDrivers as linhas de drivers que existem no seu dbxDrivers que podem
não existir nesse outro.

Se o Delphi foi desinstalado, remova do registro do windows as referencias ao dbxConnections e dbxDrivers



Trabalho a algum tempo com o firebird e todos os problemas que tive conseguí resolver dessa forma.
Espero ter ajudado de alguma forma, e se alguem quizer adicionar mais alguma coisa estejam a vontade.

Osvaldo
Analista de Sistemas da ASCII Informatica


Osvaldo

Osvaldo

Curtidas 0
POSTAR