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

BIRT Discussion :

[BIRT Version:4.2.1] Utilisation de paramètre a valeurs multiples


Sujet :

BIRT

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [BIRT Version:4.2.1] Utilisation de paramètre a valeurs multiples
    Bonjour,

    Je suis actuellement en stage et travail sur un projet BI avec Talend et Birt Version:4.2.1.

    Je souhaiterai créer un dataset qui me renvoi un tableau avec de X nombre de colonnes et dans lequel je peux choisir dynamiquement la valeur que prend un de mes paramètres. Pour être plus précis voila à quoi ressemble ma requête :

    select titi, toto, tata, tutu
    from ma_table
    where param1 = ?
    and param2 = ?
    and toto IN TOTO
    order by tata


    J'ai donc bien défini mes 2 premiers paramètres mais le 3ème me pose pb. Dans les propriétés avancées de mon Dataset > BeforeOpen j'ai :
    this.queryText=this.queryText.replace("TOTO",params["toto"].value.join("','"));


    Et lorsque je Deploy mon dataset et l'ouvre sur mon SpagoBI il me revoi :
    The following items have errors:

    ReportDesign (id = 1):
    + There are errors evaluating script "this.queryText=this.queryText.replace("TOTO",params["toto"].value.join("','"));":
    Fail to execute script in function __bm_beforeOpen(). Source:
    ------
    " + this.queryText=this.queryText.replace("TOTO",params["toto"].value.join("','")); + "
    -----
    A BIRT exception occurred. See next exception for more information.
    TypeError: Cannot find function join in object toto1; toto2; toto3; toto4; toto5;. (/report/data-sets/oda-data-set[@id="209"]/method[@name="beforeOpen"]#1).


    Je suis conscient que le post n'est pas des plus clair mais ça résume bien mon état d'esprit a l'heure actuel. Si quelqu'un peut au moins un peu m'aiguiller je lui en serait grandement reconnaissant ^^

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Points : 836
    Points
    836
    Par défaut
    Essaie plutôt avec cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select titi, toto, tata, tutu
    from ma_table
    where param1 = ?
    and param2 = ?
    and toto in ('TOTO')
    order by tata

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Tout d’abord, merci donino pour ta réactivité !

    Malheureusement même en modifiant ma requête comme tu me l'as conseillé, j'ai toujours la même erreur en retour.

    Je me demande si l'erreur ne vient pas de ma gestion des paramètres sur le serveur Spago. Qu'en penses tu ?

    J'ai bien créé ma ListOfValue ainsi que mon Driver Analytique, je les ai lié a mon document en cochant mon multi-value mais rien n'y fait.

    J'ai aussi tenté de remplacer toutes mes doubles quotes en simples quotes dans ma requête :
    this.queryText=this.queryText.replace('TOTO',params['toto'].value.join("','"));

    Je ne sais plus trop quoi faire ...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    TypeError: Cannot find function join in object toto1; toto2; toto3; toto4; toto5;.
    params['toto'].value ne renvoi pas une "list" au sens JAVA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select titi, toto, tata, tutu
    from ma_table
    where param1 = ?
    and param2 = ?
    and toto IN TOTO
    order by tata
    Pourquoi ne pas tout simplement remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select titi, toto, tata, tutu
    from ma_table
    where param1 = ?
    and param2 = ?
    and toto IN ?
    order by tata
    en mappant le dernier filtre sur ton paramètre TOTO?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour Galel, merci pour ta réponse.

    J'ai bien essayé la méthode que tu m'as conseillé. J'ai donc enlevé la fonction que j'avais entré dans le BeforeOpen des paramètres avancés de mon dataset. J'ai mappé mon filtre sur le paramètre que je souhaite. Je déploie, je sélectionne toto1 dans mes valeurs (de TOTO) proposées. Et voila ce que j'obtient :

    The following items have errors:

    Table (id = 210):
    + Cannot get the result set metadata.
    org.eclipse.birt.report.data.oda.jdbc.JDBCException: SQL statement does not return a ResultSet object.
    SQL error #1:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''\'toto1\''
    order by Ecart_de_Prix_PC desc' at line 5
    ;
    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''\'toto1\''
    order by tata desc' at line 5

    Je reste tout de même assez surpris par la présence de cette simple quote ''\'toto1\''

    Qu'en pense tu ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    Comment est définie ta variable TOTO? Est-ce bien une variable à choix multiple?

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/07/2010, 22h37
  2. Utilisation des paramètres BIRT
    Par cesar.girault dans le forum BIRT
    Réponses: 1
    Dernier message: 20/05/2009, 15h45
  3. Comment savoir quelle version d'MSXML IE utilise?
    Par trent94 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 17/07/2005, 18h38
  4. problème d'utilisation de paramètre
    Par pelelive dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2005, 14h55
  5. [XSLT] Utilisation de paramètre
    Par stailer dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 10/05/2004, 14h49

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