Передать значения из основного отчета в подотчет?

Я только начал работать с 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}, но отображает Null в D, даже если оно отображает значение в разделе A

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

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


person Nick    schedule 22.02.2011    source источник


Ответы (1)


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

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

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

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

person Aaron    schedule 24.02.2011