Условие выражения переменных Jasper iReport для char

У меня есть столбец в моей базе данных, который является столбцом ColorCode (имя поля $F{COLORCODE}), который имеет такие значения, как «B», «R» и «G», я хочу подсчитать их количество соответственно их цвету .

Итак, у меня есть переменные с именем countBlue, выражением переменных является $F{COLORCODE}=='B', и я поместил его в нижний колонтитул столбца, но в отчете было подсчитано все, включая R и G в этом столбце. Я сделал оператор сравнения неправильно?

также я настроил свой класс переменной countBlue на java.lang.Integer, вычисление как Count и тип сброса как Report

p/s извините за плохой английский


person Millie    schedule 17.01.2012    source источник


Ответы (1)


Вы можете использовать это выражение (Расчет: Количество; Тип сброса: Отчет; Тип приращения: Нет):

<variable name="countBlue" class="java.lang.Integer" calculation="Count">
    <variableExpression><![CDATA[$F{COLORCODE}.equals("B") ? "SomeNotNull" : null]]></variableExpression>
    <initialValueExpression><![CDATA[Integer.valueOf(0)]]></initialValueExpression>
</variable>

или это (Расчет: Ничего; Тип сброса: Отчет; Тип приращения: Нет):

<variable name="countBlue" class="java.lang.Integer">
    <variableExpression><![CDATA[$F{COLORCODE}.equals("B") ? $V{countBlue} + 1 : $V{countBlue}]]></variableExpression>
    <initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>

Вы можете прочитать о переменных здесь.

В Полное руководство по JasperReports говорится:

Счетчик вычислений
Переменная счетчика включает в счет ненулевые значения, возвращаемые после вычисления основного выражения переменной при каждой итерации в источнике данных. Переменные счетчика всегда должны быть числового типа. Однако они могут иметь нечисловые выражения в качестве основного выражения, поскольку движку не важен тип выражения, а учитываются только возвращаемые ненулевые значения, независимо от их типа.
Только выражение начального значения переменной должно быть числовым и совместимым с типом переменной, так как это значение будет напрямую присвоено переменной count при инициализации.

person Alex K    schedule 17.01.2012