Problème DBExpress Delphi XE3 et FireBird 2.5
Salut, :)
J'ai un problème au niveau de la connexion entre une base FireBird 2.5 et Delphi XE3 (update 2) à travers DBExpress.
J'ai vérifié avec le serveur FireBird, il est lancé et j'ai pu me connecter sur la base exemple Employee.FDB avec l'utilitaire FlameRobin.
Le problème c'est qu'avec l'explorateur de base données (une fois que j'ai ajouté la base Employee comme Test), j'ai ajouté un alias localhost/3051:c:\EMPLOYEE.FDB, j'ai saisi le nom d'utilisateur et le mot de passe, en testant la connexion, le message d'erreur suivant apparaît:
Erreur DBX : Le pilote n'a pas été correctement initialisé. La bibliothèque client est manquante, n'est pas installée correctement, sa version est incorrecte, ou le pilote n'est pas dans le chemin système."
J'ai changé quelques paramètres en affectant au 2 propriétés DriverName et VendorLib le chemin complet de la dll de Firebird : C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll, j'obtiens alors un second message d'erreur
Erreur DBX : GetDriverFunc doit être spécifié.
J'ajoute une propriété dans la liste des propriétés GetDriverFunc et je l'affecte par getSQLDriverFIREBIRD, là je reviens à mon problème de départ qui est le premier message d'erreur.
J'ai cherché dans l'aide d'Embarcadero, ils signalent que si une version précédente de Delphi était installée, alors il faut vérifier la variable d'environnement du Bin. C'est mon cas car j'avais une version de XE2 et j'ai passé à XE3 , J'ai vérifié le chemin du Bin, tout semble bien.
J'ai aussi vérifié avec le Path de mon OS. C'est Ok.
J'ai essayé avec FireDac, j'ai pu me connecter. Mais, je dois passer par le DBExpress dans mon cas.
Est-ce qu'il y a une solution pour régler ce problème?
Merci d'avance. :)
Un vrai problème dbExpress+FireBird Delphi XE3
Salut, :):)
J'ai fait beaucoup d'essais.
Bon, voici le contenu de la section d'une connexion TEST que j'ai ajouté pour FireBird dans le fichier dbxconnections.ini qui existe dans le répertoire C:\Users\Public\Documents\RAD Studio\dbExpress\10.0
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
[TEST]
DriverName=Firebird
DriverUnit=Data.DBXFirebird
DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver170.bpl
DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=17.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
MetaDataPackageLoader=TDBXFirebirdMetaDataCommandFactory,DbxFirebirdDriver170.bpl
MetaDataAssemblyLoader=Borland.Data.TDBXFirebirdMetaDataCommandFactory,Borland.Data.DbxFirebirdDriver,Version=17.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
LibraryName=dbxfb.dll
LibraryNameOsx=libsqlfb.dylib
VendorLib=C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll
VendorLibWin64=fbclient.dll
VendorLibOsx=/Library/Frameworks/Firebird.framework/Firebird
Database=localhost/3050:c:\EMPLOYEE.FDB
User_Name=sysdba
Password=masterkey
Role=RoleName
MaxBlobSize=-1
LocaleCode=0000
IsolationLevel=ReadCommitted
SQLDialect=3
CommitRetain=False
WaitOnLocks=True
TrimChar=False
BlobSize=-1
ErrorResourceFile=
RoleName=RoleName
ServerCharSet=
Trim Char=False |
Je vérifie dans le fichier dbxdrivers.ini dans le même répertoire précédent, voici le contenu de la section du driver FireBird
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
[Firebird]
DriverUnit=Data.DBXFirebird
DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver170.bpl
DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=17.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
MetaDataPackageLoader=TDBXFirebirdMetaDataCommandFactory,DbxFirebirdDriver170.bpl
MetaDataAssemblyLoader=Borland.Data.TDBXFirebirdMetaDataCommandFactory,Borland.Data.DbxFirebirdDriver,Version=17.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
LibraryName=dbxfb.dll
GetDriverFunc=getSQLDriverFIREBIRD
LibraryNameOsx=libsqlfb.dylib
VendorLib=C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll
VendorLibWin64=fbclient.dll
VendorLibOsx=/Library/Frameworks/Firebird.framework/Firebird
BlobSize=-1
CommitRetain=False
Database=database.fdb
ErrorResourceFile=
LocaleCode=0000
Password=masterkey
RoleName=RoleName
ServerCharSet=
SQLDialect=3
IsolationLevel=ReadCommitted
User_Name=sysdba
WaitOnLocks=True
Trim Char=False |
Tout semble correct avec toutes les informations que j'ai trouvé dans les forums d'Embarcadero, les tutoriels de configuration et le Help D'Embarcadero en ce qui concerne DBExpress avec FireBird (ou tout autre base de données). Cependant, j'ai toujours le même message d'erreur DBX
Code:
1 2
|
Erreur DBX : Le pilote n''a pas été correctement initialisé. La bibliothèque client est manquante, n''est pas installée correctement, sa version est incorrecte, ou le pilote n'est pas dans le chemin système. |
Donc, je ne peux pas afficher les données des tables de a base EMPLOYEE via l'explorateur de données de DELPHI XE3, ni bien sur avec un nouveau projet et un composant TSQLConnection.
Je résume donc toutes les actions que j'ai faites:
- J'avais une version de DELPHI XE2, je l'ai désinstallé, effacé toutes les entrées dans le regsitre, vérifié les paths, effacées tous les répertoires.
- J'ai installé ma nouvelle version DELPHI XE3.
- J'ai vérifié les variables d'environnement de DELPHI XE3 et les variables d’environnement de mon système d'exploitation et tout semble parfait.
- J'ai installé la dernière version de FireBird, j'ai testé la connexion, j'ai exploré le schéma de la base avec l'utilitaire de FlameRobin que j'ai installé.
- Une première connexion avec l'explorateur de la base de données de DELPHI XE3 échoue avec le fameux message d'erreur du DBX.
- Je paramètre en ajoutant le GetDriverFunc aprsè avoir spécifié la dll de FireBird, ça échoue encore.
- Je change le port du serveur FireBird de 3051 vers l'original 3050, ça échoue.
- Je désinstalle carrément Interbase XE3, effacer toutes les entrées du registre et les répertoires, redémarré et ça échoue.
- J'ai fait quelques changements sur le paramètrages des 2 fichiers de configurations de driver dbExpress dbxdrivers.ini et des connexions dbxconnections.ini et ça échoue encore.
Que dois je faire encore pour remédier à ma situation et que je puisse finalement visualiser mes données avec l'explorateur en un premier temps puis de réussir une connexion à ma base Employee.fdb avec le composant TSQLConnection de dbExpress en un second temps.:koi::koi::koi:
Le problème que je trouve c'est que dbExpress, même s'il est facile à utiliser pour tout le monde dès le début que d'après ce que j'ai lu comme articles est très pratique pour le datasnap, et que la seule difficulté réside dans le déploiement de sa dll pour déployer une application qui l'utilise, ne l'est pas dans mon cas. :calim2::calim2:
Merci d'avance. :ccool::ccool: