Как создать промежуточный итог по страницам?
Чего я хочу добиться, так это совокупного промежуточного итога внизу каждой страницы.
На первой странице будет отображаться сумма для этой страницы столбца (назовем этот столбец A). На второй странице отображается итог первой страницы и второй страницы столбца A и т. Д. До последней страницы, на которой отображается общий итог.
Может ли кто-нибудь дать мне способ достичь этого?
1 ответ
Для создания накопленной суммы по странице, столбцам, группам можно использовать evaluationTime
атрибут на textField
Настройка:
Создайте переменную, которая вычисляет значение (в вашем случае сумма на поле)
<variable name="mySumVar" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{myFieldToSum}]]></variableExpression>
</variable>
Важно не устанавливать
resetType
для переменной это будет соответственно сбрасывать значение, и вместо этого мы хотим накопительное значение
Теперь, когда отчет запущен (итерация полосы детализации), эта переменная будет иметь текущее значение (сумма повторяющихся полей).
Чтобы отобразить накопительное значение относительно страницы, группы и т. Д., Мы используем textField с относительной оценкой TimeTime (если в нижней части страницы, например, в columnFooter
если сверху можно использовать columnHeader
).
В вашем случае вы хотите накапливать на странице, поэтому вы устанавливаете evaluationTime="Page"
<textField evaluationTime="Page">
<reportElement x="0" y="0" width="100" height="30" uuid="6736d772-987d-4ad0-af4c-9d19e631eb07"/>
<textFieldExpression><![CDATA[$V{mySumVar}]]></textFieldExpression>
</textField>