2013-10-15 3 views
1

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

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

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

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

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

+0

Это (должно) сводится к тому, как вы подаете данные в отчет – MadProgrammer

ответ

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 дней.

+0

Как определяется значение the_date? Другой объект Date? –

+0

the_date - это поле даты в вашей базе данных. – Lisa

Смежные вопросы