【问题标题】:How to sum all values in a column in Jaspersoft iReport Designer?如何在 Jaspersoft iReport Designer 中对列中的所有值求和?
【发布时间】:2012-11-13 02:00:29
【问题描述】:

我在 Jaspersoft iReport Designer 中有以下类似报告,但无法弄清楚如何将垂直列“医生付款”中存在的所有值相加以获得总计“1601”?此列的长度是可变的(即行数根据数据库的大小及其更新频率而变化)。

有没有像$V{COLUMN_COUNT}这样的变量(实际上没有给出行数,这里是5), 哪个给出列中所有值的总和?如果没有,如何求和

Doctor ID   Doctor Payment
 A1             123
 B1             223
 C2             234
 D3             678
 D1             343
Total          1601

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

    解决您的任务很容易。您应该创建并使用一个新变量来对 “医生付款” 列的值求和。

    在你的情况下,变量可以这样声明:

    <variable name="total" class="java.lang.Integer" calculation="Sum">
        <variableExpression><![CDATA[$F{payment}]]></variableExpression>
    </variable>
    
    • 计算类型求和
    • 重置类型报告
    • 变量表达式$F{payment},其中$F{payment}是包含sum(医生付款)。

    工作示例。

    CSV 数据源:

    医生ID,付款 A1,123 B1,223 C2,234 D3,678 D1,343

    模板:

    <?xml version="1.0" encoding="UTF-8"?>
    <jasperReport ...>
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="doctor_id" class="java.lang.String"/>
        <field name="payment" class="java.lang.Integer"/>
        <variable name="total" class="java.lang.Integer" calculation="Sum">
            <variableExpression><![CDATA[$F{payment}]]></variableExpression>
        </variable>
        <columnHeader>
            <band height="20" splitType="Stretch">
                <staticText>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement textAlignment="Center" verticalAlignment="Middle">
                        <font size="10" isBold="true" isItalic="true"/>
                    </textElement>
                    <text><![CDATA[Doctor ID]]></text>
                </staticText>
                <staticText>
                    <reportElement x="100" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement textAlignment="Center" verticalAlignment="Middle">
                        <font size="10" isBold="true" isItalic="true"/>
                    </textElement>
                    <text><![CDATA[Doctor Payment]]></text>
                </staticText>
            </band>
        </columnHeader>
        <detail>
            <band height="20" splitType="Stretch">
                <textField>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{doctor_id}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement x="100" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{payment}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
        <summary>
            <band height="20">
                <staticText>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement>
                        <font isBold="true"/>
                    </textElement>
                    <text><![CDATA[Total]]></text>
                </staticText>
                <textField>
                    <reportElement x="100" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement>
                        <font isBold="true" isItalic="true"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$V{total}]]></textFieldExpression>
                </textField>
            </band>
        </summary>
    </jasperReport>
    

    结果将是:


    你可以在JasperReports Ultimate Guide找到很多信息。

    【讨论】:

    • 我有一些逻辑,但是在哪里放置新变量,我在开始时放置,即在声明了许多 name> 之后,但给出了找不到变量的错误:“total”
    • @SagarNikam 你试过我的样品了吗?
    • 是的,先生,您的示例可以正常工作,但是我切换到实时数据,使用 mysql 查询,它给出错误“未找到变量”,我在 结束后声明变量,应该我发送完整的文件
    • @SagarNikam 应该是个新问题
    • 这是不正确的,因为您绑定的是字段而不是表列
    【解决方案2】:

    iReports 列的自定义字段 (总和、平均值等)

    1. 右键单击变量,然后单击创建变量

    2. 点击新变量

      一个。注意右边的属性

    3. 相应地重命名变量

    4. 将值类名称更改为正确的数据类型

      一个。您可以通过单击 3 个点进行搜索

    5. 选择正确的计算类型

    6. 更改表达式

      一个。点击小图标

      b.选择您要计算的列

      c。点击完成

    7. 将初始值表达式设置为 0

    8. 将增量类型设置为无

    9. 将增量器工厂类名称留空
    10. 设置重置类型(通常是报告)

    11. 将新的文本字段拖到舞台(通常在最后一页页脚或列页脚中)

    12. 双击新文本字段
    13. 清除“文本字段”表达式
    14. 选择新变量

    15. 点击完成

    16. 将新文本放在合适的位置 

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多