Как использовать один и тот же источник данных дважды в JasperReports / iReport - PullRequest
9 голосов
/ 28 сентября 2011

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

Если для datasourceexpression установить значение $P{REPORT_DATA_SOURCE}, то только диаграмма отображает данные (предположительно, первый элемент типа подотчета), и таблицы пусты. Кажется, данные могут быть использованы только один раз?

Если я использую Набор данных для запроса к базе данных, она работает, однако она выполняет запрос три раза, по одному для каждой таблицы / диаграммы. Это будет огромные накладные расходы.

Очевидно, что я делаю это неправильно, но я не могу найти примеров использования одного и того же набора данных более одного раза.

Ответы [ 2 ]

3 голосов
/ 11 октября 2011

Простого ответа не существует, поэтому я поднял запрос функции http://jasperforge.org/projects/jasperreports/tracker/view.php?id=5487

Предлагаемые обходные пути:

  • реализовать пользовательский исполнитель запросов для извлечения данных из кэшированного источника данных
  • создать перезаписываемый источник данных на основе полученного набора результатов

Спасибо Санде aka shertage на форуме jasperforge за эти предложения.

0 голосов
/ 08 ноября 2012

Альтернативное решение, клонирование набора данных:

http://code.google.com/p/cloning/

Cloner cloner = новый Cloner ();

ArrayList clone = cloner.deepClone (getSomeArrayList ());

final JRDataSource ds = new JRBeanCollectionDataSource (AnotherBean);

Параметры HashMap = new HashMap ();

parameters.put ("PARAM_A", новый JRBeanCollectionDataSource (getSomeArrayList ()));

parameters.put ("PARAM_B", новый JRBeanCollectionDataSource (clone));

...