Jasper Report中计算一列列表的总计

发布于 2025-01-05 17:07:43 字数 1973 浏览 0 评论 0原文

在 JasperReport 中,我有一个包含每个客户的所有订单的列表。我想计算每个列表中所有商品的价格总和。

这是我的清单:

<jr:list>
    <datasetRun subDataset="listDataset">
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{products})]]>  </dataSourceExpression>
    </datasetRun>
    <jr:listContents height="20">
       <textField>
        <reportElement style="table_TD" x="100" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression class="java.lang.String"><![CDATA[$F{color}]]></textFieldExpression>
    </textField>
    <textField>
        <reportElement style="table_TD" x="0" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression class="java.lang.Integer"><![CDATA[$F{articleNo}]]></textFieldExpression>
    </textField>
    <textField>
        <reportElement style="table_TD" x="200" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression class="java.lang.Double"><![CDATA[$F{price}]]></textFieldExpression>
    </textField>
</jr:listContents>

我用来填充它的子数据集(我对整个报告使用 JRBeanCollectionDataSource):

<subDataset name="listDataset">
        <field name="color" class="java.lang.String"/>
        <field name="articleNo" class="java.lang.Integer"/>
        <field name="price" class="java.lang.Double"/>

    </subDataset>

在主报告中,我定义了一个变量,其中子数据集的字段“价格”作为表达式:

<variable name="totalPrice" class="java.lang.Double"calculation="Sum">
        <variableExpression><![CDATA[$F{price}]]></variableExpression>
    </variable>

但这始终为空。 如果我在列表的数据集中定义相同的变量,则可以正确计算总数,但我无法在主报告中使用它。

所以我的问题是:有什么方法可以通过列表来实现这一目标吗?或者我是否必须使用子报表(因为它可以返回一个值)?

In JasperReport, I have a list with all the orders of a customer, for every customer. I would like to calculate the total of all the items' prices in every list.

This is my list:

<jr:list>
    <datasetRun subDataset="listDataset">
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{products})]]>  </dataSourceExpression>
    </datasetRun>
    <jr:listContents height="20">
       <textField>
        <reportElement style="table_TD" x="100" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression class="java.lang.String"><![CDATA[$F{color}]]></textFieldExpression>
    </textField>
    <textField>
        <reportElement style="table_TD" x="0" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression class="java.lang.Integer"><![CDATA[$F{articleNo}]]></textFieldExpression>
    </textField>
    <textField>
        <reportElement style="table_TD" x="200" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression class="java.lang.Double"><![CDATA[$F{price}]]></textFieldExpression>
    </textField>
</jr:listContents>

The sub-dataset I use to fill it (I use a JRBeanCollectionDataSource for the whole report):

<subDataset name="listDataset">
        <field name="color" class="java.lang.String"/>
        <field name="articleNo" class="java.lang.Integer"/>
        <field name="price" class="java.lang.Double"/>

    </subDataset>

In the master report I defined a variable with the subdataset's field "price" as expression:

<variable name="totalPrice" class="java.lang.Double"calculation="Sum">
        <variableExpression><![CDATA[$F{price}]]></variableExpression>
    </variable>

But this is always null.
If I define the same variable in the list's dataset, the total is calculated correctly, but I cannot use it in the master report.

So my question is: Is there any way I can achieve this with a list? Or do I have to use a subreport (because it can return a value)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文