JasperReport и компоненты заполнения

Новичок JasperReports здесь. Я прочитал руководство и краткий справочник и прочитал ряд статей о JR, и теперь поигрался с дизайнером отчетов iReport в течение дня или около того.

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

  • Поля отчета
  • Сообщить о параметрах
  • Переменные отчета
  • Наборы данных

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

Используя наборы данных в качестве небольшого перехода, мне трудно увидеть «лес сквозь деревья» с тем, как компоненты диаграммы (такие как круговые диаграммы, таблицы и т. д.) «наполняются» или «вводятся» их данными.

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

The author of this report is: <value supplied by the data source>

<pie chart here>

Таким образом, во время "заполнения" (я думаю правильно это использую...) отчет будет "заполнен" именем автора отчета (строка), а также круговая диаграмма, состоящая из 2 секторов: 1 сектор со значением 75 с меткой/ключом «Элои» и 2-й сектор со значением 25 и меткой/ключом «Морлоки». Если я не использую здесь правильную терминологию JR, то я пытаюсь получить круговую диаграмму времени заполнения с двумя срезами: срез «Элои», потребляющий 75% диаграммы, и срез «Морлоки», потребляющий 25% график.

Если кто-то может объяснить или дать фрагменты кода (Java/JRXML) для настройки такого рода диаграмм, я думаю, это поможет соединить все точки и поможет мне понять, как компоненты заполняются данными. Заранее спасибо за любую помощь!


person IAmYourFaja    schedule 09.11.2011    source источник


Ответы (1)


Думайте о параметрах как о вещах, которые конечный пользователь вводит в отчет во время выполнения. Например, вы указываете StartDate и EndDate, которые будут использоваться в запросе. Дата начала, которая вас интересует, известна вам и не предоставляется источником данных. (Существуют вариации этой идеи: возможно, ваше приложение знает что-то о вас на основе вашего входа в систему и предоставляет их в качестве параметров. Но опять же, это вещи, известные до того, как отчет будет выполнен.)

Думайте о полях как о данных, которые возвращаются из вашего источника данных. Это то, чему вы хотите научиться. Например, вы запускаете такой запрос:

select political_group, gullibility from mytable where the_date > $P{StartDate}

Предположительно, вы должны ввести значение «802701» для StartDate, а затем получить такие результаты:

$F{political_group} $F{gullibility}
Eloi                75
Morlock             25

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

Взгляните на этот отчет с круговой диаграммой, который я опубликовал пару лет назад: http://mdahlman.wordpress.com/2009/05/02/limiting-pie-pieces/

В нем есть основные идеи, которые вы хотите. Я помещаю заголовок непосредственно в диаграмму, а не в отдельное поле. Это было бы очень простое изменение. Точно так же вы можете изменить заголовок на «Автор этого отчета: $P{TheAuthor}», а затем передать этот параметр в отчет во время выполнения.

Также возможно использование поля в заголовке отчета вместо параметра. Но обычно это не имеет смысла. Поля будут иметь много значений в наборе данных. Какой из них соответствует названию? В приведенном выше случае «Элои» и «Морлок» являются полями, и они действительно не имеют смысла в заголовке отчета. (Конечно, вы можете представить себе особые случаи. Вы можете объединить все значения policy_group в одну строку и поместить ее в заголовок отчета. Но в подавляющем большинстве случаев это будет неразумно.)

Удачи.

person mdahlman    schedule 10.11.2011
comment
Спасибо @mdahlman. Ваш ответ раскрыл то, что я считаю корнем моего замешательства. Я думаю, я не понимаю разницы между полем, поставляемым с данными из источника данных (скажем, базы данных MySQL), и Prameter, поставляемым в отчет во время выполнения. Для меня все они являются данными, предоставляемыми во время выполнения. В чем разница между ними и каковы наилучшие методы / решающие факторы, когда их использовать? В очередной раз благодарим за помощь! - person IAmYourFaja; 10.11.2011
comment
Я добавил детали, чтобы помочь ответить на эти дополнительные вопросы. Вкратце: пользователь предоставляет значения Param, а источник данных предоставляет значения Field. - person mdahlman; 10.11.2011