У меня есть отчет, который я создал в iReport professional 4.5.1 и развернул на JasperServer. У меня есть параметр в моем отчете, который используется для указания столбца сортировки:
Имя: profit_loss_sort
Класс параметра: java.lang.String
Использование в качестве подсказки: Да
Выражение значения по умолчанию: "FAC_ID"
Затем у меня есть еще один параметр, который принимает $P{profit_loss_sort} и использует его для создания предложения ORDER BY для моего запроса:
Название: profit_loss_sort_function
Класс параметра: java.lang.string
Использование в качестве подсказки: Нет
Выражение значения по умолчанию: "ORDER BY" +$P{profit_loss_sort}+"ASC"
Когда для параметра $P{profit_loss_sort} установлено значение visible, это отлично работает в iReport и на JasperServer. Я установил гиперссылку для каждой метки столбца, и когда вы нажимаете на них, отчет сортируется по каждому столбцу.
Когда я снимаю видимый флажок для попытки $P{profit_loss_sort} запустить отчет в первый раз, я получаю сообщение об ошибке Oracle о том, что мне не хватает выражения (ORA-00936: отсутствует выражение). Я этого не понимаю, потому что предложение ORDER BY в моем запросе:
$P!{profit_loss_sort_function}
поэтому JasperServer должен принять значения по умолчанию для этих двух параметров и создать предложение ORDER BY. На самом деле, когда я запускаю отчет из iReport с помощью параметра «Запустить отчет JasperServer», он действует соответствующим образом и заполняет предложение ORDER BY по умолчанию. $P{profit_loss_sort} является обязательным, и на стороне JasperServer я снял флажок «всегда запрашивать» для своих элементов управления вводом.
Я не хочу, чтобы $P{profit_loss_sort} был видимым элементом управления вводом, но я все же хочу, чтобы он использовал значение по умолчанию при первом запуске отчета. Есть предположения?