Как я могу указать количество строк в детализации полосы? - PullRequest
1 голос
/ 16 декабря 2010

У меня две проблемы:

1 - я хочу указать количество строк, которые должны отображаться на каждой странице моего отчета.

2 - Если количество выбранных строк изИсточник данных меньше суммы, необходимой для заполнения высоты страницы, я хочу заполнить оставшееся пространство пустыми строками (каждая строка выделяется с помощью границ своего поля).Например, если на каждой странице может отображаться 50 строк и есть только 20 строк данных, извлеченных из источника данных, то я хочу напечатать 30 пустых строк после последней напечатанной строки.Учтите, что я не могу сделать это с изменением моего оператора выбора SQL.

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 30 ноября 2011

У меня была та же проблема, мое решение было получить «пустые» строки, связанные с sql (ORACLE в моем случае), запрос выглядит так:

Select first_field, second_field, etc..
from my_table WHERE my_condition=${parameter}
UNION ALL
SELECT NULL,NULL, etc..
FROM EXISTING_TABLE_WITH_ROWS WHERE ROWNUM < 40 - (SELECT COUNT(*) FROM my_table WHERE   my_condition = ${parameter})

Это создает пустые строки выше, теперь,Если вы не видите никаких изменений, попробуйте установить одно поле или метку со свойством «Удалить строку, когда пусто». Надеюсь, что эта справка

2 голосов
/ 02 марта 2011

У меня была похожая проблема, и вот как я решил это.

Во-первых, вам нужен параметр (или, может быть, переменная) с общим числом строк, и вам понадобится включенная переменная Group_COUNT, «Group» изменится в зависимости от имени вашей группы.

У меня был параметр с именем «IDS», List<Integer>, используемый в запросе для получения данных, $P{IDS}.size() дает мне количество строк. Я думаю, что вы также можете использовать включенную переменную "REPORT_COUNT".

Затем, самая раздражающая часть, вам НУЖНО сделать полосу детализации достаточно длинной, чтобы вместить все ваши данные (в моем случае 8 строк) и вставить изображение (или текстовый компонент) в каждую строку. Для этого компонента должны быть установлены 2 свойства: «Удалить строку, когда пусто» и «Печать при выражении», первое в true, а второе со следующим условием:

new Boolean($P{IDS}.size() < 2 && $P{IDS}.size() == $V{Group_COUNT}.intValue())

Вам придется заменить $P{IDS}.size() на выражение, отражающее количество строк вашего запроса, а 2 на номер строки, если у вас есть хотя бы 1 строка, вы можете пропустить # 1. Начните с 2, и добавьте 1 для каждой строки, в вашем случае до 50! (Извините!)

0 голосов
/ 12 апреля 2011

Я могу помочь вам с вашим вторым запросом:

  1. Добавить TextField с этой относительной позицией

    • слева: 1 пиксель
    • верх: 1 пиксель
  2. Вставьте внутрь "\ n \ n ..." 50 раз.Всегда печатайте 50 строк.

  3. Изменение размера текста

    • ширина: 1 пиксель
    • высота: 15 пикселей
  4. Вариант галочки: Strecht при переполнении.

Привет

...