Переменная счетчика JasperReports всегда увеличивается - PullRequest
7 голосов
/ 19 августа 2011

Это должен быть простой вопрос по JasperReports . Я пытаюсь сделать простой счетчик по всему отчету, который должен увеличиваться в зависимости от условия. Тем не менее, что бы я ни пытался, похоже, что переменная counter всегда увеличивается, независимо от выражения переменной. Свойства определения моей переменной приведены ниже:

Класс : Целое число
Расчет : Подсчет
Тип сброса : Отчет
Тип приращения : Нет
Выражение переменной : $F{on_target}.doubleValue() >= 0.0
Начальное значение : Integer.valueOf(0)

У меня всего 23 строки в наборе данных, и в соответствии с критериями счетчик должен в конечном итоге равняться 18. У меня есть переменная, выводимая в полосе Summary , с Время оценки до Сейчас . Однако, независимо от времени оценки и даже установки Выражение переменной в Boolean.valueOf(true == false), значение переменной всегда заканчивается как 23.

Какую простую маленькую вещь я забыл?

Ответы [ 3 ]

4 голосов
/ 19 августа 2011

Я думаю, что понял. Это не имеет никакого смысла, но ... (учтите, я впервые работаю с переменными Jasper, так что это было методом проб и ошибок).

Выражение переменной не совсем логическое, где переменная типа счетчика не увеличивается, если выражение ложно, как вы думаете. Переменная увеличивается, если в выражении вычислено значение any . Таким образом, для меня то, что закончило работать, ниже:

$F{on_target} >= 0 ? 1 : null

Обратите внимание на использование значения null, если выражение должно быть ложным.

Это имеет смутный, искаженный смысл. Но никоим образом не является интуитивным. Ну что ж, так и идет ...

или другими словами:

Когда вы используете функцию Вычисление: Счет переменной, определенной Джаспером, вы хотите, чтобы Выражение переменной было равно:

  • разрешение ненулевое значение приращение счетчик
  • разрешить до ноль значение, если вы не хотите увеличивать счетчик

Вот почему приведенный выше тест работает

2 голосов
/ 15 декабря 2011

А также установка выражения переменной в:

$F{on_target} >= 0 ? 1 : null

Попробуйте также установить initialValueExpression переменной в 0.

1 голос
/ 05 января 2016

Это сработало для меня:

$F{on_target} >= 0 ? 1 : BigDecimal.ZERO

Начальное значение переменной не требуется.

...