我有以下情况:
我的数据库中的每一行都有一个GROUP LETTER(可以是用户选择的任何字母),如下所示:
ROW1 - A
ROW2 - A
ROW3 - F
ROW4 - F
ROW5 - K
因此,在上面的例子中,报告应该在COLUMN FOOTER中以COUNT显示DETAIL BAND和GROUPS LETTERS中的行,如下所示:
IN DETAIL:
ROW1
ROW2
ROW3
ROW4
ROW5
IN FOOTER BAND:
A - 2
F - 2
K - 1
我该怎么做?
答案 0 :(得分:2)
在footer
频段中,您可以包含一个子报告,这就是如何在子报告中完成分组。
<强> 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="subreport" pageWidth="555" pageHeight="842" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="20" bottomMargin="20" uuid="c1d9b4b7-6162-4b17-b871-3cf3b867d1ef">
<queryString>
<![CDATA[]]>
</queryString>
<field name="row" class="java.lang.String"/>
<field name="letter" class="java.lang.String"/>
<variable name="letter_cnt" class="java.lang.Integer" resetType="Group" resetGroup="testGroup" calculation="Count">
<variableExpression><![CDATA[$F{letter}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<group name="testGroup">
<groupExpression><![CDATA[$F{letter}]]></groupExpression>
<groupHeader>
<band height="20">
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="f626bfda-d44c-491e-915b-d4b078e6f5cf"/>
<textFieldExpression><![CDATA[$F{letter}]]></textFieldExpression>
</textField>
<textField evaluationTime="Group" evaluationGroup="testGroup">
<reportElement x="100" y="0" width="100" height="20" uuid="6181956b-527f-4dca-8144-1846b4b8ef99"/>
<textFieldExpression><![CDATA[$V{letter_cnt}]]></textFieldExpression>
</textField>
</band>
</groupHeader>
</group>
</jasperReport>
输出给出
但是,您不能直接使用主报表数据源,因为它已在主报表detail
中迭代,因此它是最后一次记录。
如果您使用连接来提供数据,我建议您直接查询以获得所需的结果(sum
和group by
)。
如果您使用JRDataSource作为JRBeanCollectionDataSource,则可以使用以下命令重新初始化数据源:
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{REPORT_DATA_SOURCE}.getData())
因此,这是传递给子报告的数据源