|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre habitué
![]() |
Bonjour,
Je découvre Ireport depuis peu, et j'avoue que j'ai du mal en ce qui concerne les sous rapport. Voici comment j'ai procédé : - J'ai créé un rapport nommé "files.jrxml" qui constitue mon futur sous rapport - J'ai créé un rapport général "general.jrxml" qui inclu le sous rapport. J'ai vu que le pb d'Ireport c'est qu'il n'inclut pas vraiment le sous rapport directement avec un chemin, mais avec une référence via un identifiant à lui. Donc j'ai remplacé le code xml du rapport général par ceci : Code :
Le hic, donc, c'est que j'ai l'erreur suivante lorsque j'exécute mon programme java chargée de récupérer les infos et les distribuer dans le rapport général : Code :
Je vous remercie pour votre soutien EDIT : Un peu plus d'info, voici mon main java : Code :
|
||||||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : octobre 2006 Messages : 48 ![]() |
En fait je crois que tu peux pas passer directement ton subreport en absolutepath
ce que j'ai fait c'est que j'ai mis l'emplacement du subreport en parametre dans mon masterreport et puis j'ai passé en paramètres son adresse url et la pas de souci (tu peux utiliser la méthode toUrl() de la classe File je pense) j'espere que ça pourra t'aider |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() |
Ok, j'ai mis ce problème de coté pour le moment, je ferais comme tu dis lorsque j'aurais le temps et je te tiendrais au courant.
Merci pour tout |
|
|
00
|
|
|
#4 | ||||
|
Membre habitué
![]() |
Re,
En fait j'ai fait comme tu as dit (et c'est vrai qu'entre temps j'étais tombé sur des articles qui parlait de faire la même chose), mais cela ne change rien. J'ai peut etre mal fait, mais je ne pense pas. Voici les modifs que j'ai apporté : Dans mon main java, l'ajout des paramètres : Code :
Code :
|
||||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : octobre 2006 Messages : 48 ![]() |
je crois que tu dois donner l'URL absolue et non pas relative.
Mais je t'avoue que moi-même j'étais un peu perdu. Je travaille en client serveur donc avec mon serveur apache pas de souci pour passer une url mais là je sais pas trop. Il doit y avoir une solution mais c'est sur je n'ai jamais réussi à le faire avec une url relative. Si tu ne travaille pas avec un serveur ça doit pourtant bien être possible de passer ton adresse absolue de ton subreport sinon je vois pas comment tu peux faire. Un endroit où tu trouvera peut-etre qqun pour t'aider mais c'est en anglais : ici il y a bcp de passage et des vrais professionnels de Jasper |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() |
Relatif ou Absolu ne change rien.
Je vais aller poser la question sur sourceForge Merci de ton aide! |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Tout d'abord, il me semble que tes sous-rapports doivent être précompilés pour que ton master puisse y acceder. Dans mes souvenirs, je renseignais toujours les .jasper pour les sous-rapports et non les .jrxml.
Sinon, le chemin des sous-rapports est relatif à celui du master. Dans mon master, j'utilisais un parametre du genre SUBREPORT_DIR qui s'initialise automatiquement avec le répertoire conteneur du master. Et je concatenais avec le chemin et le nom de mon sous-rapport. Par exemple, si le master et les sous-rapports sont dans le même répertoire, je renseignais juste : SUBREPORT_DIR +"/monsubreport1.jasper" |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() |
Ok, c'est donc pour ca les .jasper
Comment fait-on dans ce cas pour précompiler le sous rapport ? (et donc avoir le .jasper qui correspond) (Je pose la question de suite car je ne pourrais regarder ca que demain, donc si d'ici là on peut me répondre c'est toujours mieux :p) Merci encore pour ces infos. |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : octobre 2006 Messages : 48 ![]() |
tu compile ton sous-rapport depuis iReport et il te genere les .jasper dans le dossier que tu lui indique (par defaut celui de iReport)
|
|
|
00
|
|
|
#10 | ||
|
Membre habitué
![]() |
Re bonjour,
Alors, j'ai effectué les changements, compilé le sous rapport. Ca semble fonctionner correctement si ce n'est que je n'ai aucune donnée dans mon sous rapport. Le main java rempli les données du sous rapport noramelement (et du rapport principal), mais là rien ne se passe dans le sous rapport, les zones dynamiques sont vides. Je me pose donc la question de savoir si le fait de compiler le sous rapport et de le donner comme ca n'empeche pas de le remplir avec des données ? Si oui, dans ce cas, comment faudrait il que je fasse pour que mon main java remplisse les données dans le sous rapport, le compile, puis s'occupe du rapport principal ? PS : pour l'instant dans mon main je ne fais que la chose suivante : Code :
(Beaucoup de questions je sais ^^ en tout merci pour tout) |
||
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : octobre 2006 Messages : 48 ![]() |
Les paramètres que tu passes dans ta HashTable sont ceux que tu veux dans ton subreport ? pour ma part j'utilise la même datasource pour mon mainreport et mon subreport et je n'ai pas de souci avec le fait de travailler avec des .jasper (d'ailleurs comme j'avais des prob de compatibilité de librairie mon mainreport est également directement un .jasper)
|
|
|
00
|
|
|
#12 | ||
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Citation:
Ensuite il faut savoir qu'un rapport ou un sous-rapport a toujours besoin d'avoir une datasource (même vide!) pour pouvoir s'afficher. Citation:
Enfin, comme le souligne phyzalis, quand tu auras tes rapports définitifs, il vaut mieux utiliser les .jasper directement, ça évite au moins l'étape inutile de la recompilation du .jrxml à chaque fois ! |
||
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() |
Edit : pas vu ton précédent message ^^
Donc je dois mal renseigner ma datasource si je te suis bien. Voici ce que j'ai fais : Dans mon rapport principal, j'ai créé un groupe nommé "sub1". J'ai tout laissé par défaut dans les options du groupe. Ensuite dans la section 'sub1Header' j'ai insérer un sous-rapport. Ce sous rapport pointe sur mon sous rapport. Dans les propriétés de ce sous rapport (double clic dessus), dans l'onglet 'Subrepot'->connection data source, j'ai mis l'option "utiliser la connexion courante", avec l'expression : $P{REPORT_CONNECTION} Dans l'onglet 'Subreport(other)', j'ai mis l'expression suivante : Code :
$P{REPORT_FOLDER} + System.getProperty("file.separator") + $P{REPORT_FILE} Pour ce qui est des paramètres, j'ai mis ceux du rapport maitre. A ce stade, j'ai une question : le rapport maitre à 3 Field (ceux qui doivent apparaitre dans le sous rapport). Ces trois fields sont également déclarés, et utilisés dans le sous rapport. Mais dois-je faire queque chose de spécial pour les passer du rapport maitre au sous rapport ? Voilà, sinon dans le sous rapport, seules les sections 'title', 'columnHeader' et 'detail' sont utilisées pour faire apparaitre un tableau 2D de mes données, avec trois colonne pour afficher les 3 fields différents. EDIT : voici la tête de mon rapport principal : principal Et mon sous rapport : sous rapport Une question pour toi lawmoon : Pour utiliser directement le .jasper dans le code java, quel est la ligne de code exact ? A la place de : Code :
JasperReport jasperReport = JasperCompileManager.compileReport("config/general.jrxml"); |
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() |
Voici ce que j'ai pour l'instant :
Les données ne s'affichent donc pas. Et voilà ce que j'avais avec tout dans le même rapport (et le résultat que je voudrais donc) : |
|
|
00
|
|
|
#15 |
|
Membre habitué
![]() |
J'ai affiché mon début de tableau dans la partie columnHeader du sous rapport pour voir les éventuelles valeur des Fields 'File', 'ReadInExtraction' et 'ProcessedInFormatting', et voilà ce que ca donne :
Ce qui montre bien que mes données ne sont pas passées de mon rapport principal à mon sous rapport. La question est pourquoi désormais ? (Je commence à désespérer de l'utilisation de ireport )
|
|
|
00
|
|
|
#16 | |
|
Membre du Club
![]() Inscription : octobre 2006 Messages : 48 ![]() |
Citation:
JasperReport jasperReport = (JasperReport)JRLoader.loadObject("config/general.jasper"); Par contre pour tes null ... Moi aussi au début j'ai vraiment haïe iReport ... |
|
|
|
00
|
|
|
#17 |
|
Membre habitué
![]() |
Fort bien merci pour ta réponse
Je vais continuer à chercher pourquoi ca ne me prends pas mes trucs. |
|
|
00
|
|
|
#18 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 57 ![]() |
Merci phyzalis
Pour le reste, ça me devient compliqué, j'ai pas Ireport sous la main, je ne me souviens pas de tout... Mais on va perséverer Tu travailles avec quelle version de jasper/IReport? Les données que tu veux affichées viennent d'où, xml, bdd ou bean? Déjà, j'ai maté rapidement ton master report et je mettrais le sous rapport dans la partie detail, il doit être soit dans détail, soit dans un group il me semble. Allez, courage |
|
|
00
|
|
|
#19 |
|
Membre habitué
![]() |
J'utilise une version 1.3.0 de ireport que je lance depuis éclipse.
Pour ce qui est du sous rapport, je me suis peut etre trompé de screen mais normalement il est déjà dans un group (sub1), mais plutot que d'être dans la partie 'detail' je l'ai mis dans le 'header' du groupe en question. Pourquoi ? Parce que si je le met dans le 'detail', le sous rapport est recopié plein de fois (autant de fois qu'il y a d'entrée dans le tableau du sous rapport normalement). Les données utilisées sont en fait un model de table. Donc en gros un bean on va dire, grosso modo. EDIT : j'ai mis le sous rapport dans la partie detail dans le rapport principal. J'ai noté un changement : avant mon rapport faisait 3 pages dont les deux dernieres pages étaient vides. Désormais il n'en fait plus qu'une (ce qui est mieux). Donc je vais garder le sous rapport dans la partie 'detail'. Reste toujours ces fichues données :s |
|
|
00
|
|
|
#20 |
|
Membre habitué
![]() |
Hem.. comment dire, mon problème est résolu.
Après avoir pesté sur ireport, je me suis apercu qu'en faisant des modifs sur mon java pour faire des tests auparavant... j'avais laissé une ligne de code qui mettais ma datasource à vide. C'est donc pour cette raison que rien ne s'affichait depuis le temps. Bref, on dit merci qui ? Merci à vous deux !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com