|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Bonjour,
Je découvre l'outil iReport ainsi que la lib JasperReport. Je souhaite générer dans mon pdf une liste de puces, le contenu de chaque puce est envoyé par paramètre, chaque puce a son champ dynamique. Le problème est que le nombre de puces est dynamique, je ne sais donc pas à l'avance combien de paramètres/champ dynamique j'aurais besoin. J'ai pensé au début de mettre toutes les puces dans un seul champ dynamique, mais je fais face à des problèmes d'indentation et j'ai également des sous-puces à gérer. Donc la solution d'une puce par champ me semble la plus apte à gérer la hiérarchie de puces ainsi que son indentation. Merci d'avance à ceux qui tenteront de m'aider. |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Regarde l'utilisation des sous rapports :
http://www.jasperforge.org/images/st...iewlet_swf.htm |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Oui, je me suis dirigé sur cette voie là.
Mais je fais maitenant face à des petits soucis au niveau de la compilation, j'aimerais envoyer des parametres à chaque sous-rapport puis assembler le tout. J'ai pour l'instant ceci: Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Quelle est ta source de données? Requete sql, bean ou xml?
Tu parles là de plusieurs sous-rapports, mais d'aprés ton premier post, pour moi tu n'auras besoin que d'autant de sous rapport que tu as de niveau d'imbrication dans ta liste. Les itérations se font d'elle même en placant le rapport dans la band Detail et en passant le parametre à itérer à ton sous-rapport. Tu n'as donc pas à créer autant de parametre/sous rapport que tu as de puces. Regarde bien les exemples sur le site de ireport, de ce que j'ai compris, ce que tu souhaites faire est assez simple... Ou donne plus de précisions en indiquant quelles sont exactement tes erreurs et là où tu galeres |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Je vais essayer d'être plus clair :p
Au niveau des données, comme je dois faire du traitement sur le texte avant de l'ajouter, je pense faire passer le texte par paramètre à chaque rapport/sous-rapport. Pour mon problème de puces, j'ai donc pensé à faire un sous-rapport par puce, chaque sous-rapport aurait une zone sous-rapport, on obtiendrai en quelque sorte une liste chainée. Après il reste le problème des paramètres à passer à chaque sous-rapport: le texte à afficher pour la puce et le path de l'éventuel sous-rapport. Comme je ne sais pas à l'avance le nb puces et que j'appelle à chaque puce le même sous-rapport, se pose le problème des paramètres, chaque sous-rapport aura les même noms de variables, il faut donc que je les précise à chaque sous-rapport. Merci de te soucier de mon problème et n'hésite à ma demander d'autres précision. Edit: Utiliser un data source bean java plutot que des parametres pourrait être une solution |
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Pour être sûr d'avoir compris, en schematisant, tu attends un resultat du genre :
Code :
Et si oui, tu as raison... En créant les beans adéquats, tu t'en sortiras facilement : cf JRBeanDataSource . Tu crées un bean qui va contenir une liste de bean "Puce". A chaque bean "Puce", tu peux associer une liste de bean "Souspuce", etc etc... Au niveau de ireport, il suffit de passer la bonne liste comme parametre des sous-rapports. Quand tu dis "Comme je ne sais pas à l'avance le nb puces", tu veux dire que tu ne connais pas le nombre de puces d'un même niveau (ça c'est pas un soucis) ou que tu ne connais pas le nombre de niveau de "sous puce" (ça c'est un peu plus problématique, quoique...)? La suite, lundi... Bon WE |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Salut, me revoilà
Donc oui, le schéma que tu proposes est comme je souhaite le faire.Sauf que je connais le nb de niveau de sous-puces qui est de 2 comme le décrit le schéma ci-dessous: - puce 1 ---- sous-puce 1 - puce 2 - puce 3 ---- sous-puce 1 ---- sous-puce 2 Lister les puces, ce n'est pas un problème, mais je ne sais pas quand il y a ou non des sous-puces, enfin je ne vois pas trop comment le représenter au niveau bean vu que l'itération est automatique. Mais au fait question idiote, ireport gère les puces ? je ne l'ai pas trouvé et j'utilise un caractère spécifique pour faire moi même les puces... |
|
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Citation:
Si tu créés un bean spécifique, c'est comme je l'ai expliqué plus haut, tu associes à chaque puce ta liste de sous-puce... Au niveau ireport, tu dois créer un sous-rapport pour lister tes puces et dans ce sous rapport un nouveau sous-rapport qui listera les sous-puces associees aux puces. Au "sous-sous-rapport", tu n'as juste qu'à passer comme datasource la liste de sous-puce. Citation:
|
||
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Ok, je vois le topo.
Par contre as-tu un exemple concret pour passer le bean à un sous-rapport ? Déjà je galère dans ireport pour créer une connexion à mon bean et afficher seulement le 1er niveau de puce. POur tster, mon bean a globalement cette forme: Code :
|
||
|
|
00
|
|
|
#10 | ||||
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Je n'ai plus mes projets jasper/ireport sous la main, je vais essayer de les recuperer...
Sinon avec mes souvenirs, voici comment je procederais : - Les objets sont plus simples : Code :
Code :
Bon courage! |
||||
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Merci pour toutes ces précisions, j'ai réussi à intégrer mon bean
Je te recontacterais peut-être si d'autres soucis, maintenant j'essaye de passer mon bean puce a unsous-rapport. Edit: Décidement, je galère, passer mon datasource au master report me pose aucun soucis, par contre je n'arrive pas à le transmettre au sous-rapport... Dans les parametres du sous-rapport, je précise "use data source expression" mais je ne sais pas quoi passer comme expression. Edit2: Et quand j'ai 3 puces par exmeple, il me recopie 3 fois la page entière avec le libellé de la puce |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Ce que tu dois passer à ton sous-rapport c'est simplement la liste de sous-puce.
Il faut déclarer ta liste et ensuite la passer comme datasource du sous-rapport en indiquant un truc du genre : new JRBeanCollectionDataSource($F(listSousPuce); |
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Heu, je ne te suis plus trop.
je récapitule ce que j'ai fait: - j'ai crée un bean puce (pour l'instant je test seulement un niveau, normalement le suivant sera sur le même schéma). - Dans mon java qui génère le fichier: Code :
- J'ai pour l'instant comme résultat 3 fois la bande où se trouve le field(donc 3 fois une image et d'autres textes dans cette bande) avec à chaque fois la bonne valeur ds le field (puce 1, puce 2, ...). - Il faudrait déjà que le field récupère la liste des beans et l'itére plutôt que ce soit la bande entière, ce serait peut-être là mon problème. Car ensuite je pourrais faire de même pour un sous-rapport. Merci en tout cas pour ton attention. |
||
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Ah je pensais que la liste de puce, c'était ok
C'est normal ce qui arrive ! Les elements de la band Detail (je suppose que c'est dans celle là) vont être itérés autant de fois qu'il y a d'occurence d'objets passés comme datasource, ce qui inclut tous les élements "statiques" contenus dans la band. Déjà à ce niveau là, il faut passer par un sous-rapport pour n'itérer que ta liste de puces. Et comme datasource de ce sous-rapport tu lui passes ta datasource principale, en utilisant le parametre "MASTER_DATASOURCE" ou "DATASOURCE_REPORT" , un truc dans le genre (selon les versions d'ireport). |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
On progresse, mais à petits pas :p
la connexion au sous-rapport fonctionne, les éléments de band détails ne repétent plus. Par contre si on reprend le code que j'avais mis au dessus (puce 1, puce 2, puce 3), je n'ai seulement que "puce 2" qui apparait. Dans le sous-rapport, j'ai créé un texte-field avec comme valeur $F{libelle} (libelle est la variable dans le bean ) |
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Peut-être un probleme de taille...
Dans ton sous rapport, met à 0 la taille de toutes les Band mise à part la Band "Detail" , que tu réduis en hauteur quasiment à la hauteur du champs libelle pour voir... |
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
1) En effet, il y avait ce problème, même si la 1ère puce n'apparait toujours pas.
2) et pour la sous-puce, comment je passe seulement la liste des beans pour les sous-puces à mon sous-sous-rapport ? dans mon bean puce, j'ai lelibellé et une liste de sous-puce. Promis dans bientôt je ne t'ennuie plus.
|
|
|
00
|
|
|
#18 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Tu vas plus pouvoir bcp m'ennuyer, je suis bientôt en vacances
1) 2) Comme je l'ai dit un peu plus haut. Il faut créer une variable pour ta liste de sous-puce (comme tu as créé pour le libellé des puces) et ensuite la passer comme datasource du sous-rapport en indiquant un truc du genre (à vérifier pcq je ne me souviens plus trés bien) : new JRBeanCollectionDataSource($F(listSousPuce); |
|
|
00
|
|
|
#19 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Ok, merci je testerai ça ce soir.
J'ai d'autres priorités pour valider ce produit, je vais plutôt créer un autre sujet. |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 24 ![]() |
Bon, j'ai testé et ça ne fonctionne pas. Je comprends le principe mais je prends une exception à la compilation du sous-rapport dans ireport.
Mon code dans la connexion au sous-sous-rapport: Code :
new JRBeanCollectionDataSource($F(listSP) Code :
The constructor JRBeanCollectionDataSource(String) is undefined |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com