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

iReport Discussion :

[iReport 1.1.0] Sous-rapports et saut de page


Sujet :

iReport

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 21
    Points : 28
    Points
    28
    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 ]

  2. #2
    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 Re: [iReport 1.1.0] Sous-rapports et saut de page
    Citation Envoyé par Oblivion
    - page 5 à x : rapport 4
    Plutot, non ?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

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

    merci

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    J'ai résolu mon problème.
    Si ça interesse quelqu'un, je peux essayer de faire un tuto rapide..

  5. #5
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    si tu es motivé, lance toi
    ça pourrait m'intéresser

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    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 : 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
    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 : 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
    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 !

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    Je confirme, ce pti bout exemple compile sans probléme sous la versions 1.2.1.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Points : 33
    Points
    33
    Par défaut
    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

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Points : 33
    Points
    33
    Par défaut
    Hello

    Bon bé en fait ça marche pas nickel ce que j'avais dit plus haut
    Code : 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
    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

  10. #10
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 128
    Points
    128
    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.

  11. #11
    Membre régulier Avatar de med_alpa
    Inscrit en
    Juillet 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 134
    Points : 87
    Points
    87
    Par défaut
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2009, 12h05
  2. Deux sous rapports et pied de page de groupe
    Par Monrake dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 12/05/2008, 09h27
  3. [CR XI] sous rapport et mise en page
    Par Coocky10 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 13/11/2007, 16h46
  4. [Etats] Sous-états et sauts de page
    Par timoth dans le forum IHM
    Réponses: 14
    Dernier message: 12/12/2006, 23h01
  5. [iReport] Décalage de sous rapport
    Par Hares dans le forum iReport
    Réponses: 1
    Dernier message: 09/06/2006, 15h59

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