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 :

Génération du contenu d'un rapport pour toutes les valeurs d'un paramètre


Sujet :

BIRT

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Génération du contenu d'un rapport pour toutes les valeurs d'un paramètre
    Bonjour,
    Je m'intéresse depuis peu à BIRT (8 mois) et j'ai le problème suivant:

    Objectif 1:
    Générer en ligne de commande un rapport PDF de données:
    Exemple: runReport.bat --format "pdf" --output MonRapport.pdf --parameter "ID=1" --parameter "Date=2008-03-23" "MonRapport.rptdesign"

    Note: Les paramètres Date et ID sont obtenus par une requête sql et sont des listes (combobox lorsque je travaille en mode interactif).

    situation: Le problème est correctement traité et je génère bien mon rapport PDF sous réserve de fournir les paramètres indiqués. Mon rapport contient des tables et des graphes (charts).

    Problème: A chaque changement de paramètre (date ou ID) j'ai un nouveau PDF. Cette situation n'est pas satisfaisante si la liste des valeurs de paramètre est importante. Je me retrouve alors avec beaucoup de pdfs.

    Objectif2:
    Je souhaite donc faire une boucle sur les valeurs de chaque paramètre et à chaque fois, générer dans LE MÊME fichier PDF, le contenu actuel (tables et Graphes de l'objectif1).

    Comment faire avec BIRT?
    Je pensais aux datasets dynamiques, mais je ne sais pas très bien comment mettre en oeuvre cela...

    Merci d'avance pour vos solutions et suggestions.

  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,

    Réponse à l'objectif 1 : Utilisation de la commande genReport
    http://www.developpez.net/forums/m2182203-2/

    Réponse 1 à l'objectif 2 : Simulation d'un paramètre à valeurs multiples multiples
    http://www.developpez.net/forums/m2991578-8/

    Réponse 2 à l'objectif 2 : Utilisation d'un Scripted DataSet (à mixer avec la réponse 1 pour une solution optimale)
    http://www.developpez.net/forums/m3151166-15/

    Je pense que la réponse 1 correspond mieux

    Bon courage ! Et n'hésite pas à demander plus de précisions.

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    Objectif 1 : Tu peux utiliser un ETL (Talend par exemple) pour automatiser la génération de ces N rapports

    Objectif 2 :
    • utilise une librairie dans laquelle tu crées un composant 'List' contenant ton rapport actuel. Ce composant liste sera associé à une requête bouclant sur l'intégralité des valeurs possibles ;
    • crée un rapport avec paramètres. Inclus la liste de la librairie dans ton rapport et filtre les données de la requête associée au composant 'List' en fonction des valeurs des paramètres ;
    • crée un rapport sans paramètre utilisant le composant 'List' de la librairie. Ce rapport sert à générer l'ensemble des instances possibles au sein d'un même PDF.


    Tu peux aussi utiliser un et un seul rapport en rendant les paramètres optionnels.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Merci pour votre disponibilité, votre réactivité et vos solutions.

    J'essaie depuis ce matin de mettre en oeuvre la réponse2 (à l'objectif 2) proposée par BIM: simulation d'un paramètre à valeurs multiples; en suivant le lien http://www.developpez.net/forums/m2991578-8/.
    En rajoutant la requête "select * from customers where state in ('"+params["state"].value.REPLACE(/,/g,"','")+"'). Je limite la sortie des résultats (preview des datasets) aux états sélectionnés dans la liste state. Par contre dans le rapport, je ne vois pas de boucle sur la liste des paramètres avec rajout dans la suite du composant associé.

    Concrètement, si mon rapport contient un composant chart "C1" correspondant au paramètre "date=01-03-2009", si les dates disponibles sont 01-03-2009, 02-03-2009, ... ,10-03-2009, en bouclant sur ces dates je souhaite pouvoir générer dans le même PDF, les charts C1,C2, C3, ..., C9, C10.

    Si j'ai dû omettre une étape dans la mise en œuvre, ce serait sympa de me donner quelques précisions.

    Je vais aussi essayer ce soir les solutions proposées par Erwan. Elles me semblent s'appuyer sur des notions avancées de Birt: Librairie, ... dont je n'ai pas encore la maitrise. Ce serait sympa de me fournir quelques références ou exemples

    Merci d'avance.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    pour tes besoins utilises le composant 'list' qui permet d'itérer sur un ensemble de valeurs (en l'occurrence des dates dans ton cas). C'est surtout de ça que tu as besoin. Tu inclus ensuite ton composant 'chart' dans ton composant 'list'.

    Les librairies te seront peut-être pas utiles.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Merci pour votre réponse précédente.

    J'ai mis en œuvre les propositions et ça marche dans la plupart de mes cas.

    J'ai cependant un soucis:

    Lorsque le composant (ex Table) est paramétré directement (par date par exemple), je peux lier l'itérateur "date" de l'élément de layout List au paramètre date de ma Table (chart, crossTab etc.)

    Note: "paramétré directement" signifie que dans le designer Birt, je sélectionne le composant (Table, ou chart, ...) et je clique sur:
    Layout --> Property Editor --> Binding --> bouton radio Data --> Dataset Parameter Binding ...

    Problème: Lorsque le composant est filtré (sachant que la définition du filtre est fonction du paramètre date) Je n'arrive plus à lier ce paramètre à l'itérateur date de l'élément de Layout "List".

    La commande suivante ne fonctionne plus:
    Layout --> Property Editor --> Binding --> bouton radio Data --> Dataset Parameter Binding ...

    Celle-ci non plus:
    Layout --> Property Editor --> Filters --> ... ???

    J'ai ce problème Sur tous les datasets que j'édite et utilise l'onglet filters pour définir les filtres en fonction de paramètres sur lesquels je souhaite faire une boucle.

    Ma question est donc: comment lier le paramètre défini dans le filtre à la liste? De sorte que lorsque je boucle sur ce paramètre, les composants (table, chart, etc.) sont recalculés?

    Merci d'avance pour votre éclairage.

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

Discussions similaires

  1. [Vxi3] créer un objet non recalculé pour toutes les lignes d'un rapport
    Par celesaored dans le forum Designer
    Réponses: 0
    Dernier message: 31/05/2013, 16h24
  2. [XL-2010] Boucle For qui ne fonctionne pas pour toutes les valeurs
    Par pleskyd dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 13/02/2012, 15h16
  3. Site pour toutes les résolutions...
    Par Angeldu74 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 24/02/2006, 23h14
  4. Requete SELECT : prendre toutes les valeurs pour 1 champ
    Par fab22montpellier dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/09/2005, 09h12
  5. Réponses: 6
    Dernier message: 06/10/2004, 10h41

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