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),我需要对此进行一些测试。