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.2.2] Lancement d'un report n fois


Sujet :

BIRT

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut [2.2.2] Lancement d'un report n fois
    Bonjour,

    Je cherche le moyen d'exécuter un report qui attend un seul paramétre n fois en automatique. Savez-vous si il existe une solution ?
    D'avance merci de vos réponses.

    @+

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Personne n'a jamais essayé de lancer le même rapport n fois ?
    Je pensais au départ au cascade parameter, mais je n'abouti pas de ce côté là non plus. D'autres idées ?

  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
    Pour moi il s'agit de la génération de rapports en mode batch.

    Il va sûrement falloir programmer un petit peu ...

  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
    Voilà, soit en mode batch il faut faire une petite boucle.

    Soit en Java, il faut également faire une petite boucle.

    Mais juste en passant par BIRT (en faisant Preview ou View as...), ce n'est pas possible et ce n'est pas prévu pour ca. Le RCP Designer et le plugin sont des outils de développement et non de production.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Merci pour ces infos, est-ce que je peux abuser et vous demander ou je pourrais trouver un exemple ?
    Merci d'avance.

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    J'ai récupéré sur le forum un exemple de lancement batch (Edition.java) fourni gracieusement par BiM que je remercie d'ailleurs.
    Tout fonctionne le report est bien executé.
    Maintenant deux petites questions complémentaires :
    1 - A quoi sert le fichier rptDocument généré ?
    2 - Puis-je afficher les documents généré ?
    3 - Est-ce possible de faire du publipostage ,
    Pour cette dernière question je m'explique. En fait j'ai un report qui attend un paramètre. Avec l'exécution en mode Batch tout fonctionne bien il me génére bien n document. Par contre est-ce possible de faire la même chose mais que dans un seul report ? Dites moi si c'estpas assez clair.

    D'avance merci de vos réponses.

  7. #7
    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
    Citation Envoyé par imhotep_zr7s Voir le message
    Maintenant deux petites questions complémentaires :
    1 - A quoi sert le fichier rptDocument généré ?
    2 - Puis-je afficher les documents généré ?
    3 - Est-ce possible de faire du publipostage ,
    Pour cette dernière question je m'explique. En fait j'ai un report qui attend un paramètre. Avec l'exécution en mode Batch tout fonctionne bien il me génére bien n document. Par contre est-ce possible de faire la même chose mais que dans un seul report ? Dites moi si c'estpas assez clair.
    1. A quoi sert le fichier rptDocument généré ?

      Il s'agit d'un rapport contenant la structure et les données. Il permet de générer rapidement le rapport sous différents formats.

    2. Puis-je afficher les documents généré ?

      Double-clic sur le fichier.

      Qu'entends-tu par afficher les documents générés ?

    3. Est-ce possible de faire du publipostage ?

      Tu peux utiliser un composant List au sein de test rapports pour itérer sur une liste d'éléments et ainsi créer un seul document.

  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
    Citation Envoyé par imhotep_zr7s Voir le message
    Bonjour,

    J'ai récupéré sur le forum un exemple de lancement batch (Edition.java) fourni gracieusement par BiM que je remercie d'ailleurs.
    Tout fonctionne le report est bien executé.
    Maintenant deux petites questions complémentaires :
    1 - A quoi sert le fichier rptDocument généré ?
    2 - Puis-je afficher les documents généré ?
    3 - Est-ce possible de faire du publipostage ,
    Pour cette dernière question je m'explique. En fait j'ai un report qui attend un paramètre. Avec l'exécution en mode Batch tout fonctionne bien il me génére bien n document. Par contre est-ce possible de faire la même chose mais que dans un seul report ? Dites moi si c'estpas assez clair.

    D'avance merci de vos réponses.
    Bonjour,

    Et bien de rien.

    Mais cela ne correspond pas à un lancement batch mais à un lancement en Java tout simplement Le batch, c'est de la ligne de commande.

    En fait, il y a deux étapes à la génération d'un état :
    • Run (Exécution) : Le run correspond à l'éxécution du rapport. En gros c'est le chargement et l'organisation des données. Il fait toutes les méthodes onPrepare et onCreate de l'édition entre autre, charge les DataSets, exécute les éléments, etc.
    • Render (Rendu) : Le render correspond au rendu. En gros, les méthodes onRender sont éxécutées, les styles sont appliqués, les propriétés visibility sont prises en compte, etc.


    Donc en gros on a :
    1. Run : rptDesign > rptDocument
    2. Render : rptDocument > PDF, HTML, XLS, DOC, PPT, etc.


    Donc si on veut donner le rendu en HTML avec un bouton PDF sur la page par exemple. On conserve le rptDocument pour éviter de recharger toutes les données et de n'avoir à refaire que le rendu.

    Pour le publipostage, je pense qu'il est mieux de rééxécuter une partie :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    IReportRunnable design = engine.openReportDesign(new File(realPath, "WEB-INF/etats/" + etat + ".rptdesign").getAbsolutePath());
     
    /* Exécution */
    IRunTask runTask = engine.createRunTask(design);
    runTask.setLocale(langue);
    /* Paramètres */
    for (String clef : parametres.keySet()) {
    	runTask.setParameterValue(clef, parametres.get(clef));
    }
     
    /* Publipostage */
    for (String nom : publipostage) {
    	runTask.setParameterValue("nom", nom);
    	runTask.run(chemin+".rptdocument");
     
    	/* Récupération du rptDocument */
    	IReportDocument doc = engine.openReportDocument(chemin+".rptdocument");
     
    	/* Rendu */
    	IRenderTask renderTask = engine.createRenderTask(doc);
    	option.setOutputFileName(chemin);	//Nom du fichier de sortie
    	option.setOutputFormat(format);		//Format du fichier de sortie
    	renderTask.setRenderOption(option);	//Chargement du fichier
    	renderTask.render();				//Création du fichier
    }

    Un truc un peu comme ça...
    Tu ne recharges alors que le ou les paramètres nécéssaires au publipostage, tu fais l'éxécution puis le rendu.

    D'autre part, séparer l'éxécution et le rendu est plus efficace en terme de performances .

  9. #9
    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
    Citation Envoyé par BiM Voir le message
    Bonjour,
    D'autre part, séparer l'éxécution et le rendu est plus efficace en terme de performances .
    Est-ce vrai lorsque l'on doit uniquement généré un type de sortie (PDF ou html ou doc ou ...) ?

  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
    Personnellement, je suis dans ce cas (génération unique) et il me semble avoir constaté un léger mieux. C'est peut être uniquement psychologique mais je ne pense pas

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Erwan :
    Ok, pour le rptDocument, mais comment est-ce que je peux l'utiliser après ?
    Pour le point 2 on oublie c'était une erreur de ma part.
    pour le 3 : en fait j'ai un report contenant un dataSet qui attend 1 paramètre.
    je voudrais pouvoir lui passer une liste et itérer sur la liste de paramètre et donc généré n fois le même report.
    Cela tient du batch ou du petit programme java qui itére sur les paramétres, mais je voudrais tout dans le même doc.
    J'ai bien noté ta proposition de faire un list dans mon rapport mais je ne vois pas du coup comment itérer sur la liste de paramètre et du coup générer n fois le même doc au sein d'un même rapport.

    BiM :
    Si merci j'y tiens. Effectivement c'est du java, mais bon c'est ce que je voulais dire par lancement en batch, car pour moi le java c'est ma troisième langue.
    (j'ai créer un projet web à partir du plugin BIRT[2.2.2] intégré à mon Eclipse.)
    Merci pour le publipostage c'est presque ce que j'étais en cours d'écrire dans ma servlet.
    Comment puis-je séparer l'exécution du rendu ?


    D'avance merci de vos réponses à tous les deux

  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
    L'exécution du rendu est déjà séparée dans l'exemple.

    Ensuite, pour ce qui est d'itérer sur la liste de paramètres il faut créer un ScriptedDataSet (voir FAQ).

    En gros, tu passes la liste de publipostage en paramètre normalement sous forme de liste ou de tableau puis tu crées un ScriptedDataSet. De là, une itération se fera comme sur n'importe quel DataSet.

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Voudrais pas faire mon gros lourd, mais un ScriptedDataSet c'est pour utiliser en programmation pas côté Designer directement ?
    J'ai pas trouvé trace dans la FAQ.
    Suis peut-être miro.

  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
    En effet...

    En fait c'est de la programmation dans le designer ou via ton appli Java directement.

    Bref, l'exemple de la FAQ c'est via le designer : http://www.developpez.net/forums/sho...6&postcount=15
    NB : Dans la FAQ, il n'était pas précisé qu'il s'agissait d'un ScriptedDataSet. C'est pourquoi j'ai rajouté une petite phrase d'introduction.

  15. #15
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    pardon non pas tapé
    Bon, ok je viens de parcours ton poste mais je ne vois pas dans le designer ou je peux rajouter des infos sur le open ou sur le fetch.

  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
    C'est pas grave

    Bon alors, tu sélectionnes ton ScriptedDataSet. Dans la partie principale du designer, tu as un onglet Script (après celui de Master Page).

    Quand tu es sur ton ScriptedDataSet, dans cet onglet tu as en haut un menu déroulant avec entre autre open et fetch. C'est ces deux méthodes qu'il faut remplir.

    Bon courage !

  17. #17
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Ok parfait, désolé je connais pas encore bien l'interface.
    Pour ce qui est de remplir maintenant ok.
    Le truc c'est que j'ai mon DataSet qui attend un seul paramètre (un identifiant pour le moment récupéré par par autre DataSet qui fait un distinct sur une table). Bref, je demande donc à mon utilisateur de sélectionner un ou plusieurs identifiant. Donc je vais les récupérer dans mon AfterOpen, jusque là j'ai bien compris. Le truc c'est que toi dans ton exemple tu parles de la récupération immédiate des objets alors que moi, mon DataSet attend juste ce paramètre pour me retourner les données. Comprend tu ma problématique ?

    D'avance un grand merci pour ton expertise.

  18. #18
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    J'ai essayé pas mal de chose avec les scripts onBeforeOpen et onfetch mais je n'aboutis pas pour le moment.
    Est-ce que quelqu'un aurait une idée ?
    D'avance merci.

  19. #19
    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
    Dans les ScriptedDataSet les méthodes onFetch et onBeforeOpen n'existent pas !

    Tu n'utilises donc pas le bon type de DataSet.

    Pour créer un ScriptedDataSet. Il faut d'abord créer un ScriptedDataSource (il n'y a aucun paramétrage à faire). Ensuite, il suffit de créer un nouveau DataSet, on sélectionne alors le ScriptedDataSource et on crée les colonnes. Ensuite tu peux remplir les méthodes.

  20. #20
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Désolé de te déranger encore, mais du coup je ne vois pas comment me sortir de mon soucis. J'ai bien créer un Scripted Data Source et un Data Set basé sur le Scripted Data Source, par contre pour le reste je comprends décidément rien.
    Aurais-tu par hasard un exemple ?
    D'avance merci de ton aide.

Discussions similaires

  1. Erreur lors du lancement de crystal report
    Par planeurbret dans le forum VB.NET
    Réponses: 0
    Dernier message: 15/01/2015, 23h01
  2. Réponses: 0
    Dernier message: 22/02/2010, 14h03
  3. Lancement d'un report depuis une application RCP
    Par tatemilio2 dans le forum BIRT
    Réponses: 1
    Dernier message: 15/09/2008, 12h20
  4. Réponses: 2
    Dernier message: 14/03/2006, 14h49
  5. Bloquer le lancement de mon application plusieurs fois
    Par marseillais57 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/12/2005, 10h51

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