JasperReports: разбиение на страницы подотчетности - PullRequest
0 голосов
/ 02 декабря 2010

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

Представьте, что у меня есть следующие данные:

Customer
--------
cid : 1 | name: John  ;
cid : 2 | name: Smith ;

PhoneNumber
-----
cid : 1 | number: 1234 ;
cid : 1 | number: 5678 ;
cid : 1 | number: 4321 ;
cid : 2 | number: 6745 ;
cid : 2 | number: 3124 ;

Я хочу сделать отчет с вложенным отчетом со следующими требованиями:

  • Идентификатор клиента -> 'cid' будет использоваться в качестве параметра отчета
  • отчет показывает только одного клиента вместе с его / ее номером телефона
  • На одной странице должен отображаться только один клиент с одним номером телефона

например, я взял данные клиента выше с 'cid' = 1, он сгенерирует 3 страницы, потому что у клиента с именем "Джон" 3 PhoneNumber.

Страница 1:

Имя клиента: Джон - Номер телефона: 1234

Страница 2:

Имя клиента: Джон - Номер телефона: 5678

Страница 3:

Имя клиента: Джон - Номер телефона: 4321

Мои вопросы:

  1. Как настроить основной отчет для генерации страницы в соответствии с количеством деталей подотчета?
  2. Какое свойство мне нужно установить в основном отчете или подотчете для выполнения моего требования?

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

очень просто, и вам не нужно брать подотчет.

в основном отчете напишите запрос наподобие следующего

SELECT
cid,
(SELECT number FROM tablename WHERE tableid IN (SELECT tableid FROM tablename WHERE tableid=(SELECT min(tableid) FROM tablename WHERE cid=$P{parameter})
FROM tablename
WHERE cid=$P{parameter}

затем создайте новую группу cid в iReport. нажмите на группу группы, которую вы недавно создали. см. свойство отчета для этой группы. поставьте флажок в начале новой страницы.

Поместите ваши две поданные на эту группу. как

Cid номер поле чисел cidfield

затем запустите отчет. выходной сигнал идет так, как вы хотите.

0 голосов
/ 02 декабря 2010

1
Ваш основной запрос отчета должен вернуть номера телефонов, которые вы хотите показать. Что-то вроде:

select phone_number from ... where cid=$P{CID}

Затем вы добавляете подотчет в полосе Detail и присваиваете ему значение поля ($ F {phone_number}) в качестве параметра. В подотчете вы можете выбрать дополнительную информацию об этом втором значении.

2
Разбивка на страницы более сложна и не так проста с Джаспером, но есть обходной путь.
В моем проекте мы следим за тем, чтобы все группы были именно той высоты, которой мы хотим. В вашем случае - создайте основной отчет так, как вам нравится - с заголовками и т. Д. И вычислите, насколько высока должна быть полоса детализации, чтобы она занимала целую страницу. Затем убедитесь, что ваш подотчет точно в этом размере.

...