Вычесть два поля из предыдущего поля в динамическом отчете - PullRequest
0 голосов
/ 06 июня 2018

в отчете jasper: я пытаюсь суммировать первое (Баланс) поле со вторым (Сумма) полем, затем вычесть результат из второго (Баланс) поля.Кто-нибудь может мне помочь?

Как на картинке:

like the image

как я могу получить предыдущее (Баланс) поле каждый раз

1 Ответ

0 голосов
/ 15 июня 2018

После некоторого исследования я нашел это: Получение значения предыдущей записи (для расчета в переменных и т. Д.)

Цитата из этой статьи:

Переменные увеличиваются в порядке их объявления, так что вы можете использовать этот порядок для отслеживания значения «предыдущих» записей.Вам нужны две переменные отчета: одна для хранения текущего значения, а другая для хранения предыдущего значения.Хитрость заключается в том, чтобы объявить переменную «предыдущее значение» перед переменной «текущее значение» и сделать для первой копии значение второй следующим образом:

<variable name="INITIAL" class="java.math.BigDecimal" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[$V{AAA}]]></variableExpression>
    <initialValueExpression><![CDATA[new BigDecimal(0)]]></initialValueExpression>
</variable>

<variable name="AAA" class="java.lang.Integer" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[$F{FieldA}]]></variableExpression>
</variable>

Конечно, есливы создаете вычисление для сравнения, тогда вам нужна третья переменная для вычисления разницы между ними:

<variable name="DELTA" class="java.lang.Integer" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[$V{AAA}-$V{INITIAL}]]></variableExpression>
</variable>

Из того, что я понимаю, вы хотите сделать следующее: что-то = balance2 - (баланс1 + сумма2).

Следующее должно работать для вас:

<variable name="PREVIOUS" class="java.math.BigDecimal" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[$V{CURRENT}]]></variableExpression>
    <initialValueExpression><![CDATA[new BigDecimal(0)]]></initialValueExpression>
</variable>

<variable name="CURRENT" class="java.lang.Integer" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[$F{BALANCE}]]></variableExpression>
</variable>

<variable name="SOMETHING" class="java.lang.Integer" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[$F{BALANCE}-($V{PREVIOUS}+$F{AMOUNT})]]></variableExpression>
</variable>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...