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 :

Gestion FireDac + Firebird à la conception


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 82
    Billets dans le blog
    1
    Par défaut Gestion FireDac + Firebird à la conception
    Bonjour à tous,

    Sous Alexandria (ou Sidney), je rencontre un problème que je n'avais jamais rencontré auparavant.
    Je développe une application Win64 pour accéder à un serveur Firebird 3.07, via FireDAC.
    J'ai auparavant créé une connexion permanente (FDConnectionDefs.ini et FDDrivers.ini) qui est appelée par un composant FDConnection. Cette connexion permanente peut accepter les deux clients 32 et 64 bits (via les paramètres de définition VendorLibWin32 et VendorLibWin64).Tout marche parfaitement à l'exécution.

    Mais à la conception (via l'éditeur de connexion du composant, ou avec l'Explorateur de données), j'obtiens un message d'erreur me disant que le client sélectionné à la mauvaise architecture (x64 au lieu de x32) ou bien, si je force le client 64 bits en supprimant l'accès au client 32 bits, que ''la librairie Engine12.dll est présente mais pas chargeable''.
    Comment cela se fait-il ?
    Ai-je fait une fausse manoeuvre (mais je n'avais jamais rencontré ce problème avec les Delphi antérieurs, ou j'utilisais plutôt dbExpress) ? Ou s'agit-il d'un bug connu ?
    Merci de vos lumières.
    alx.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    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 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Un problème dans la base de registre peut-être

    HKCU\Software\Embarcadero\FireDAC\DriverFile vérifier si le fichier ini pointé est le bon

    D'un autre côté, à la conception ce devrait être toujours être le driver 32 bits

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    Delphi n'est elle pas encore une application 32Bits ? En Seattle c'était le cas.
    Il faut donc que la configuration Delphi soit 32Bits

    N'utilisant JAMAIS à la conception la partie de base de données intégré à Delphi, je ne vois pas à quoi cela peut être utile, la seule fois que j'ai vu cela dans ses applications, cela posait que des problèmes, des DataModule avec des Query ouverte à la conception lançant une requête au mauvais moment en RunTime, idem pour l'object Session\Connection ouvert alors que les paramètres de DesignTime ne sont pas les paramètres de RunTime du coup cela tente de se connecter sur le serveur de Dev alors qu'il n'existe pas évidemment chez le client, si le développeur oublie lors de son commit de fermer toutes les query, cela peut être nuisible, pour éviter cela, j'avais même patché ODAC pour afficher un warning en cas de connexion sur des valeurs de DesignTime.
    Sans compter les champs persistants plus souvent source de problème qu'autre chose.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    oui l'IDE est une appli 32bits, donc il lui faut un client 32 bits
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre confirmé

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    oui l'IDE est une appli 32bits, donc il lui faut un client 32 bits
    Je suis d'accord !
    Mais l'IDE (ou même le FDExplorer en stand alone) ne trouve pas le client 32 bits (alors que le HKCU est correct et que le FDDrivers.ini adresse correctement les clients). D'ailleurs, si ces définitions étaient incorrectes, cela ne marcherait pas à l'exécution.
    Je ne comprends donc pas pourquoi le FDexplorer (en 32bits) ne comprends pas le fichier de connexion persistante, alors que mon exécutable (compilé en 32 ou 64 bits) le comprend parfaitement. Un chargement/déchargement de DLL qui ne se ferait pas ?
    alx.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    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 638
    Billets dans le blog
    65
    Par défaut
    J'ai essayé de reproduire (D11.1) mais sans succès, j'entends par là sans avoir l'erreur.

    Pour pousser le bouchon et comme j'ai une version FB 4.0 qui tourne sur un autre port j'ai donc créé un autre driver
    Code Text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [FDDrivers.ini]
    Encoding=UTF8
     
    [FB30]
    ; FB30 virtual driver will use specified Firebird client library
    BaseDriverID=FB
    VendorLibWin32=C:\Windows\syswow64\fbclient.dll
    VendorLibWin64=C:\Windows\sytem32\fbclient.dll
     
    [FB40]
    ; FB40 virtual driver will use specified Firebird client library
    BaseDriverID=FB
    VendorLibWin32=C:\Program Files\Firebird\Firebird_4_0\WOW64\fbclient.dll
    VendorLibWin64=C:\Program Files\Firebird\Firebird_4_0\fbclient.dll

    et là cela se corse un peu mais c'est comprehensible les plugins ne sont pas dans la bonne version (64 bits)
    Nom : Capture.PNG
Affichages : 463
Taille : 22,0 Ko

  7. #7
    Membre confirmé

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    J'ai essayé de reproduire (D11.1) mais sans succès, j'entends par là sans avoir l'erreur
    Voici exactement ce que je fais (image ci-dessous, sous Delphi 11.0):
    le second plan montre le code du programme qui contient une fiche DataModule sur laquelle il y a juste un composant FDConnection qui adresse une connexion persistante via ''ConnectionDefName" et ''DriverId=FB''. Le passage par les points d'arrêt montre que tout s'exécute bien.
    le premier plan est le message d'erreur lorsque j'utilise l'explorateur de données (panneau de droite dans la configuration standard de l'EDI) et la même connexion persistante.

    Nom : Capture d’écran 2022-03-18 165040.png
Affichages : 451
Taille : 75,4 Ko

    Votre test était-il équivalent ?

    pour info, le FDDrivers.ini est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [FB]
    DRIVERID=FB
    Encoding=UTF8
    VendorLibWin64=C:\Program Files\Firebird\Firebird_3_0\bin\fbclient.dll
    VendorLibWin32=C:\Program Files\Firebird\Firebird_3_0\bin\fbclient32.dll

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/05/2017, 14h50
  2. Firedac Firebird fbclient.dll
    Par Papy214 dans le forum Bases de données
    Réponses: 14
    Dernier message: 30/12/2016, 15h29
  3. Firedac + Firebird + timeout
    Par Papy214 dans le forum Bases de données
    Réponses: 5
    Dernier message: 02/12/2016, 16h52
  4. XE7 + Firedac + Firebird + Alias
    Par Papy214 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/09/2016, 10h55
  5. Réponses: 0
    Dernier message: 26/07/2016, 10h35

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