Передать значения из основного отчета в дополнительный отчет? - PullRequest
3 голосов
/ 22 февраля 2011

Я только начал работать с iReport и получил задание внести некоторые изменения в уже существующие отчеты.

В настоящее время есть основной отчет с разделами A и B (контактные данные и некоторая другая информация). Существует подотчет C, а затем подотчет D. Моя задача состоит в том, чтобы реплицировать A и B для каждого элемента в D. Если в отчете много разделов D, я хочу иметь A и B для каждого.

Все данные находятся в одном XML-документе, и для получения данных для разделов A и B у меня есть просто

((net.sf.jasperreports.engine.data.JRXmlDataSource)$F{REPORT_DATA_SOURCE}).dataSource("/Header/")

и для подотчета с разделом D

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/Header/ProductHeader/Member")

если я перетащу поле из структуры документа, в котором отображаются данные из раздела A, в раздел D и проверю выражение, которое оно говорит $ F {ContactNumber}, но отображает ноль в D, даже если он отображает значение в разделе A

Как мне нужно изменить источники данных для отображения содержимого A и B в D?

Заранее спасибо

1 Ответ

9 голосов
/ 24 февраля 2011

Вам необходимо передать параметры в свой подотчет. Подотчет не предоставляет никаких данных из вашего основного отчета, если вы явно не определите контракт. Это больше похоже на вызов метода, чем на продолжение основного отчета.

Если вы хотите отобразить поле с именем foo в своем основном отчете в подотчете, вам нужно будет сделать следующее:

  1. Создайте параметр в вашем подотчете с именем foo.
  2. Создайте элемент подотчета в вашем основном отчете.
  3. В Свойствах элемента подчиненного отчета есть свойство, называемое «Параметры». Откройте диалоговое окно и добавьте параметр с именем foo и правильным выражением значения.

Если вы хотите использовать значение для foo в своем подотчете, вы должны использовать выражение: $P{foo}, если это основной параметр отчета.

...