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 28/03/2006, 14h12   #1
Futur Membre du Club
 
Inscription : mars 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 21
Points : 17
Points : 17
Par défaut [iReport 1.1.0] Sous-rapports et saut de page

Bonjour tout le monde,

Je découvre iReport et Jasper Reports.

Pour le boulot, je dois développer un rapport qui contient environ 10 sous-rapports avec chacun sa propre requête.

Chaque sous-rapport marche bien tout seul, mais j'ai des problèmes pour la mise en page du rapport maître. En effet, j'aimerais que chaque sous-rapport commence sur une nouvelle page.

J'ai essayé la technique des "dummy" groupes, mais meme avec les options pour commencer une nouvelle page, il persiste à me mettre tous les sous-rapports les uns à la suite des autres sans sauter de page.

Sans compter que ma page de garde est toute écrasée.

Idéalement, j'aimerais avoir quelque chose comme ça :

- page 1 : rapport 1
- page 2 : rapport 2
- page 3 à 4 : rapport 3
- page 5 à x : rapport 4
- page x + 1 à y : rapport 5

Est-ce que quelqu'un a déjà fait quelque chose dans ce genre ?

[Erreur de page corrigée ]
Oblivion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2006, 15h08   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
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 299
Points : 8 650
Points : 8 650
Par défaut Re: [iReport 1.1.0] Sous-rapports et saut de page

Citation:
Envoyé par Oblivion
- page 5 à x : rapport 4
Plutot, non ?
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 10h35   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 57
Points : 57
Bonjour,

Je souhaite faire exactement ce que Oblivion souhaitait faire.
Avez vous la solution?

merci
Lawmoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 15h29   #4
Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 57
Points : 57
J'ai résolu mon problème.
Si ça interesse quelqu'un, je peux essayer de faire un tuto rapide..
Lawmoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 11h14   #5
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 114
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 114
Points : 30
Points : 30
si tu es motivé, lance toi
ça pourrait m'intéresser
karibouxe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 18h07   #6
Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 57
Points : 57
Alors voilà ce que j'ai mis en place pour obtenir un sous rapport différent par page. J'ai construit un exemple simplifié, libre à vous d'adapter et d'améliorer au besoin évidement
Je travaille avec ireport et jasperreport 1.2.5.
J'ai testé vite fait, ça doit marcher avec des versions superieurs 1.2.1.

L'exemple se compose d'un rapport maître "master.jrxml", et de 2 sous rapports "sub1.jrxml" et "sub2.jrxml". Les deux sous rapports vont s'afficher sur 2 pages différentes.

Code de la page maitre "master.jrxml":
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
		 name="master"
		 columnCount="1"
		 printOrder="Vertical"
		 orientation="Portrait"
		 pageWidth="595"
		 pageHeight="842"
		 columnWidth="535"
		 columnSpacing="0"
		 leftMargin="30"
		 rightMargin="30"
		 topMargin="20"
		 bottomMargin="20"
		 whenNoDataType="NoPages"
		 isTitleNewPage="false"
		 isSummaryNewPage="false">
	<property name="ireport.scriptlethandling" value="0" />
	<property name="ireport.encoding" value="UTF-8" />
	<import value="java.util.*" />
	<import value="net.sf.jasperreports.engine.*" />
	<import value="net.sf.jasperreports.engine.data.*" />
 
	<parameter name="SUBREPORT_DIR" isForPrompting="false" class="java.lang.String"/>
 
 
		<group  name="sub1" isStartNewPage="true" >
			<groupExpression><![CDATA[null]]></groupExpression>
			<groupHeader>
			<band height="20"  isSplitAllowed="false" >
				<subreport  isUsingCache="true">
					<reportElement
						x="0"
						y="0"
						width="300"
						height="20"
						key="subreport-1"/>
					<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
					<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
					<subreportExpression  class="java.lang.String"><![CDATA["sub1.jasper"]]></subreportExpression>
				</subreport>
			</band>
			</groupHeader>
			<groupFooter>
			<band height="0"  isSplitAllowed="false" >
			</band>
			</groupFooter>
		</group>
		<group  name="sub2" isStartNewPage="true" >
			<groupExpression><![CDATA[null]]></groupExpression>
			<groupHeader>
			<band height="20"  isSplitAllowed="false" >
				<subreport  isUsingCache="true">
					<reportElement
						x="0"
						y="0"
						width="300"
						height="20"
						key="subreport-2"/>
					<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
					<subreportExpression  class="java.lang.String"><![CDATA["sub2.jasper"]]></subreportExpression>
				</subreport>
			</band>
			</groupHeader>
			<groupFooter>
			<band height="0"  isSplitAllowed="false" >
			</band>
			</groupFooter>
		</group>
		<background>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</background>
		<title>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</title>
		<pageHeader>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</pageHeader>
		<columnHeader>
			<band height="1"  isSplitAllowed="false" >
			</band>
		</columnHeader>
		<detail>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</detail>
		<columnFooter>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</columnFooter>
		<pageFooter>
			<band height="15"  isSplitAllowed="false" >
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						mode="Transparent"
						x="340"
						y="0"
						width="130"
						height="15"
						forecolor="#000000"
						backcolor="#FFFFFF"
						key="textField"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<textElement textAlignment="Right">
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.String"><![CDATA[$V{PAGE_NUMBER} + "/ "]]></textFieldExpression>
				</textField>
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Report" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						mode="Transparent"
						x="470"
						y="0"
						width="65"
						height="15"
						forecolor="#000000"
						backcolor="#FFFFFF"
						key="textField"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.String"><![CDATA["" + $V{PAGE_NUMBER} + ""]]></textFieldExpression>
				</textField>
			</band>
		</pageFooter>
		<summary>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</summary>
</jasperReport>
Code du sous rapport "sub1.jrxml":
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
		 name="sub1"
		 columnCount="1"
		 printOrder="Vertical"
		 orientation="Portrait"
		 pageWidth="535"
		 pageHeight="842"
		 columnWidth="535"
		 columnSpacing="0"
		 leftMargin="0"
		 rightMargin="0"
		 topMargin="0"
		 bottomMargin="0"
		 whenNoDataType="NoPages"
		 isTitleNewPage="false"
		 isSummaryNewPage="false">
	<property name="ireport.scriptlethandling" value="0" />
	<property name="ireport.encoding" value="UTF-8" />
	<import value="java.util.*" />
	<import value="net.sf.jasperreports.engine.*" />
	<import value="net.sf.jasperreports.engine.data.*" />
 
 
		<background>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</background>
		<title>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</title>
		<pageHeader>
			<band height="50"  isSplitAllowed="false" >
				<staticText>
					<reportElement
						x="100"
						y="10"
						width="140"
						height="30"
						key="staticText-1"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<textElement>
						<font/>
					</textElement>
				<text><![CDATA[sub1]]></text>
				</staticText>
			</band>
		</pageHeader>
		<columnHeader>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</columnHeader>
		<detail>
			<band height="300"  isSplitAllowed="true" >
				<staticText>
					<reportElement
						x="100"
						y="10"
						width="250"
						height="80"
						key="staticText-2"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<textElement>
						<font/>
					</textElement>
				<text><![CDATA[detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1detail1]]></text>
				</staticText>
			</band>
		</detail>
		<columnFooter>
			<band height="30"  isSplitAllowed="false" >
			</band>
		</columnFooter>
		<pageFooter>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</pageFooter>
		<summary>
			<band height="0"  isSplitAllowed="false" >
			</band>
		</summary>
</jasperReport>
Pour le deuxieme sous rapport, faite un copier-coller de sub1.jrxml et renommer en "sub2.jrxml" (en modifiant le contenu juste pour marquer la différence entre les 2 sous rapports).

Attention, l'exemple est configuré avec les pages compilés dans le même repertoire. A vous de modifier les chemins au besoin...


Commentaires


- Il est impératif d'enlever les margin des sous rapports (Edition>remove margins),

- Il faut cocher "start on a new page" dans les properties des groups;

- Il est trés IMPORTANT de décocher l'option "Split Allowed" des groups contenant les sous rapport dans le "Band properties" du rapport maître. Si l'option reste cochée, les sous rapports se mettront l'un en dessous de l'autre.

- Le principal problème que j'ai rencontré venait de la taille en hauteur des rapports. En effet, il faut que la taille additionée des bands du rapport maître et des sous rapports ne dépass pas la taille maximale d'une page normale (aux alentours des 840px il me semble).
Note : la taille des groups contenant les sous rapports, n'importe pas (enfin il me semble lol).
Par exemple, vous pouvez tester en fixant la taille de la Band "Detail" du sub2 à 760 par exemple. Recompilez et essayer de générer à nouveau le rapport maître... La taille des bands de sub2, plus la taille du footer (contenant l'indication de pagination) du master, dépasse les 840px... D'où le moteur qui peine à générer le rapport (Chez moi ça plante carrement).

- J'ai également testé quand un sous rapport fait plus d'une page dynamiquement... Ca marche... "presque" En effet, j'ai bien mes pages générées mais j'avais également une page vide intruse qui s'intercale. Un peu genant par rapport à la pagination. Je ne me suis pas attardé sur le problème, je ne devrais pas rencontrer le cas dans mon projet actuel. Mais si quelqu'un al e soucis et qu'il a une solution, qu'il n'hésite pas à la partager...

Voilà, j'espere que c'est assez clair, n'hésitez pas si vous avez des questions ou suggestions, on est là pour s'entraider !
Lawmoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2006, 15h57   #7
Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 57
Points : 57
Je confirme, ce pti bout exemple compile sans probléme sous la versions 1.2.1.
Lawmoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2010, 09h35   #8
Futur Membre du Club
 
Arnaud
Inscription : juin 2008
Messages : 35
Détails du profil
Informations personnelles :
Nom : Arnaud
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : juin 2008
Messages : 35
Points : 18
Points : 18
Bonjour

Je sais que c'est un vieux post mais c'est le SEUL post qui correspond a ce que je cherchais : faire plusieurs pages sur iReport.
Merci Lawmoon

Les commentaires de Lawmoon sont très intéressants et importants, car j'ai rencontré des problèmes similaires !

Je confirme que ce bout de code fonctionne sur iReport 3.7.1.

Je marque ici quelques mots clés pour faciliter les recherches dans le forum : page break multi-pages multipages plusieurs pages saut de page group
Potaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2010, 09h51   #9
Futur Membre du Club
 
Arnaud
Inscription : juin 2008
Messages : 35
Détails du profil
Informations personnelles :
Nom : Arnaud
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : juin 2008
Messages : 35
Points : 18
Points : 18
Hello

Bon bé en fait ça marche pas nickel ce que j'avais dit plus haut
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
<group name="sub3" isStartNewPage="true">
    <groupExpression><![CDATA[null]]></groupExpression>
    <groupHeader>
        <band height="44" splitType="Prevent">
            <subreport isUsingCache="false">
                <reportElement key="subreport-3" x="0" y="0" width="555" height="44"/>
                <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
                <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "Page3.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </groupHeader>
    <groupFooter>
        <band/>
    </groupFooter>
</group>
<group name="sub4" isStartNewPage="true">
    <groupExpression><![CDATA[null]]></groupExpression>
    <groupHeader>
        <band height="44" splitType="Prevent">
            <subreport isUsingCache="false">
                <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
                <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "Page4.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </groupHeader>
    <groupFooter>
        <band/>
    </groupFooter>
</group>
Le problème : si ma Page4 est très courte (quelques lignes), elle va sous ma Page3 au lieu d'aller sur une nouvelle page.

Pourquoi ma Page4 ne va pas toujours sur une nouvelle page ? Qu'est-ce qu'il manque ?
J'ai bien isStartNewPage="true" et splitType="Prevent"... il doit manquer autre chose...

Merci,
Potaw
Potaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 15h15   #10
Membre habitué
 
Inscription : juin 2005
Messages : 109
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juin 2005
Messages : 109
Points : 105
Points : 105
Par défaut superposition de rapport : Position Type = Float

Salut,

En version 3.7 (ou 3.7.1 je sais plus) :
J'utilise un gros rapport avec des tas de sous rapport dans la band Summary. Les sous rapports ont des tailles non fixes (1 ou plusieurs pages suivant les paramètres). Après un certain nombre de tests, j'ai mis pour tous les éléments de mon summary principal (sous rapport compris) l'option Position Type = Float.

Et les sous rapport de ne se superpose plus.

Je mets un saut de ligne après chaque sous rapport pour faire plus joli mais c'est pas obligatoire.

Lo.
lolo007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 20h38   #11
Membre du Club
 
Avatar de med_alpa
 
Inscription : juillet 2005
Messages : 134
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 134
Points : 49
Points : 49
Bonjour,

J'ai presque le même problème.

J'ai un subreport qui pourrait contenir plusieurs pages...

Ce sub-report est mis dans la section détail du report master.

Tout fonctionne bien sauf que le logo du sub report parfois s'affiche à la fin de la page du master.

Comment obliger l'affichage du sub report dans une nouvelle page.
J'ai essayé le dummy group.
__________________
"Je n'ai pas de talents particuliers. Je suis juste passionnément curieux." Albert Einstein
med_alpa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h47.


 
 
 
 
Partenaires

Hébergement Web