Ошибка группировки iReports — несколько вхождений?

Меня раздражает iReports. Проблема в том, что у меня есть набор данных, возвращающий данные для нескольких клиентов, и я хочу использовать «Групповое выражение» для идентификатора клиента и иметь в отчете подробные вкладки для каждого клиента.

Я обнаружил, что, казалось бы, случайным образом, если имеется более одной строки данных для клиента, iReports будет генерировать две или более групп (иногда он делает то, что я ожидаю, и группирует все данные клиента вместе), поле, идентифицирующее клиента, является то же самое и не меняется.

Кто-нибудь видел это раньше? Честно говоря, я не могу поверить, что это на самом деле ошибка, но я что-то пропустил. Просто много ищет, чтобы найти подходящий результат.


person Mark    schedule 13.10.2011    source источник
comment
Вы сортировали данные по идентификатору клиента (поле, по которому вы группируете)?   -  person Alex K    schedule 13.10.2011


Ответы (2)


Я думаю, что это проблема сортировки данных.
Цитата из Полное руководство по iReport:

JasperReports группирует записи, оценивая групповое выражение. Каждый раз, когда значение выражения изменяется, создается новый экземпляр группы. Движок не выполняет никакой сортировки записей (если это не запрошено явно), поэтому, когда мы определяем группы, мы всегда должны заботиться о сортировке записей. То есть, если мы хотим сгруппировать набор адресов по странам, записи, которые мы выбираем для отчета, уже должны быть упорядочены по странам. При использовании SQL-запроса данные легко сортировать с помощью предложения ORDER BY. Когда это невозможно (то есть при получении записей из документа XML), мы можем попросить, чтобы JasperReports отсортировал данные для нас. Это можно сделать с помощью параметров сортировки, доступных в окне запроса.


Вы можете сортировать данные следующими способами:

  • в случае использования типа источника данных Подключение к базе данных jdbc в запрос отчета можно добавить условие ORDER BY customerId, где customerId - имя столбца поля с идентификатором клиента
  • в случае использования Подключения файла csv или чего-то подобного вы можете организовать сортировку данных, добавив свойство sortField для поля в шаблон отчета (файл jrxml):
<jasperReport ...>
    ...
    <field name="customerId" class="java.lang.String"/>
    <sortField name="customerId"/>
person Alex K    schedule 14.10.2011

  1. Оператор SQL имеет ORDER BY?
  2. Группа iReport сгруппирована по customer_id?
person wannik    schedule 08.11.2011