Jasper reports 如何在组内分组?
我有以下情况: 我的数据库中的每一行都有一个组字母(可以是用户选择的任何字母),如下所示:Jasper reports 如何在组内分组?,jasper-reports,Jasper Reports,我有以下情况: 我的数据库中的每一行都有一个组字母(可以是用户选择的任何字母),如下所示: ROW1 - A ROW2 - A ROW3 - F ROW4 - F ROW5 - K 因此,在上面的示例中,报告应显示列页脚中带有计数的详细栏位和字母组中的行,如下所示: IN DETAIL: ROW1 ROW2 ROW3 ROW4 ROW5 IN FOOTER BAND: A - 2
ROW1 - A
ROW2 - A
ROW3 - F
ROW4 - F
ROW5 - K
因此,在上面的示例中,报告应显示列页脚中带有计数的详细栏位和字母组中的行,如下所示:
IN DETAIL:
ROW1
ROW2
ROW3
ROW4
ROW5
IN FOOTER BAND:
A - 2
F - 2
K - 1
如何操作?在
页脚
区域中,您可以包含子报表这是如何在子报表中进行分组的
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>
因此,这是要传递给
页脚
区域中的子报表的数据源。您可以包含子报表。这是在子报表中进行分组的方式
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>
因此,这是要传递给子报表的数据源我正在使用连接,但我想使用$p{REPORT\u DATA\u SOURCE},这是可能的?@Scientist您需要在数据源上调用moveFirst(),这当然可以从jrxml hmm内部的java类中完成(它返回void)我需要对此进行一些测试。我正在使用连接,但我想使用$P{REPORT_DATA_SOURCE},这是可能的?@Scientist您需要在数据源上调用moveFirst(),这当然可以从jrxml hmm中的java类中完成(它返回void),我需要对此进行一些测试。