Несколько групп в отчетах о яшме

Я хочу создать несколько групп в ireport, и данные должны отображаться по группам. Например: сначала данные Group1 должны быть напечатаны полностью, затем


Группа 1:


Данные модуля. После этого я хочу полностью распечатать данные группы 2.

Группа2:


Данные категории

Я использую источник данных Result Set.

Может ли кто-нибудь помочь мне в этом?


person Ujjwala    schedule 05.07.2011    source источник


Ответы (4)


Отчеты Jasper будут работать именно таким образом, если результаты вашего запроса упорядочены правильно.

Например, предположим, что вы группируете по полю с именем «MY_GROUP», и оно имеет значения «GROUP A» и «GROUP B». В своем отчете вы создадите группу для поля "MY_GROUP". В своем запросе убедитесь, что у вас есть MY_GROUP в качестве первого поля в вашем предложении ORDER BY. Вы также можете выполнить это в iReports, добавив поле «MY_GROUP» в качестве первого поля в разделе «Параметры сортировки» запроса отчета.

Теперь, когда вы добавили свою группу и правильно упорядочили, ваши результаты будут такими:

Верхний колонтитул - ГРУППА A Деталь - ГРУППА A Нижний колонтитул - ГРУППА A Верхний колонтитул - ГРУППА B Деталь - ГРУППА B Нижний колонтитул - ГРУППА B

Именно так, как вы хотите. Я предполагаю, что вы неправильно упорядочивали результаты запроса. Это может привести к тому, что несколько группировок для ГРУППА A, ГРУППА B и т. д. будут перемежаться.

person Tom    schedule 15.06.2012

Если группы в iReport не хранят все данные вместе, используйте вложенные отчеты. Когда Jasper добирается до подотчета, он запускает весь подотчет и помещает все это в отчет. У вас может быть что-то вроде:

Подотчет 1 - Группа 1 Первая запись группы 1 Вторая запись группы 1 Третья запись группы 1 ... Последняя запись группы 1 Подотчет 2 - Группа 2 Первая запись группы 2 Вторая запись группы 2 Третья запись группы 2 ... Третья запись группы 2

person Eric Hydrick    schedule 05.07.2011

Все именно так, как сказал Том. Группы Jasper Reports не упорядочивают данные, полученные из запроса, они просто берут их в том порядке, в котором они приходят.

Чтобы отобразить информацию в групповом виде, вы должны добавить в запрос ORDER BY, чтобы строки, которые получает отчет, были уже упорядочены.

person achecopar    schedule 23.07.2014

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

  1. Теоретически вы должны иметь возможность использовать ORDER BY:
ORDER BY ValueA, ValueB

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

  1. Используйте вложенные отчеты, чтобы прикрепить незначительные различия с помощью уникальных отчетов. Вы создаете корневой отчет с пустыми данными. Затем вы создаете уникальные отчеты, которые будут служить подотчетами. Наконец, вы используете элемент подотчета, чтобы связать значения с корневым отчетом. Хотя это хорошая работа и может привести к повторению кода.
  2. Хакерский способ, который я использовал, был следующим: смесь «Выражений печати при» с логическими логическими выражениями с двумя заголовками групп и заголовком столбца. Логические выражения:
$F{QUERY}.equals(Query1) && ($P{P_Typequery}.equalsIgnoreCase("QueryA") && $P{P_parameter} == null) 

и

$F{QUERY}.equals(Query1) && ($P{P_Typequery}.equalsIgnoreCase("P_QueryA") && $P{P_parameter} != null) 

с двумя заголовками групп и заголовком столбца. Заголовок столбца не будет повторяться для каждой строки, поэтому вы назначаете одно из логических выражений для его «печатать, когда», чтобы он не всегда печатался. Заголовок первой группы не будет повторяться для каждой строки и работает. Заголовок 2-й группы используется в тех случаях, когда вы ДЕЙСТВИТЕЛЬНО хотите, чтобы он повторялся для каждого уникального значения, поскольку он всегда печатается для каждой строки, и вы используете другое логическое значение для его «печатать, когда». Надеюсь, поможет

person MasonTheStoneWorker    schedule 22.04.2020