Как создать промежуточный итог по страницам?

Чего я хочу добиться, так это совокупного промежуточного итога внизу каждой страницы.

На первой странице будет отображаться сумма для этой страницы столбца (назовем этот столбец 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>
Другие вопросы по тегам