Как ввести разрыв страницы после предварительно определенного количества строк в компоненте jr:table?

Я использую Jasper Report версии 6.1 и хотел разрыв страницы после предварительно определенного количества строк в jr:table составная часть. Я также пытался сделать то же самое в версии 5, и она работает нормально, но в версии 6+ я не могу это сделать.

Поделитесь ссылками, по которым я перешел, если у кого-то есть другое решение, пожалуйста, дайте мне знать

http://community.jaspersoft.com/wiki/ireport-how-introduce-page-break-after-pre-defined-number-rows-table-component

http://community.jaspersoft.com/questions/845487/inserting-break-table-print-only-10-rows-page-jasper-reports-372

Вот что я попробовал:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.1.0.final using JasperReports Library version 6.1.0  -->
<!-- 2017-05-29T15:29:33 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="957c1fea-8994-4195-9d7a-2bbf0baf7180">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Max apex"/>
    <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <subDataset name="Dataset1" uuid="435d51b0-6d3e-442e-9a96-ae7412b12278">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Max apex"/>
        <queryString>
            <![CDATA[select * from dept]]>
        </queryString>
        <field name="DEPTNO" class="java.math.BigDecimal"/>
        <field name="DNAME" class="java.lang.String"/>
        <field name="LOC" class="java.lang.String"/>
        <group name="DEPTNO">
            <groupExpression><![CDATA[$F{DEPTNO}]]></groupExpression>
        </group>
        <group name="DNAME">
            <groupExpression><![CDATA[$F{DNAME}]]></groupExpression>
        </group>
        <group name="LOC">
            <groupExpression><![CDATA[$F{LOC}]]></groupExpression>
        </group>
    </subDataset>
    <queryString>
        <![CDATA[select * from dept]]>
    </queryString>
    <field name="DEPTNO" class="java.math.BigDecimal"/>
    <field name="DNAME" class="java.lang.String"/>
    <field name="LOC" class="java.lang.String"/>
    <group name="DEPTNO">
        <groupExpression><![CDATA[$F{DEPTNO}]]></groupExpression>
    </group>
    <group name="DNAME">
        <groupExpression><![CDATA[$F{DNAME}]]></groupExpression>
    </group>
    <group name="LOC">
        <groupExpression><![CDATA[$F{LOC}]]></groupExpression>
    </group>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="145" splitType="Stretch">
            <componentElement>
                <reportElement positionType="FixRelativeToBottom" x="10" y="0" width="500" height="110" uuid="b37c89ae-600a-4fb8-ac64-e142bfe22e13"/>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                    <datasetRun subDataset="Dataset1" uuid="8f84378b-9508-4763-8265-69e68c41febe">
                        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    </datasetRun>
                    <jr:column width="100" uuid="00a00921-f5fa-4352-924c-f0531c919f71">
                        <jr:columnHeader style="Table_CH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="100" height="30" uuid="d88580f8-05d2-4eb0-a098-00e877c58c39"/>
                                <text><![CDATA[DEPTNO]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="30" uuid="15fda94a-b686-4808-b55c-3e08a8e86187"/>
                                <textFieldExpression><![CDATA[$F{DEPTNO}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="140" uuid="72e58aec-00f1-4937-8600-b32a6010d4d6">
                        <jr:columnHeader style="Table_CH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="130" height="30" uuid="942c89ca-e914-4809-bb18-3b7065b413f7"/>
                                <text><![CDATA[DNAME]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="130" height="30" uuid="8b936e63-5f84-4fd7-b21c-8c08fb9550a5"/>
                                <textFieldExpression><![CDATA[$F{DNAME}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="140" uuid="f312cbac-4554-492c-928f-dd84b5a55d42">
                        <jr:columnHeader style="Table_CH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="120" height="30" uuid="ce385917-88aa-4e51-9cae-a7a142f78323"/>
                                <text><![CDATA[LOC]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="120" height="30" uuid="0e43f425-558c-4001-9c44-ca14798bcb75"/>
                                <textFieldExpression><![CDATA[$F{LOC}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

1 ответ

Решение

Решение использовать групповое выражение внутри набора данных прекрасно работает и в отчетах jasper v6+.

Пример (построен из кода и данных из этого ответа)

Добавление groupExpression к subDataset переходить на новую страницу каждые 2 записи ($V{REPORT_COUNT}-1)/2)

<subDataset name="tableDataset" uuid="7a53770f-0350-4a73-bfc1-48a5f6386594">
    <field name="User" class="java.lang.String"/>
    <field name="Rep" class="java.math.BigDecimal"/>
    <group name="pageBreakGroup" isStartNewPage="true">
        <groupExpression><![CDATA[(int)(($V{REPORT_COUNT}-1)/2)]]></groupExpression>
    </group>
</subDataset>

Разверните фрагмент кода для полного кода.

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="reputation" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a88bd694-4f90-41fc-84d0-002b90b2d73e">
 <property name="com.jaspersoft.studio.data.defaultdataadapter" value="CVS"/>
 <style name="table">
  <box>
   <pen lineWidth="1.0" lineColor="#000000"/>
  </box>
 </style>
 <style name="table_TH" mode="Opaque" backcolor="#F0F8FF">
  <box>
   <pen lineWidth="0.5" lineColor="#000000"/>
  </box>
 </style>
 <style name="table_CH" mode="Opaque" backcolor="#BFE1FF">
  <box>
   <pen lineWidth="0.5" lineColor="#000000"/>
  </box>
 </style>
 <style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
  <box>
   <pen lineWidth="0.5" lineColor="#000000"/>
  </box>
 </style>
 <subDataset name="tableDataset" uuid="7a53770f-0350-4a73-bfc1-48a5f6386594">
  <field name="User" class="java.lang.String"/>
  <field name="Rep" class="java.math.BigDecimal"/>
  <group name="pageBreakGroup" isStartNewPage="true">
   <groupExpression><![CDATA[(int)(($V{REPORT_COUNT}-1)/2d)]]></groupExpression>
  </group>
 </subDataset>
 <parameter name="displayRecordNumber" class="java.lang.Boolean">
  <defaultValueExpression><![CDATA[true]]></defaultValueExpression>
 </parameter>
 <queryString>
  <![CDATA[]]>
 </queryString>
 <title>
  <band height="50">
   <componentElement>
    <reportElement key="table" style="table" x="0" y="0" width="555" height="47" uuid="76ab08c6-e757-4785-a43d-b65ad4ab1dd5"/>
    <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
     <datasetRun subDataset="tableDataset" uuid="07e5f1c2-af7f-4373-b653-c127c47c9fa4">
      <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
     </datasetRun>
     <jr:column width="90" uuid="918270fe-25c8-4a9b-a872-91299cddbc31">
      <printWhenExpression><![CDATA[$P{displayRecordNumber}]]></printWhenExpression>
      <jr:columnHeader style="table_CH" height="30" rowSpan="1">
       <staticText>
        <reportElement x="0" y="0" width="90" height="30" uuid="5cd6da41-01d5-4f74-99c2-06784f891d1e"/>
        <textElement textAlignment="Center" verticalAlignment="Middle"/>
        <text><![CDATA[Record number]]></text>
       </staticText>
      </jr:columnHeader>
      <jr:detailCell style="table_TD" height="30" rowSpan="1">
       <textField>
        <reportElement x="0" y="0" width="90" height="30" uuid="5fe48359-0e7e-44b2-93ac-f55404189832"/>
        <textElement textAlignment="Center" verticalAlignment="Middle"/>
        <textFieldExpression><![CDATA[$V{REPORT_COUNT}]]></textFieldExpression>
       </textField>
      </jr:detailCell>
     </jr:column>
     <jr:column width="90" uuid="7979d8a2-4e3c-42a7-9ff9-86f8e0b164bc">
      <jr:columnHeader style="table_CH" height="30" rowSpan="1">
       <staticText>
        <reportElement x="0" y="0" width="90" height="30" uuid="61d5f1b6-7677-4511-a10c-1fb8a56a4b2a"/>
        <textElement textAlignment="Center" verticalAlignment="Middle"/>
        <text><![CDATA[Username]]></text>
       </staticText>
      </jr:columnHeader>
      <jr:detailCell style="table_TD" height="30" rowSpan="1">
       <textField>
        <reportElement x="0" y="0" width="90" height="30" uuid="a3cdb99d-3bf6-4c66-b50c-259b9aabfaef"/>
        <box leftPadding="3" rightPadding="3"/>
        <textElement verticalAlignment="Middle"/>
        <textFieldExpression><![CDATA[$F{User}]]></textFieldExpression>
       </textField>
      </jr:detailCell>
     </jr:column>
     <jr:column width="90" uuid="625e4e5e-5057-4eab-b4a9-c5b22844d25c">
      <jr:columnHeader style="table_CH" height="30" rowSpan="1">
       <staticText>
        <reportElement x="0" y="0" width="90" height="30" uuid="e1c07cb8-a44c-4a8d-8566-5c86d6671282"/>
        <textElement textAlignment="Center" verticalAlignment="Middle"/>
        <text><![CDATA[Reputation]]></text>
       </staticText>
      </jr:columnHeader>
      <jr:detailCell style="table_TD" height="30" rowSpan="1">
       <textField pattern="#,##0">
        <reportElement x="0" y="0" width="90" height="30" uuid="6be2d79f-be82-4c7b-afd9-0039fb8b3189"/>
        <box leftPadding="3" rightPadding="3"/>
        <textElement textAlignment="Right" verticalAlignment="Middle"/>
        <textFieldExpression><![CDATA[$F{Rep}]]></textFieldExpression>
       </textField>
      </jr:detailCell>
     </jr:column>
    </jr:table>
   </componentElement>
  </band>
 </title>
</jasperReport>

Результат в версии JasperStudio 6.2

Как вы можете видеть 3 страницы (2 записи на каждой, общее количество записей 5). Результат

Другие вопросы по тегам