计算Jasper报告中列表的总和

时间:2012-02-15 06:42:37

标签: java jasper-reports ireport

在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>

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

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

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

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

0 个答案:

没有答案