2012-03-19 66 views
1

我已经创建了一个报告表。我已将其设置为每页显示5行数据。现在的问题是当表格不会出现少于5行的数据时。如何在jasper报告中显示少于5行的数据

我在每个部分都放了$V{REPORT_COUNT} %5 == 0

如何修改此公式,以便数据行即使少于5行也能显示?

+0

您是否尝试过使用'page break'元素? – 2012-03-19 10:34:39

+0

可能的重复:[如何限制每个页面上的行数?](http://stackoverflow.com/questions/9617082/how-do-i-limit-the-number-of-rows-on-each -page) – 2012-08-02 14:45:26

回答

4

对不起,我不能早些回复,因为我会在忙碌的一天工作。看完你的报告设计之后,我发现'Page Break'功能并不是你真正需要的。我只是将您拥有的群组的组表达式更改为:$ F {PARENT_NAME} + (($ V {REPORT_COUNT}%5 == 0)?“1”:“2”)并设置'开始新页面“参数为true。另外,我更改了图表数据。检查下面的jrxml数据:

<?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="ChartLineBless" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <parameter name="P_YEAR" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[]]></defaultValueExpression> 
    </parameter> 
    <parameter name="P_AGENCY_CODE" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[]]></defaultValueExpression> 
    </parameter> 
    <parameter name="P_SECTOR_LOOK_CODE" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[]]></defaultValueExpression> 
    </parameter> 
    <field name="PARENT_NAME" class="java.lang.String"/> 
    <field name="PARENT_NAME_SECTOR" class="java.lang.String"/> 
    <field name="AGENCY_PARENT_CODE" class="java.lang.String"/> 
    <field name="AGENCY_CODE" class="java.lang.String"/> 
    <field name="AGENCY_NAME" class="java.lang.String"/> 
    <field name="YEAR" class="java.lang.String"/> 
    <field name="SECTOR_ID" class="java.lang.String"/> 
    <field name="SECTOR_NAME" class="java.lang.String"/> 
    <field name="DYEAR1" class="java.math.BigDecimal"/> 
    <field name="DYEAR2" class="java.math.BigDecimal"/> 
    <field name="DYEAR3" class="java.math.BigDecimal"/> 
    <field name="DYEAR4" class="java.math.BigDecimal"/> 
    <field name="DYEAR5" class="java.lang.String"/> 
    <field name="YR1" class="java.math.BigDecimal"/> 
    <field name="YR2" class="java.math.BigDecimal"/> 
    <field name="YR3" class="java.math.BigDecimal"/> 
    <field name="YR4" class="java.math.BigDecimal"/> 
    <field name="YR5" class="java.math.BigDecimal"/> 
    <variable name="YR1_1" class="java.math.BigDecimal" resetType="Group" resetGroup="agensi" calculation="Sum"> 
     <variableExpression><![CDATA[$F{YR1}]]></variableExpression> 
    </variable> 
    <variable name="YR2_1" class="java.math.BigDecimal" resetType="Group" resetGroup="agensi" calculation="Sum"> 
     <variableExpression><![CDATA[$F{YR2}]]></variableExpression> 
    </variable> 
    <variable name="YR3_1" class="java.math.BigDecimal" resetType="Group" resetGroup="agensi" calculation="Sum"> 
     <variableExpression><![CDATA[$F{YR3}]]></variableExpression> 
    </variable> 
    <variable name="YR4_1" class="java.math.BigDecimal" resetType="Group" resetGroup="agensi" calculation="Sum"> 
     <variableExpression><![CDATA[$F{YR4}]]></variableExpression> 
    </variable> 
    <variable name="YR5_1" class="java.math.BigDecimal" resetType="Group" resetGroup="agensi" calculation="Sum"> 
     <variableExpression><![CDATA[$F{YR5}]]></variableExpression> 
    </variable> 
    <group name="agensi" isStartNewPage="true" minHeightToStartNewPage="550"> 
     <groupExpression><![CDATA[$F{PARENT_NAME} + 
(($V{REPORT_COUNT} % 5 == 0) ? "1" : "2")]]></groupExpression> 
     <groupHeader> 
      <band height="98"> 
       <textField> 
        <reportElement x="332" y="84" width="85" height="14"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$F{DYEAR2}]]></textFieldExpression> 
       </textField> 
       <textField> 
        <reportElement x="247" y="84" width="85" height="14"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$F{DYEAR1}]]></textFieldExpression> 
       </textField> 
       <staticText> 
        <reportElement x="43" y="71" width="204" height="27"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center" verticalAlignment="Middle"/> 
        <text><![CDATA[Agency Name]]></text> 
       </staticText> 
       <staticText> 
        <reportElement x="10" y="71" width="33" height="27"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center" verticalAlignment="Middle"/> 
        <text><![CDATA[No.]]></text> 
       </staticText> 
       <textField> 
        <reportElement x="417" y="84" width="85" height="14"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$F{DYEAR3}]]></textFieldExpression> 
       </textField> 
       <staticText> 
        <reportElement x="247" y="71" width="425" height="13"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <text><![CDATA[Year]]></text> 
       </staticText> 
       <staticText> 
        <reportElement x="672" y="71" width="85" height="27"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center" verticalAlignment="Middle"/> 
        <text><![CDATA[Total]]></text> 
       </staticText> 
       <textField> 
        <reportElement x="587" y="84" width="85" height="14"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$F{DYEAR5}]]></textFieldExpression> 
       </textField> 
       <textField> 
        <reportElement x="502" y="84" width="85" height="14"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$F{DYEAR4}]]></textFieldExpression> 
       </textField> 
       <staticText> 
        <reportElement x="0" y="22" width="802" height="26"/> 
        <textElement textAlignment="Center" verticalAlignment="Middle"/> 
        <text><![CDATA[5 YEAR STATISTICS ON APPLICATION RECEIVED (BY ALL AGENCIES)]]></text> 
       </staticText> 
      </band> 
     </groupHeader> 
     <groupFooter> 
      <band height="208"> 
       <printWhenExpression><![CDATA[$V{REPORT_COUNT} % 5 == 0]]></printWhenExpression> 
       <textField> 
        <reportElement x="672" y="0" width="85" height="20"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[new Integer($V{YR1_1}.intValue() + $V{YR2_1}.intValue()+ 
$V{YR3_1}.intValue()+ $V{YR4_1}.intValue())+ $V{YR5_1}.intValue()]]></textFieldExpression> 
       </textField> 
       <staticText> 
        <reportElement x="10" y="0" width="237" height="20"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <text><![CDATA[                 Total]]></text> 
       </staticText> 
       <textField> 
        <reportElement x="587" y="0" width="85" height="20"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$V{YR5_1}]]></textFieldExpression> 
       </textField> 
       <textField> 
        <reportElement x="502" y="0" width="85" height="20"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$V{YR4_1}]]></textFieldExpression> 
       </textField> 
       <textField> 
        <reportElement x="417" y="0" width="85" height="20"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$V{YR3_1}]]></textFieldExpression> 
       </textField> 
       <textField> 
        <reportElement x="332" y="0" width="85" height="20"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$V{YR2_1}]]></textFieldExpression> 
       </textField> 
       <textField> 
        <reportElement x="247" y="0" width="85" height="20"/> 
        <box> 
         <pen lineWidth="0.5"/> 
         <topPen lineWidth="0.5"/> 
         <leftPen lineWidth="0.5"/> 
         <bottomPen lineWidth="0.5"/> 
         <rightPen lineWidth="0.5"/> 
        </box> 
        <textElement textAlignment="Center"/> 
        <textFieldExpression><![CDATA[$V{YR1_1}]]></textFieldExpression> 
       </textField> 
       <lineChart> 
        <chart> 
         <reportElement x="144" y="34" width="549" height="173"/> 
         <chartTitle/> 
         <chartSubtitle/> 
         <chartLegend/> 
        </chart> 
        <categoryDataset> 
         <dataset resetType="Page"/> 
         <categorySeries> 
          <seriesExpression><![CDATA["YEAR1"]]></seriesExpression> 
          <categoryExpression><![CDATA[$F{DYEAR1}]]></categoryExpression> 
          <valueExpression><![CDATA[$V{YR1_1}]]></valueExpression> 
         </categorySeries> 
         <categorySeries> 
          <seriesExpression><![CDATA["Year2"]]></seriesExpression> 
          <categoryExpression><![CDATA[$F{DYEAR2}]]></categoryExpression> 
          <valueExpression><![CDATA[$V{YR2_1}]]></valueExpression> 
         </categorySeries> 
         <categorySeries> 
          <seriesExpression><![CDATA["YEAR3"]]></seriesExpression> 
          <categoryExpression><![CDATA[$F{DYEAR3}]]></categoryExpression> 
          <valueExpression><![CDATA[$V{YR3_1}]]></valueExpression> 
         </categorySeries> 
         <categorySeries> 
          <seriesExpression><![CDATA["YEAR4"]]></seriesExpression> 
          <categoryExpression><![CDATA[$F{DYEAR4}]]></categoryExpression> 
          <valueExpression><![CDATA[$V{YR4_1}]]></valueExpression> 
         </categorySeries> 
         <categorySeries> 
          <seriesExpression><![CDATA["YEAR5"]]></seriesExpression> 
          <categoryExpression><![CDATA[$F{DYEAR5}]]></categoryExpression> 
          <valueExpression><![CDATA[$V{YR5_1}]]></valueExpression> 
         </categorySeries> 
        </categoryDataset> 
        <linePlot> 
         <plot/> 
        </linePlot> 
       </lineChart> 
       <break> 
        <reportElement x="0" y="206" width="802" height="1"/> 
       </break> 
      </band> 
     </groupFooter> 
    </group> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <detail> 
     <band height="20" splitType="Stretch"> 
      <textField> 
       <reportElement x="43" y="0" width="204" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{PARENT_NAME_SECTOR}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="247" y="0" width="85" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression><![CDATA[$F{YR1}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="332" y="0" width="85" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression><![CDATA[$F{YR2}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="417" y="0" width="85" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression><![CDATA[$F{YR3}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="502" y="0" width="85" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression><![CDATA[$F{YR4}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="587" y="0" width="85" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression><![CDATA[$F{YR5}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="10" y="0" width="33" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression><![CDATA[$V{COLUMN_COUNT}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="672" y="0" width="85" height="20"/> 
       <box> 
        <pen lineWidth="0.5"/> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression><![CDATA[new Integer($F{YR1}.intValue() + $F{YR2}.intValue()+ $F{YR3}.intValue()+ $F{YR4}.intValue())+ $F{YR5}.intValue()]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
    <columnFooter> 
     <band height="23"> 
      <textField evaluationTime="Report"> 
       <reportElement x="445" y="3" width="40" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="365" y="3" width="80" height="20"/> 
       <textElement textAlignment="Right"/> 
       <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression> 
      </textField> 
     </band> 
    </columnFooter> 
</jasperReport> 
+0

我试过了。您提供的jxml文件。首先,从桌子上爆出的那一排。因为您将startpagenew = true,因此每个页面只显示一行。当我取消选中时,数据显示5行每页。但是,总行和图表不会显示在最后一页上。其次,我有变更组表达式是$ F {PARENT_NAME_SECTOR} +(($ V {REPORT_COUNT}%5 == 0)?“1”:“2”)。我尝试更新这个文件,并希望你能修复它,并给我反馈 – 2012-03-22 02:31:22

+0

我不知道你的要求,但给了这个想法如何实现。你必须做其余的! – bchetty 2012-03-22 08:05:00

+0

这样的情况。我想在一个表格中显示5行每页。每行获得数字1-5。我尝试你的榜样。是的,这是成功的。但问题是最后一页的数据不显示。我不知道为什么。你能看到我的照片吗?我也在上面更新我的代码。你可以看到那个代码。这里是我的照片。首页和最后一页 [1]:http://i.stack.imgur.com/GJamQ.jpg [2]:http://i.stack.imgur.com/xrfUR.jpg – 2012-03-22 12:48:12

2

你可以做的是创建一个'minHeightToStartNewPage'属性设置为类似于700/800(取决于你的报告设计)的'肖像'和500/550(取决于你的报告设计)景观“设置。然后,您可以将此虚拟组的printWhenExpression值设置为'$ V {REPORT_COUNT}%5 == 0'。

注意:如果minHeightToStartNewPage的值设置不正确(超过页面长度),则可能会遇到无限循环问题。

+0

虚拟组?我从来没有在我的报告中看到这个功能。我怎么能得到它。你能告诉我吗?请以我为例。 – 2012-03-20 00:59:42

+0

如果你能为我提供jrxml文件,我可以告诉你如何做到这一点。 – bchetty 2012-03-20 08:53:04

+0

我已经把我的code.Hope你可以立即回复。谢谢。 – 2012-03-21 14:38:28