jasper 报告 table 显示上一页总计
jasper report table show previous page total
我正在使用 Jaspersoft® Studio 6.8.0。
我想要一个table可以显示上一页总计,以下面的table为例,假设这个
table 有 3 页:
grade
10
20
sub total 30
page 1
grade
previous page total 30
40
50
sub total 90
page 2
grade
previous page total 90
60
70
sub total 130
page 3
即从第 2 页到最后一页显示 previous page total
。
如何实现?谢谢!
一种方法是创建一个变量,其中包含一个 mutable 值,该值由显示上一页总计的文本表达式设置为副作用。
例如像这样:
<variable name="TotalVariable" class="java.lang.Integer" calculation="Sum" resetType="Page">
<variableExpression>$F{Column}</variableExpression>
</variable>
<variable name="PreviousTotalHolder" class="java.util.concurrent.atomic.AtomicInteger" calculation="System">
<initialValueExpression>new java.util.concurrent.atomic.AtomicInteger()</initialValueExpression>
</variable>
...display the previous total in the new page
<textField>
<reportElement .../>
<textFieldExpression>"Previous total " + $V{PreviousTotalHolder}.get()</textFieldExpression>
</textField>
...use a dummy property in the page footer to set the total into the holder object
<textField>
<reportElement x="0" y="0" width="90" height="15" uuid="a1ab288e-ae4b-4f12-83a5-e30486bb30d5">
<propertyExpression name="foo">Integer.toString($V{PreviousTotalHolder}.getAndSet($V{TotalVariable}))</propertyExpression>
</reportElement>
<textFieldExpression>"Total " + $V{TotalVariable}</textFieldExpression>
</textField>
根据您报告的确切设计(例如,取决于您是否有 table 组件或表格带报告),可能还有其他方法可以做到这一点。
我正在使用 Jaspersoft® Studio 6.8.0。
我想要一个table可以显示上一页总计,以下面的table为例,假设这个 table 有 3 页:
grade
10
20
sub total 30
page 1
grade
previous page total 30
40
50
sub total 90
page 2
grade
previous page total 90
60
70
sub total 130
page 3
即从第 2 页到最后一页显示 previous page total
。
如何实现?谢谢!
一种方法是创建一个变量,其中包含一个 mutable 值,该值由显示上一页总计的文本表达式设置为副作用。
例如像这样:
<variable name="TotalVariable" class="java.lang.Integer" calculation="Sum" resetType="Page">
<variableExpression>$F{Column}</variableExpression>
</variable>
<variable name="PreviousTotalHolder" class="java.util.concurrent.atomic.AtomicInteger" calculation="System">
<initialValueExpression>new java.util.concurrent.atomic.AtomicInteger()</initialValueExpression>
</variable>
...display the previous total in the new page
<textField>
<reportElement .../>
<textFieldExpression>"Previous total " + $V{PreviousTotalHolder}.get()</textFieldExpression>
</textField>
...use a dummy property in the page footer to set the total into the holder object
<textField>
<reportElement x="0" y="0" width="90" height="15" uuid="a1ab288e-ae4b-4f12-83a5-e30486bb30d5">
<propertyExpression name="foo">Integer.toString($V{PreviousTotalHolder}.getAndSet($V{TotalVariable}))</propertyExpression>
</reportElement>
<textFieldExpression>"Total " + $V{TotalVariable}</textFieldExpression>
</textField>
根据您报告的确切设计(例如,取决于您是否有 table 组件或表格带报告),可能还有其他方法可以做到这一点。