2011-01-21 2 views
0

То, что я пытаюсь сделать, кажется, просто.JasperReports: Как динамически изменять subreportExpression

У меня есть главный отчет, который включает элемент подзаголовка. Подрегистр заполняется из JRAbstractBeanDataSource, в котором содержится коллекция 0-n подписок.

В родительском отчете, то подотчет встречается с:

<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + $F{subReportFileName}]]></subreportExpression> 

Это прекрасно работает, SUBREPORT_DIR передается как парам к источнику данных в коде.

Что мне нужно сделать, хотя, это выбрать другое имя отчета, на основании свойств SubReport, что-то вроде:

<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "$F{subReportFileName}"]]></subreportExpression> 

То есть, чтобы каждый элемент в коллекции SubReport DATAS на источник данных указать что должно быть имя файла .jasper (т. е. разрешить ему выбирать, какой субрепорт использовать).

Возможно, есть лучший способ подумать об этом.

ответ

0

Я пытался найти способ установить имя отчета в качестве основного отчета, повторенного по элементам источника даты. Вместо этого я просто сделал запрос полностью динамическим, переданным в качестве параметра. Это то, что мне действительно нужно изменить для каждого под-отчета.

0

Просто примечание стороны - если вы хотите включить код в свой вопрос, используйте кнопку кода над окном композиции. Мы не можем видеть ваш пример. Если вы нажмете на вопросительный знак внутри маленького оранжевого квадрата в верхнем правом углу окна композиции, вы попадете в учебник по редактированию Markdown.

Я немного неясен относительно того, что вы пытаетесь выполнить. Я не уверен в коллекции, если вы хотите включить в свой отчет все вложенные записи и вам нужен способ повторить их имена в каталоге или если вы хотите, чтобы выбор подрегистра был динамическим. Я не знаю, как включить в основной отчет несколько подчиненных отчетов. Если вы хотите динамически выбирать имя отчета, почему бы просто не сделать имя подрепортажа параметром, который будет передан вашему отчету из вашего кода. Вы можете сделать свою логику, чтобы определить, какое имя отчета вы хотите, исходя из любых критериев, которые вы выберете. Если это не то, что вы ищете, возможно, немного больше деталей в вашем вопросе поможет.

+0

Упс, забыли разметку кода :) Спасибо. Я пытался найти способ установить имя отчета в качестве основного отчета, переработанного по элементам источника даты. Вместо этого я просто сделал запрос полностью динамическим, переданным в качестве параметра. Это то, что мне действительно нужно изменить для каждого под-отчета. Во всяком случае, спасибо за ваше время. – mtyson

Смежные вопросы