如何显示群组的数量?

时间:2013-07-05 02:15:13

标签: jasper-reports

我创建了一个报告来生成具有部门列表的用户。我需要计算组,但不是组内的记录。

如何使用 JasperReports 进行操作?

例如: -

**No: 1**
Name      : User1
Department: Depart1
            Depart2
            Depart3

**No: 2**
Name      : User2
Department: Depart1
            Depart2
            Depart3

**No: 3**
Name      : User3
Department: Depart1
            Depart2
            Depart3

在上面的例子中,我需要计算3个用户的计数1,2,3。我不希望编号计算用户内的记录,这意味着我不需要计数来计算每个用户的部门数量。

目前,我为用户创建了一个组,并且自动创建了一个变量“User_COUNT”。我在我的细节乐队中使用它,但它似乎计算用户组中的每个记录。

2 个答案:

答案 0 :(得分:5)

您可以在论坛上使用该变量。

样本:

<?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="count_groups" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="7ca8f323-3cc7-4980-9222-77fb0f8f556b">
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="Name" class="java.lang.String"/>
    <field name="Department" class="java.lang.String"/>
    <variable name="cntUser" class="java.lang.Integer" incrementType="Group" incrementGroup="userGroup">
        <variableExpression><![CDATA[($V{userGroup_COUNT} == 1) ? $V{cntUser} + 1 : $V{cntUser}]]></variableExpression>
        <initialValueExpression><![CDATA[1]]></initialValueExpression>
    </variable>
    <group name="userGroup">
        <groupExpression><![CDATA[$F{Name}]]></groupExpression>
        <groupHeader>
            <band height="50">
                <textField>
                    <reportElement uuid="da974bc0-323d-4169-b584-eddb4ffcfa50" x="0" y="0" width="100" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA["No: " + $V{cntUser}]]></textFieldExpression>
                </textField>
                <staticText>
                    <reportElement uuid="57fcf335-26f2-44b4-89ad-11c1223c9539" x="0" y="30" width="100" height="20"/>
                    <textElement markup="none"/>
                    <text><![CDATA[Name         :]]></text>
                </staticText>
                <textField>
                    <reportElement uuid="16ccb7f0-eb39-403e-b7c4-1c6f35989f3d" x="100" y="30" width="100" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{Name}]]></textFieldExpression>
                </textField>
            </band>
        </groupHeader>
    </group>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="4647a9aa-229e-4f5d-8d08-aca4cda1df2f" x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{Department}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="bc4bd9ae-6c2f-43c2-823e-1501b76ef39a" x="0" y="0" width="100" height="20">
                    <printWhenExpression><![CDATA[$V{userGroup_COUNT} == 1]]></printWhenExpression>
                </reportElement>
                <textElement/>
                <text><![CDATA[Department:]]></text>
            </staticText>
        </band>
    </detail>
</jasperReport>

iReport 中的报告设计如下所示:

Report's design in iReport

对于此输入数据(我在样本中使用了 CSV 数据源):

Name,Department
User1,Depart1
User1,Depart2
User1,Depart3
User2,Depart2
User2,Depart3
User3,Depart1
User3,Depart4
User3,Depart4
User3,Depart4

结果将是(通过 iReport 中的预览):

The result in iReport

详细
在此示例中,我使用变量 cntUser 增量类型等于 (对于名为 userGroup 的组)。此变量仅针对每个中的第一条记录递增(请参阅 variableExpression )(检查 $V{userGroup_COUNT} == 1 的)。

注意:如果您使用分组 ,请不要忘记对数据进行排序

答案 1 :(得分:0)

<variable name="COUNT_GROUP" class="java.lang.Integer" incrementType="Group" incrementGroup="province" calculation="Count">
    <variableExpression><![CDATA[$V{COUNT_GROUP}]]></variableExpression>
    <initialValueExpression><![CDATA[1]]></initialValueExpression>
</variable>