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

Firebird Discussion :

firebird3, problème pour lire la valeur d'un champ blob dans un mémo.


Sujet :

Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 102
    Par défaut firebird3, problème pour lire la valeur d'un champ blob dans un mémo.
    Serveur linux :
    Firebird-3.0.4.33054-0.amd64 sous CentOS 7
    champ Texte: BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET NONE
    Client windows :
    Firebird-3.0.4.33054_0_x64.exe sous Windows 10
    Delphi Rio 10.3.1, application VCL windows.
    Bdd lues par un connecteur firedac TDBConnection, driver fb
    composant TDBMemo lié au champ TEXTE d’une table firedac
    Problème:
    blob lu avec IBExpert sans problème (plusieurs lignes accents et caractères spéciaux)
    blob lu dans le memo: seulement la première lettre

    En local sur le poste, pas de problème
    client et serveur: Firebird-3.0.4.33054_0_x64.exe sous Windows 10
    blob lu avec IBExpert = blob lu dans le memo

    Auriez vous une idée de ce qui ne va pas ?
    Cela peut-il venir d'une dll ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    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 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    je n'ai pas pu faire un test complet par manque de moyen (pas de Firebird serveur sur LINUX sous la main)
    une DLL c'est possible IBExpert utilisant sa propre copie de fbclient.
    un test infaillible, copier fbclient.dll (bonne version, bon nombre de bits en fonction du programme cela va de soi) dans le répertoire de l'application
    Attention en mode debug c'est une version 32 bits

  3. #3
    Membre confirmé
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 102
    Par défaut
    Bonjour, je reprends seulement ayant du m'absenter …
    Merci pour la réponse, mettre la dll windows dans le répertoire de l'application ne change rien.
    j'ai essayé avec C:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll
    et aussi avec C:\Program Files\Firebird\Firebird_3_0\fbclient.dll qui est, je pense, la dll pour 32 bits ?
    Le serveur firebird étant en linux ce n'est probablement pas celles qu'il me faut.
    le serveur firebird utilise /usr/lib/libfbclient.so.3.0.4 installée avec le serveur
    je ne vois pas de version 3 dans /usr/lib/
    or delphi, installé en 32 bits, doit chercher dans /usr/lib / ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    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 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par GrPtj Voir le message
    j'ai essayé avec C:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll
    et aussi avec C:\Program Files\Firebird\Firebird_3_0\fbclient.dll qui est, je pense, la dll pour 32 bits ?
    Non c'est l'inverse, wow64 indique que c'est une bibliothèque à émuler en 64 bits ainsi en a décidé Deus Microsoft
    Et ce n'est pas côté serveur Firebird qu'il faut faire quoique ce soit mais bien du côté poste de développement
    En mode design c'est la dll 32 bits qui est utilisée (donc celle dans syswow64) en mode exécution du programme c'est selon la version du programme et donc de la compilation Delphi.

    je n'ai pas pu faire un test complet par manque de moyen (pas de Firebird serveur sur LINUX sous la main)
    Mes moyens ont évolués et après quelques galères dues à mon firebird.conf sous linux cf cette discussion dès que j'ai le temps je ferai un petit test

  5. #5
    Membre confirmé
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 102
    Par défaut
    En mode design c'est la dll 32 bits qui est utilisée (donc celle dans syswow64) en mode exécution du programme c'est selon la version du programme et donc de la compilation Delphi.
    Du coup c'est assez étrange que je n'ai pas de problème en local et seulement sur le linux distant.

    -en debug, fbclient de syswow64, lecture du blob ok
    -poste windows et firebird en 64, mais delphi installé en 32, du coup mon application s'exécute en 32 non ?
    pour l'exe sur mon poste Windows pointant sur le firebird de ce même poste, lecture du blob ok

    -pour l'exe sur mon poste Windows pointant sur le firebird am64 du serveur sous CentOs, lecture du blob -> Seule la première lettre lue ...

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 261
    Par défaut
    Bonjour,

    La version de fbclient.dll à utiliser doit toujours correspondre à la version 32b ou 64b de votre exécutable, indifféremment de la version du serveur (qu'il soit Windows ou Linux). Le seul cas où le serveur doit être de la même version que l'exécutable, c'est si vous utilisez Firebird embedded.
    Par contre votre problème peut provenir d'un mauvais choix de jeu de caractères de connexion: il est préférable de choisir celui utilisé en interne par votre exécutable. Sous D7 j'utilise WIN1252, sous Lazarus UTF8. Mais toujours se rappeler que le serveur ne fait le transcodage que si les jeux de caractères de connexion et de codage dans le champ de la base sont différents, émettant une erreur en refusant les caractères appartenant à un seul des 2 jeux. Par contre si les 2 jeux sont identiques le serveur ne fait aucun contrôle, autorisant l'écriture de caractères inexistants dans le jeu utilisé dans le champ. La base peut alors devenir inutilisable depuis un logiciel utilisant un jeu de caractères de connexion différent.

    André

Discussions similaires

  1. Problème pour lire la valeur d'un bouton radio
    Par Python_addict dans le forum Tkinter
    Réponses: 3
    Dernier message: 01/08/2018, 15h03
  2. Réponses: 9
    Dernier message: 07/03/2018, 15h01
  3. Problème pour lire une valeur dans une cell
    Par heiriquent dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/07/2013, 23h26
  4. Problème pour lire les donnée d'une table externe
    Par mardoch dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 17/07/2008, 16h41
  5. Problème pour classer les valeurs d'un champ
    Par AjJi dans le forum Access
    Réponses: 11
    Dernier message: 06/04/2006, 09h19

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