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

SQL Firebird Discussion :

Créer une vue avec Firebird sous LibreOffice


Sujet :

SQL Firebird

  1. #1
    Candidat au Club
    Créer une vue avec Firebird sous LibreOffice
    Bonjour,
    Pour utiliser la fonction d’agrégation (absente de HSQL) j'ai donc créé une base exemple Firebird, et une requête qui donne le résultat attendu :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT "Nom", LIST( "Prenom", ASCII_CHAR( 13 ) ) "Prenoms" FROM "Individus" GROUP BY "Individus"."Nom"

    Qui me fabrique bien un enregistrement par Nom, et un champ Prenoms cumulant tous les prénoms des homonymes (juste pour l'exemple).
    Si j'affiche le contenu de cette requête dans un formulaire, pas de souci, le champ texte multi ligne m'affiche bien le contenu du champ Prenoms.
    En revanche, le rapport construit sur cette requête m'affiche un paquet de vermicelle à la place de ce champ :

    Any[Type[com.sun.star.sdbc.XClob], com.sun.star.bridges.jni_uno.JNI_proxy@74803eb3 [oid=4d4e880;gcc3[0];d3ee99eb4ad945faaca0b12ef7259e8, type=com.sun.star.sdbc.XClob]]
    J'ai lu quelque part qu'il valait mieux passer par une vue. J'ai donc essayé de créer une vue avec ma requête. Ca ne fonctionne pas, et j'ai le message suivant :
    Aucun format de table n'a été trouvé. /home/buildslave/source/libo-core/dbaccess/source/ui/app/AppControllerGen.cxx:112
    Je comprends maintenant le souci avec le rapport (com.sun.star.sdbc.XClob), le type du champ construit est CLOB, et, il ne sait quoi en faire, visiblement.

    Ma question est donc : comment puis-je, dans ma requête, définir un type pour le champ "Prenoms" que j'ai construit ?

    Cordialement,
    Jean-Michel

  2. #2
    Rédacteur/Modérateur

    Bonjour et bienvenue,

    Je n'ai pas pu faire de tests avec le fichier donc ne peut faire qu'une suggestion.
    Bien qu'utilisant Firebird je n'utilise pas la version Firebird de LibreOffice.

    comment puis-je, dans ma requête, définir un type pour le champ "Prenoms" que j'ai construit ?
    en forçant le type par un CAST
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CAST(LIST( "Prenom", ASCII_CHAR( 13 ) ) AS VARCHAR(2048)) "Prenoms"

    Toutefois attention au débordement de taille.
    Ne sachant pas comment est définie la colonne "Prenom" et pour être sur d'avoir un chaine courte pour "prenom" j'utiliserai aussi TRIM
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CAST(LIST(TRIM("Prenom"), ASCII_CHAR( 13 ) ) AS VARCHAR(2048)) "Prenoms"


    Maintenant, ce qui sous Firebird me parait OK ne le sera peut-être pas (existence de CAST, TRIM) avec LibreOffice
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Candidat au Club
    Citation Envoyé par SergioMaster Voir le message

    en forçant le type par un CAST
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CAST(LIST( "Prenom", ASCII_CHAR( 13 ) ) AS VARCHAR(2048)) "Prenoms"

    Toutefois attention au débordement de taille.
    Parfait, ça fonctionne.
    Merci beaucoup !
    Jean-Michel

###raw>template_hook.ano_emploi###