Ситуация:
Требовалось изменить параметр группировки в отчете, где изменение выражения группы в заголовке было недостаточным (из-за сложного запроса / данных, смоделированных в БД). Итак, я создал новую версию существующего отчета. Разница в том, что в предыдущей версии был SubReport, а в новой версии мне пришлось скопировать все в MainReport из SubReport, Variables, TextFields, всего. Также обновлен запрос, чтобы включить поля, которые были загружены в запрос SubReport.
Проблема:
По одному я добавил каждую переменную в MainReport. Так что технически это должно работать, и так будет до тех пор, пока я не добавлю последнюю переменную в отчет, и он не сработает. Выражение этой переменной не делает ничего другого и вызывает простой метод в ClassPath для вычисления значений. Если я просто оставлю пустое выражение переменной, то отчет будет работать.
Debug
Начал копаться и заметил, что метод вызывается и возвращает значения правильно. Но по какой-то странной причине JasperReport закрывает обработчик запросов, пока данные из последней группы все еще обрабатываются.
Ниже я добавил снимки экрана Конец журнала отладки и выделил, когда обрабатывается последняя страница.
В строке 26 происходит сбой, поскольку исполнитель запроса закрывается в середине печати последней группы, где, как если бы я удаляю выражение переменной, он завершает обработку FINAL GROUP, затем SUMMARY BAND и PAGE FOOTER.
Я не могу понять, почему рендеринг отчета выполняется из-за значения переменной. Я использую настройку по умолчанию для Execution Time
и Reset Value
для всех переменных и связанных с ними текстовых полей
Ошибка при добавлении переменной
Успешно завершается, когда переменная Выражение удалено