我在组页脚区域中设置了一个变量数据类型,它为报表中的每个组中的计数生成小计。效果很好。 我希望在我的报告的最后一页上生成一个总计,简单地总结小计值。这很难弄明白。 有什么建议?
答案 0 :(得分:6)
您可以使用两个不同的 resetType
变量 - 用于计算组中的总和(使用 resetType="Group" resetGroup="groupName" calculation="Sum"
属性)和计算整个报告的总和(使用 resetType="Report" calculation="Sum"
属性)。
示例(jrxml
文件):
<?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="grand_total_sample" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isIgnorePagination="true">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
<![CDATA[SELECT DOCUMENTID, POSITIONNO, PRODUCTID, QUANTITY FROM POSITIONS WHERE PRODUCTID < 10 AND POSITIONNO > 18 ORDER BY POSITIONNO]]>
</queryString>
<field name="DOCUMENTID" class="java.lang.Integer"/>
<field name="POSITIONNO" class="java.lang.Integer"/>
<field name="PRODUCTID" class="java.lang.Integer"/>
<field name="QUANTITY" class="java.lang.Integer"/>
<variable name="quantitySumInGroup" class="java.lang.Integer" resetType="Group" resetGroup="positionNoGroup" calculation="Sum">
<variableExpression><![CDATA[$F{QUANTITY}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<variable name="quantityTotalSum" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{QUANTITY}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<group name="positionNoGroup">
<groupExpression><![CDATA[$F{POSITIONNO}]]></groupExpression>
<groupHeader>
<band height="20">
<textField>
<reportElement x="0" y="0" width="400" height="20"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center">
<font isBold="true" isItalic="true" isUnderline="false"/>
</textElement>
<textFieldExpression><![CDATA["Position no: " + $F{POSITIONNO}]]></textFieldExpression>
</textField>
</band>
</groupHeader>
<groupFooter>
<band height="20">
<textField>
<reportElement x="0" y="0" width="400" height="20"/>
<textElement>
<font isBold="false" isItalic="true" isUnderline="false"/>
</textElement>
<textFieldExpression><![CDATA["Sum in group: " + $V{quantitySumInGroup}]]></textFieldExpression>
</textField>
</band>
</groupFooter>
</group>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{DOCUMENTID}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{PRODUCTID}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{QUANTITY}]]></textFieldExpression>
</textField>
</band>
</detail>
<lastPageFooter>
<band height="20">
<textField>
<reportElement x="0" y="0" width="400" height="20"/>
<textElement>
<font isBold="true" isItalic="true" isUnderline="false"/>
</textElement>
<textFieldExpression><![CDATA["Total sum: " + $V{quantityTotalSum}]]></textFieldExpression>
</textField>
</band>
</lastPageFooter>
</jasperReport>
结果将是:
答案 1 :(得分:-1)
只需创建一个新变量,并在变量表达式中使用变量名称
添加所有小计例如:
$V{subtotal1}+$V{subtotal2}+$V{subtotal3}
之后,将其放入“摘要”区域,并在报告属性中选中“新页面摘要”框。这样它就会出现在报告的最后一页。