Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper > iReport
iReport Forum d'entraide sur iReport
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/02/2007, 11h38   #1
kij
Membre habitué
 
Inscription : avril 2005
Messages : 360
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 360
Points : 120
Points : 120
Envoyer un message via MSN à kij
Par défaut [ireport & java]Sous rapport & multi source de données

Bonjour,

J'ai le problème suivant :
J'ai plusieur sous rapports inclus dans mon rapport principal, et chaque sous rapport à sa propre source de données.

Voici la facon dont je procède pour remplir un formulaire qui ne possède qu'un seul sous formulaire (au niveau du code java) :
Code :
1
2
3
4
 
JasperReport jasperReport = (JasperReport)JRLoader.loadObject("config/general.jasper"); 
 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource() );
Dans cet exemple la source de données est nulle. Ne pas en tenir compte.

Comment faire pour attribuer plusieurs sources de données au rapport général, de manière à ce que chacun des sous rapports puisse être rempli correctement avec la source de données qui lui est attribué.
J'ai pensé à passer en paramètre les différentes sources de données, mais je ne sais pas comment les utiliser par la suite dans ireport pour les attribuer aux sous rapports concernés.
Ou peut être y a-t-il une autre facon de faire ?

Quelqun pourrait-il me donner un coup de pouce à un novice tel que moi ?, ce serait bien sympa de sa part

Merci pour tout d'avance.
kij est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2007, 12h02   #2
kij
Membre habitué
 
Inscription : avril 2005
Messages : 360
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 360
Points : 120
Points : 120
Envoyer un message via MSN à kij
Ok, j'ai trouvé comment faire, je met la réponse pour les ceux qui se poseront la question plus tard :

Dans le programme java, il faut passer chaque source de données en paramètre, puis remplir le rapport principal avec une source de données nulle comme suit :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Map parameters = new HashMap();
// --- Passage en paramètre des sources de données
parameters.put("DATASOURCE1",new JRTableModelDataSource(new CustomTableModel()));
...
 
// --- Remplissage du rapport général :
JasperReport jasperReport = (JasperReport)JRLoader.loadObject("config/general.jasper");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// --- Export au format PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "test.pdf");
Dans ireport, dans le master report, il suffit de déclarer chacun des paramètres 'DATASOURCEX' passé en paramètre depuis le java, puis de les attribuer au niveau de chaque sous rapport de la facon suivante :
- double cliquez sur le sous rapport concerné pour afficher ses propriétés
- selectionez l'onglet 'subreport', sélectionnez l'option 'utiliser la source de donnée courante' pour 'connection/Data Source Expression' et mettre comme expression : $P{DATASOURCEX}

Cette opération est à faire pour chaque sous rapport du rapport général.

Compilez le rapport, faite tourner votre main java pour faire le pdf et normalement tout devrait etre bon.
kij est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 13h51   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 41
Points : 10
Points : 10
Par défaut Jasperspring et Spring

Bonjour,
y'a t'il quelqu'un de vous qui a quelque chose de pratique sur l'interation du framwork Jasper report et Spring .
ouatouch_abdeljalil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 11h01   #4
Invité de passage
 
Homme
tunisCity
Inscription : octobre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : tunisCity
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2011
Messages : 4
Points : 3
Points : 3
salut, je rencontre un probleme d'utilisation d'un subReport, j'utilise ireport4.1.1, tout fonctionne correctement sur ireport mais quand j'apelle mon master Report en java ca pose le probleme suivant :
Code :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
GRAVE: java.lang.ClassCastException: cannot assign instance of net.sf.jasperreports.engine.base.JRBaseTextField to field net.sf.jasperreports.engine.base.JRBaseParagraph.paragraphContainer of type net.sf.jasperreports.engine.JRParagraphContainer in instance of net.sf.jasperreports.engine.base.JRBaseParagraph
	at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2032)
	at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1212)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1953)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480)
	at net.sf.jasperreports.engine.base.JRBaseTextElement.readObject(JRBaseTextElement.java:1157)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at java.util.ArrayList.readObject(ArrayList.java:593)
	at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88)
	at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:257)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:308)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:257)
	at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275)
	at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:426)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1380)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:692)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:255)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:113)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:891)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:795)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
la methode d'appel est la suivante :
Code :
1
2
3
JasperDesign design = JRXmlLoader.load(new LegacyJasperInputStream(new FileInputStream(FacesContext.getCurrentInstance().getExternalContext().getRealPath("/WEB-INF/jasperConfigFiles/Jasper/master.jrxml"))) );
                JasperReport jasperReport=JasperCompileManager.compileReport(design);
                JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport,parameters,connection);
master.jrxml contient un subReport ca fonctionne parfaitement sur ireport mais pas coté java, quand j'enleve le sous raport ma classe java peut éffectuer cette opération.

j'ai vraiment besoin d'aide, merci d'avance.
aymenBann est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h01.


 
 
 
 
Partenaires

Hébergement Web