Изготвяне на отчет за предходната седмица

Позволете ми да предваря, като кажа, че съм нуб на 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