Ведение отчета за предыдущую неделю

Позвольте мне в предисловии сказать, что я новичок в JasperReports, поэтому прошу прощения, если есть очевидный ответ на мой вопрос. У меня есть существующий отчет JR, который запускается вручную с интервалом в один месяц. Я могу открыть отчет, выбрать месяц ввода из раскрывающегося списка, и он предоставит мне данные за этот месяц.

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

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

Я использую iReport 4.5.

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


person Raging Java    schedule 15.10.2013    source источник
comment
Это (должно) сводиться к тому, как вы вводите данные в отчет.   -  person MadProgrammer    schedule 15.10.2013


Ответы (1)


Создайте два параметра с именами start_date и end_date типа Date. Затем в своем запросе используйте следующий синтаксис (у меня есть источник данных Oracle; настройте его под свои нужды):

WHERE TRUNC(the_date) BETWEEN COALESCE($P{start_date}, TRUNC(sysdate-7)) 
                      AND COALESCE($P{end_date}, TRUNC(sysdate))

Если пользователь запускает отчет вручную, он или она может ввести дату начала и окончания с помощью элементов управления вводом. Если отчет является запланированным отчетом, оставьте элементы управления вводом пустыми, и по умолчанию будут использоваться последние 7 дней.

person Lisa    schedule 15.10.2013
comment
Как определяется the_date? Другой объект даты? - person Raging Java; 16.10.2013
comment
the_date — это поле даты в вашей базе данных. - person Lisa; 16.10.2013