如何在 Jaspersoft iReport Designer 中对列中的所有值求和?
Posted
技术标签:
【中文标题】如何在 Jaspersoft iReport Designer 中对列中的所有值求和?【英文标题】:How to sum all values in a column in Jaspersoft iReport Designer? 【发布时间】:2012-11-13 02:00:29 【问题描述】:我在 Jaspersoft iReport Designer 中有以下类似报告,但无法弄清楚如何将垂直列“医生付款”中存在的所有值相加以获得总计“1601”?此列的长度是可变的(即行数根据数据库的大小及其更新频率而变化)。
有没有像$VCOLUMN_COUNT
这样的变量(实际上没有给出行数,这里是5),
哪个给出列中所有值的总和?如果没有,如何求和?
Doctor ID Doctor Payment
A1 123
B1 223
C2 234
D3 678
D1 343
Total 1601
【问题讨论】:
【参考方案1】:解决您的任务很容易。您应该创建并使用一个新变量来对 “医生付款” 列的值求和。
在你的情况下,变量可以这样声明:
<variable name="total" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$Fpayment]]></variableExpression>
</variable>
计算类型是求和;
重置类型是报告;
变量表达式是$Fpayment,其中$Fpayment是包含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[$Fpayment]]></variableExpression>
</variable>
<columnHeader>
<band splitType="Stretch">
<staticText>
<reportElement x="0" y="0" />
<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" />
<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 splitType="Stretch">
<textField>
<reportElement x="0" y="0" />
<box leftPadding="10"/>
<textElement/>
<textFieldExpression><![CDATA[$Fdoctor_id]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" />
<box leftPadding="10"/>
<textElement/>
<textFieldExpression><![CDATA[$Fpayment]]></textFieldExpression>
</textField>
</band>
</detail>
<summary>
<band >
<staticText>
<reportElement x="0" y="0" />
<box leftPadding="10"/>
<textElement>
<font isBold="true"/>
</textElement>
<text><![CDATA[Total]]></text>
</staticText>
<textField>
<reportElement x="100" y="0" />
<box leftPadding="10"/>
<textElement>
<font isBold="true" isItalic="true"/>
</textElement>
<textFieldExpression><![CDATA[$Vtotal]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
结果将是:
你可以在JasperReports Ultimate Guide找到很多信息。
【讨论】:
我有一些逻辑,但是在哪里放置新变量,我在开始时放置,即在声明了许多 name> 之后,但给出了找不到变量的错误:“total” @SagarNikam 你试过我的样品了吗? 是的,先生,您的示例可以正常工作,但是我切换到实时数据,使用 mysql 查询,它给出错误“未找到变量”,我在 结束后声明变量,应该我发送完整的文件 @SagarNikam 应该是个新问题 这是不正确的,因为您绑定的是字段而不是表列【参考方案2】:iReports 列的自定义字段 (总和、平均值等)
右键单击变量,然后单击创建变量
点击新变量
一个。注意右边的属性
相应地重命名变量
将值类名称更改为正确的数据类型
一个。您可以通过单击 3 个点进行搜索
选择正确的计算类型
更改表达式
一个。点击小图标
b.选择您要计算的列
c。点击完成
将初始值表达式设置为 0
将增量类型设置为无
将增量器工厂类名称留空设置重置类型(通常是报告)
将新的文本字段拖到舞台(通常在最后一页页脚或列页脚中)
双击新文本字段 清除“文本字段”表达式选择新变量
点击完成
将新文本放在合适的位置 【讨论】:
以上是关于如何在 Jaspersoft iReport Designer 中对列中的所有值求和?的主要内容,如果未能解决你的问题,请参考以下文章