IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Problème DBExpress Delphi XE3 et FireBird 2.5


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Par défaut 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.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Tu es sur de ton port (3051) ? en général c'est le 3050 (sauf s'il est explicitement changé dans le firebird.conf , au cas ou tu aurais également Interbase par exemple)

  3. #3
    Membre expérimenté Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Par défaut
    Bonjour,
    J'ai vérifié le fichier FireBird.conf, le port est à 3050, je l'ai changé, j'ai toujours ce message d'erreur et la connexion n'a pas pu s'établir.
    Je ne veux pas accéder à FireDac ou un composant tiers pour la connexion.
    Est ce quel le problème peut être avec une confusion avec la base Interbase XE3, je ne l'ai pas utilisé et même le service du serveur Interbase n'est pas lancé.
    Qu'est ce que je dois faire car il n'y a pas beaucoup de solutions en cherchant ?
    Merci d'avance.

  4. #4
    Membre expérimenté Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Par défaut
    Salut,
    J'ai désinstallé Interbase XE3, j'ai fait un clean des entrées registre et j'ai vérifié qu'il n'y a plus de trace d'Interbase.
    J'ai essayé de me connecter, mais c'est toujours la même erreur DBX.
    Serait-il un bug lié à Embarcadero dans son dll de DBEXpress pour FireBird?
    Merci d'avance.

  5. #5
    Membre expérimenté Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    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.

    Merci d'avance.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    je n'ai pas (plus XE3) que j'avais seulement pris en test par contre j'ai acheté (eh oui ça y est) XE4 . Comme ce post me filais un doute , j'ai faiT un essai DBExpress (n'empêche j'utiliserais plutôt Firedac , ce n'est plus un composant tiers et il est aussi "datasnap") .

    Essai concluant , voici en gros les paramètres de connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    DriverName=Firebird
    DriverUnit=Data.DBXFirebird
    DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver180.bpl
    DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=18.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
    MetaDataPackageLoader=TDBXFirebirdMetaDataCommandFactory,DbxFirebirdDriver180.bpl
    MetaDataAssemblyLoader=Borland.Data.TDBXFirebirdMetaDataCommandFactory,Borland.Data.DbxFirebirdDriver,Version=18.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
    LibraryName=dbxfb.dll
    LibraryNameOsx=libsqlfb.dylib
    VendorLib=fbclient.dll
    VendorLibWin64=fbclient.dll
    VendorLibOsx=/Library/Frameworks/Firebird.framework/Firebird
    Database=C:\fichiers\base.fdb
    User_Name=sysdba
    Password=*****
    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
    une remarque :
    - tu n'as pas indiqué ton OS (32 ou 64 bits) ?
    - tu n'as pas indiqué si tu avais copié fbclient.dll dans Windows\System32

  7. #7
    Membre expérimenté Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Par défaut
    Salut,
    J'ai une version Windows 7 intégrale 32 bits avec la dernière mise à jour.
    J'ai copié le fichier fbClient.dll sous Windows\System32 mais ça n'a pas marché aussi.
    J'ai la même configuration que toi dans le fichier dbxconnections.ini que toi sauf que je suis sous XE3 donc moi la version des fichiers est à 17.0 alors que toi tu les as à 18.0.
    Toujours un échec de connexion et ce message d'erreur.
    Qu'est ce qu'on tente d'autres comme solutions ?
    Merci d'avance.

  8. #8
    Membre expérimenté Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Par défaut Enfin résolu !
    Salut Sergio,

    Je suis revenu à une discussion précédente sur le forum Développez:

    http://www.developpez.net/forums/d12...mbeded-resolu/

    Je me suis inspiré d'elle, en faite, quand tu as envoyé dans ton dernier message pour le paramétrage d'un dbxDrivers.ini, tu n'avais pas indiqué qu'il y avait un paramètre manquant:
    GetDriverFunc qui avait comme valeur pour mon cas getSQLDriverFIREBIRD alors que toi dans le lien de la discussion tu l'as à getSQLDriverINTERBASE.
    J'ai changé ce paramètre (je ne sais pas pourquoi je l'ai fait, même si tout me semble non logique du fait que j'ai désinstallé la version d'InterBase XE3 que j'avais), mais je me suis dit que peut être dbxfbdll de dbExpress exportait une fonction getSQLDriverINTERBASE même si la base est FireBird.

    Finalement, la connexion a pu se rétablir, j'ai pu, via l'explorateur de données de Delphi XE3, visualiser les tables de la base Employee.FDB. J'ai pu aussi utiliser le composant de connexion TSQLConnection. ça marche comme bel et bien.

    Merci Sergio pour ta précieuse aide. et en récapitulant, il faut que:

    • Placer le fichier fbClient.dll sous Windows\System32.
    • Ajouter à un paramètre à la section [FireBird] du fichier dbxDrivers.ini qui est GetDriverFun=getSQLDriverINTERBASE.


    Merci Sergio une autre fois.

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Moez.B Voir le message
    en récapitulant, il faut que:

    • Placer le fichier fbClient.dll sous Windows\System32.
    • Ajouter à un paramètre à la section [FireBird] du fichier dbxDrivers.ini qui est GetDriverFun=getSQLDriverINTERBASE.

    pour la Dll , je ne suis pas totalement d'accord , c'était juste une astuce pour vérifier ta connexion , il est évident que tu peux indiquer (soit le répertoire d'installation Firebird , doit par exemple en cas de firebird embedded le répertoire contenant fbclient.dll ou fbembed.dll selon ta mise en place.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme Firebird et DBExpress de DELPHI XE3
    Par kaouane dans le forum Firebird
    Réponses: 3
    Dernier message: 31/01/2015, 21h31
  2. Delphi XE3 et DBExpress
    Par Laskar dans le forum EDI
    Réponses: 3
    Dernier message: 12/11/2014, 07h51
  3. Delphi XE3 Icônes problème
    Par BuzzLeclaire dans le forum Débuter
    Réponses: 1
    Dernier message: 11/03/2013, 09h31
  4. [Tutoriel] Delphi 2010 : Connexion à Firebird via dbExpress
    Par evarisnea dans le forum Bases de données
    Réponses: 30
    Dernier message: 24/10/2012, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo