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 :

[2.5.0] Passer un report parameter d'un rapport vers un autre


Sujet :

BIRT

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut [2.5.0] Passer un report parameter d'un rapport vers un autre
    bonjour,
    j'ai un premier data set que je viens filtrer avec un report parameter appelé "codessai". Lorsque j'affiche mon rapport, j'ai un lien sous forme de label qui me permet d'ouvrir un deuxième rapport qui doit afficher des données provenant d'un autre data set. Je voudrais filtrer les données de ce deuxième rapport avec le report parameter "codessai".

    - pour faire ceci,j'utilise hyperlink options du label, je coche drill- through et je mets le nom du rapport dans le report design.
    - j'écris le code javascript dans le beforeopen de mon deuxième data set.
    voici mon code
    this.queryText = "select preforme.numeropref from preforme "
    this.queryText=this.queryText + "where preforme.codedessaispref="+reportContext.getParameterValue("codessai");
    çà ne marche pas, je n'ai aucune donnée, j'ai l'impression qu'il ne reconnait pas reportContext.getParameterValue("codessai").
    merci de votre aide.

  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
    Par défaut
    Bonjour,

    Essaye en remplaçant par params["codeessai"].

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    bonjour,
    j'ai testé
    this.queryText = "select preforme.numeropref from preforme "
    this.queryText=this.queryText + "where preforme.codedessaispref="+params["codeessai"];
    çà m'affiche une erreur, il ne reconnait pas le report parameter

    The following items have errors:

    Table (id = 57):
    + An exception occurred during processing. Please see the following message for details:
    Data engine operation failed due to an unexpected exception.
    There are errors evaluating script "params["codessai"]":
    Report parameter "codessai" does not exist

  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
    Ah oui, c'est vrai qu'en 2.5, je crois qu'on est obligé de déclarer les paramètres.

    Et si tu l'ajoutes dans la liste des paramètres du rapport, tu as toujours une erreur ?

    (Tu peux le mettre en Not required et Hidden pour ne pas qu'il le demande ni l'affiche dans la fenêtre de paramètres)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    autant pour moi, tout à l'heure j'ai fait une erreur de copier-coller,il ne reconnaissait pas le report parameter parce qu'il était mal écrit.
    En fait, il m'affiche tous les enregistrements et me met ce message d'erreur à la fin.Il y a une erreur sur le script?J'ai vu qu'il y avait plusieurs façons d"écrire, on pouvait rajouter des '.
    The following items have errors:

    ReportDesign (id = 1):
    + There are errors evaluating script "
    this.queryText = "select preforme.numeropref from preforme "
    this.queryText=this.queryText + "where preforme.codedessaispref="+params["codessai"];

    ":
    {1}.

  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
    Bonjour,

    Essaye plutôt avec this.setQueryText(...);

    Mais de façon à optimiser un peu plus ta méthode, j'imagine que la requête de base est le select sans le where.

    Donc tu pourrais faire ceci dans le beforeOpen :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    parametre = params["codeessai"];
    if (parametre != null && parametre.size() > 0)
    	this.setQueryText(this.getQueryText() + " where preforme.codedessaispref="+parametre);

    Attention à l'injection SQL avec ce genre de requête !!

    NB : Si la comparaison concerne un objet String, préférer LIKE plutôt que = et ajouter des quotes autour du paramètre ('). Mais il existe un moyen plus simple (et plus propre) pour faire des requêtes paramétrées optionnelles dans le cas d'un String.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    bonjour,
    En effet,il s'agit bien d'une requête select sans le where, la comparaison concerne bien un objet string.
    j'ai essayé le script ci-dessous, j'ai toujours la même erreur mais je ne suis pas du tout sûr de l'écriture, çà a l'air de se compliquer avec les string!
    parametre =params["codessai"];
    if (parametre != null && parametre.size() > 0)
    this.setQueryText(this.getQueryText() + " where preforme.codedessaispref like '"+ parametre+"'");

  8. #8
    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
    Bon alors dans ce cas, pas de beforeOpen, c'est inutile, compliqué et peu maintenable !!

    Tu vas faire comme suit :
    • Tu édites ton DataSet et y mets la requête suivante :
      Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      select preforme.numeropref
      from preforme
      where preforme.codedessaispref like ?
    • Ensuite, tu vas dans la section Parameters de ton DataSet.
    • New...
      • Name : [ce que tu veux]
      • Data Type : String
      • Direction : Input
      • Default value : N/A
      • Linked to report parameter : codeessai
    • Tu sors de l'édition du DataSet en confirmant.
    • Tu édites ton paramètre codeessai
    • Tu mets en Default Value : "%"

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    j'ai suivi les instructions à la lettre, çà ne marche toujours pas, il n'y a pas d'erreur mais je n'ai pas de données à s'afficher.
    De plus, il m'affiche la boite de dialogue des report parameter avec par défaut "%".

  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
    Citation Envoyé par thibreizh Voir le message
    j'ai suivi les instructions à la lettre, çà ne marche toujours pas, il n'y a pas d'erreur mais je n'ai pas de données à s'afficher.
    De plus, il m'affiche la boite de dialogue des report parameter avec par défaut "%".
    Pour ça, je t'ai déjà dit de mettre le paramètre en hidden.

    Enfin, si ton paramètre contient toujours "%", c'est que ta valeur n'a pas été passée au paramètre...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    si je coche l'option hidden, il me met une erreur

    Exception
    Close

    org.eclipse.birt.report.service.api.ReportServiceException: Required parameter codessai is blank.
    Show Exception Stack Trace

  12. #12
    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
    Tu as bien mis "%" dans la Default Value du paramètre dans le rapport ? Peux-tu mettre ton rptdesign en PJ stp sinon ?

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    voici le rpt.design
    Fichiers attachés Fichiers attachés

  14. #14
    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
    Voici ce que j'ai réussi à faire avec ce que tu m'as dit (le drill-through est intégré à mon rapport : Premier lancement avec tous les pays, puis si on clique sur un numéro, on obtient un rapport avec uniquement le pays souhaité).

    (Attention, version 2.5.1)
    Clients.rar

  15. #15
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par BiM Voir le message
    Voici ce que j'ai réussi à faire avec ce que tu m'as dit (le drill-through est intégré à mon rapport : Premier lancement avec tous les pays, puis si on clique sur un numéro, on obtient un rapport avec uniquement le pays souhaité).

    (Attention, version 2.5.1)
    Clients.rar

    Bonjour , bonour BiM

    j'apporte mon ti grain de sel !as tu remarqué qu'en mettant row["nom_parametre"] et qd tu clic sur le hyperlink (nom_parametre) tu ouvres -effectivement- le second report, mais qu'il te demande de saisir à nouveau les valeurs pour les paramètres pour le -second report- lancer ..

    à mon humble avis, le but est de pouvoir cliquer directement sur le nom et d'avoir directement les valeurs pr le meme paramétrage
    et pour ça j'ai mis data["nom_parametre"]

    qu'est ce que t'en penses ?

    autre point : j'ai remarqué que si les paramètres n'ont pas la même longueur de champs , Birt s'emmele les pinceaux, il renvoie la 1ere valeur de la liste de paramètres du 2nd report ...
    mon astuce pr l'instant est de mettre la valeur la plus courte (en terme de length, codé) en 1er dans la liste ...
    Pour l'instant ça va, mais je crains le jour où j'aurai plusieurs valeurs de tailles différentes !

  16. #16
    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
    Citation Envoyé par tropik972 Voir le message
    Bonjour , bonour BiM
    Bonjour

    Citation Envoyé par tropik972 Voir le message
    j'apporte mon ti grain de sel !as tu remarqué qu'en mettant row["nom_parametre"] et qd tu clic sur le hyperlink (nom_parametre) tu ouvres -effectivement- le second report, mais qu'il te demande de saisir à nouveau les valeurs pour les paramètres pour le -second report- lancer ..

    à mon humble avis, le but est de pouvoir cliquer directement sur le nom et d'avoir directement les valeurs pr le meme paramétrage
    et pour ça j'ai mis data["nom_parametre"]

    qu'est ce que t'en penses ?
    Effectivement, je te suggère de repasser les paramètres avec leur valeur dans le rapport (plutôt param["nom_parametre"] que data d'ailleurs).
    Attention à ne pas confondre les mots clefs data, row, dataSetRow, param, measure, etc.

    Citation Envoyé par tropik972 Voir le message
    autre point : j'ai remarqué que si les paramètres n'ont pas la même longueur de champs , Birt s'emmele les pinceaux, il renvoie la 1ere valeur de la liste de paramètres du 2nd report ...
    mon astuce pr l'instant est de mettre la valeur la plus courte (en terme de length, codé) en 1er dans la liste ...
    Pour l'instant ça va, mais je crains le jour où j'aurai plusieurs valeurs de tailles différentes !
    Tu as donc un paramètre qui prend en entrée une liste ? Comment est définie cette liste ?

  17. #17
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par BiM Voir le message
    Bonjour

    Effectivement, je te suggère de repasser les paramètres avec leur valeur dans le rapport (plutôt param["nom_parametre"] que data d'ailleurs).
    Attention à ne pas confondre les mots clefs data, row, dataSetRow, param, measure, etc.
    Justement, quelle sont les différencs entre ces mots clefs, j'arrive à les utiliser mais sans vraiment comprendre !

    quand tu mets param["nom_parametre"].value il te redemande les paramètres ...
    moi je pense que ce n'est pas ce qui est pratique. Ce qui est pas mal, c'est quand tu clic sur un hyperlien dans un report comportant des paramètres,
    qu'il t'envoie vers l'autre report avec les mêmes paramètres renseignés sans avoir à le refaire.

    Mon cas, j'ai un report1 (en amont) avec des paramètres : date, top_presence_ou_pas_presence , nom_region
    nom_region contient l'hyperlink
    je veux que lorsque je clic sur nom_region il me retourne un report2 (prenant notamment nom_region comme paramètre d'entrée) qui aura le détail département par régions mais sans avoir à remettre la date, ou le top_presence_ou_pas_presence
    d'où l'utilisation de data["nom_parametre"]

    Citation Envoyé par BiM Voir le message
    Tu as donc un paramètre qui prend en entrée une liste ? Comment est définie cette liste ?
    liste pour par ex nom_region:
    ABC
    BBD
    CCO
    O
    DRT

    si je choisis O il va m'envoyer vers la 1ere valeur de la liste d'entrée du 1nd report à savoir ici : ABC
    mon astuce est de déclarer "O" en 1er dans la liste d'entrée
    Ici, je m'en sors car j'ai une longueur de champs 3 et 1
    mais si j'en avais de ttes les tailles, je serai b.... !! lol
    je suis clair ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/12/2009, 14h06
  2. [2.2.1] Report parameters - Allow multiple values
    Par JahPil78 dans le forum BIRT
    Réponses: 4
    Dernier message: 26/02/2008, 18h36
  3. Réponses: 21
    Dernier message: 12/10/2007, 18h30
  4. [Reporting] format des "report parameters" de type dateTime
    Par Qapoka dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/09/2007, 16h45
  5. Réponses: 1
    Dernier message: 24/08/2007, 10h48

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