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 :

Initialisation d'une liste de valeurs dans un rapport via l'URL de lancement (du rapport)


Sujet :

BIRT

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Initialisation d'une liste de valeurs dans un rapport via l'URL de lancement (du rapport)
    Bonjour,

    Est-ce qu'il est possible d'initialiser dans un rapport, un paramètre de type 'liste de valeurs' (multiple ou non) via l'URL de lancement du rapport BIRT?

    Test effectué:
    On définit un paramètre lstVal, contenant des entiers.
    Et dans l'URL on a :

    http://localhost:8081/birt-viewer/run?__report=Report\tstGetParamURL.rptdesign&lstVal=4,2,3

    Le paramètre récupère l'ensemble des valeurs concaténées dans le premier élément du tableau:
    params["lstVal"].value[0] -> 423

    On doit pouvoir transmettre les 3 valeurs dans les 3 éléments du tableau?

    Merci par avance

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Initialisation d'une liste de valeurs dans un rapport via l'URL de lancement (du rapport)
    Malheureusement, non .

    C'est l'inverse que je veux faire: je dois récupérer les valeurs du paramètre (listés dans l'URL) dans le rapport, exécuté via l'URL.

    Cf:
    http://www.eclipse.org/birt/phoenix/...php#parameters

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Heu, nonon je t'assure, c'est ça. Regarde toutes les questions de la page que je t'ai donné, tu devrais y trouver ton bonheur.

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    C'est cette question dans la FAQ:
    Comment faire un formulaire qui simule un paramètre à valeurs multiples ?

    Si j'ai bien compris , cela permet de générer l'URL de lancement du rapport BIRT avec les valeurs saisies dans le formulaire de saisie HTML.

    Mon besoin est différent: j'ai l'URL avec le paramètre et les valeurs correspondantes. Mais lorsque cette URL est exécutée, les valeurs ne sont pas correctement affectées au paramètre, dans le rapport .

  6. #6
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ca c'est le début de la réponse. La suite explique comment utiliser ces paramètres.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    pour les infos, mais le problème subsiste .

    L'exemple permet en effet de générer à partir d'un écran de saisie HTML d'une liste de valeur multiple, un rapport avec le paramètre passé dans l'URL
    Ainsi, si je sélectionne les valeurs 4 2 et 3 depuis l'écran de saisie (comme dans l'exemple de Julien), le browser renvoit l'URL suivante:
    http://localhost:8081/birt-viewer/ru...n&lstVal=4,2,3

    Jusque là, ça fonctionne comme attendu,.

    Mais ensuite, au niveau du rapport, le paramètre lstVal contient toutes les valeurs concaténées dans le premier élément du tableau
    (au niveau du rapport le tableau est déclaré en 'List Box', multivaleurs, de type 'decimal' et 'hidden')
    params["lstVal"].value[0] = 423

    Les valeurs du paramètre de l'URL peuvent-elles être transmises dans le rapport, comme suit:
    params["lstVal"].value[0] = 4
    params["lstVal"].value[1] = 2
    params["lstVal"].value[2] = 3
    ?


    Y a-t-il quelque chose à faire de particulier pour que les valeurs du paramètre en argument dans l'URL soient transmises dans le tableau correspondant à ce paramètre dans le rapport (lstVal dans mon cas)?

    NB: j'utilise BIRT 2.5.1

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Ci-après une solution qui marche, mais lourde, :
    - Passer via l'URL un paramètre simple de type chaine (lstVal)
    - dans la méthode 'initialize' du rapport, découper la chaine selon le caractère de séparation choisi (ex: ','), et l'affecter dans paramètre de type multivalue (tbVal):
    params["tbVal"].value=params["lstVal"].value.split(',');


    Est-ce que quelqu'un parmi vous aurait une méthode plus simple, sans affectation dans une autre variable?
    D'avance, merci.

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    PI: Ce problème n'existe pas sur actuate v10. Il doit donc s'agir d'un bug sur BIRT 2.5.1.

  10. #10
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ce n'est pas un bug, c'est une fonctionnalité supplémentaire...

    Juste que dans la version gratuite, il faut l'implémenter soit même. Dans la version payante, elle est déjà implémentée (il faut bien que dans les versions payantes il y ait des plus par rapports aux versions gratuites).

  11. #11
    Membre éprouvé
    Avatar de lazarel
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2007
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2007
    Messages : 893
    Points : 1 164
    Points
    1 164
    Par défaut
    Ci-après une solution qui marche, mais lourde, :
    - Passer via l'URL un paramètre simple de type chaine (lstVal)
    Jusque là tout va bien dans une URL tu doit forcément passer un String.

    - dans la méthode 'initialize' du rapport, découper la chaine selon le caractère de séparation choisi (ex: ','), et l'affecter dans paramètre de type multivalue (tbVal):

    params["tbVal"].value=params["lstVal"].value.split(',');
    Je comprends pas le problème ? Pourquoi tu garde pas ton paramètre à valeur multiple quelque soit son type ça marche très bien.

    Tu as juste un problème pour récupérer ton paramètre sous forme de String ?

  12. #12
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    FYI: regarde du coté de la methode: getInitParameterNames() du servlet ViewerServlet, peut etre une piste.

  13. #13
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour à tous,

    Citation Envoyé par lazarel Voir le message

    Jusque là tout va bien dans une URL tu dois forcément passer un String.
    Citation Envoyé par BiM Voir le message
    Ce n'est pas un bug, c'est une fonctionnalité supplémentaire...
    Juste que dans la version gratuite, il faut l'implémenter soit même. Dans la version payante, elle est déjà implémentée (il faut bien que dans les versions payantes il y ait des plus par rapports aux versions gratuites).
    Je comprends mieux maintenant, qu'il faille faire une réaffectation pour convertir de 'string' en 'tableau'.
    J'ai mis les affectations (string -> tableau d'entier ) dans un java script, placé dans la librairie générale, qui contient les paramètres. De cette façon, l'initialisation est automatique pour tous les rapports


    Merci bcp à tous

  14. #14
    Membre éprouvé
    Avatar de lazarel
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2007
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2007
    Messages : 893
    Points : 1 164
    Points
    1 164
    Par défaut
    Je comprends mieux maintenant, qu'il faille faire une réaffectation pour convertir de 'string' en 'tableau'.
    J'ai mis les affectations (string -> tableau d'entier ) dans un java script, placé dans la librairie générale, qui contient les paramètres. De cette façon, l'initialisation est automatique pour tous les rapports
    En fait c'est presque ça

    Si tu as déclaré un paramètre pouvant avoir plusieurs valeurs quand on saisit ton paramètre BIRT voit ce dernier comme un tableau d'objet ayant un type String, Int etc... ce qui signifie :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    var tab = params["myParam"].value;
    Te renvoie un array au sens Javascript (c'est implicite)
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    var temp= params["myParam"].value.join();
    Te renvoie un String.

    Conclusion, si ton paramètre te permet de récupérer une liste article avec leur identifiant 1,3,8,10 :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    var temp= params["myParam"].value.join();
    Te renvoie 1,3,8,10 peut importe ce que tu as au niveau de l'URL (libre à toi d'en faire ce que tu veux).

    Attention

    Si dans ton rapport tu dois afficher plusieurs milliers d'articles avec une requête du type IN tu seras limiter au niveau de l'URL.
    Ce que n'est pas dit et qui doit surement être le cas dans la version payante : les paramètres servant de critère à la construction de ta requête ne sont presque jamais passés dans la requête HTTP mais via des objets en session.

    Conclusion le viewer de BIRT c'est bien mais c'est très limitatif dans certain cas. En revanche l'implémentation de l'API est elle sans compromis

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

Discussions similaires

  1. Utiliser une liste de valeurs dans une sous-requête
    Par sagopa dans le forum Requêtes
    Réponses: 12
    Dernier message: 30/04/2012, 11h08
  2. Recherche d'une liste de valeurs dans une autre
    Par charlebakhtovsky dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/02/2011, 09h20
  3. insérer une liste de valeurs dans une colonne
    Par ecdxml dans le forum SQL
    Réponses: 7
    Dernier message: 16/10/2009, 15h57
  4. Réponses: 2
    Dernier message: 29/06/2007, 14h49
  5. Utiliser une liste de valeur dans un select
    Par in dans le forum Oracle
    Réponses: 13
    Dernier message: 09/01/2007, 11h33

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