在Java報表軟件定時器中,參數尤為重要,特別是時間參數,在涉及到時間的定時任務中都需要用到它的公式。下面就以FineReport報表軟件為例,詳細介紹一下定時器的參數。
1. 時間參數
定時器中主要用到的時間參數如下:
日報
當前日期的前一天:Format(today()-1,”yyyy-MM-dd”)
周報
當前日期的上一周的第一天:
Format(dateInWeek((today()-7),1),”yyyy-MM-dd”)
當前日期的上一周的最后一天:
Format(dateInWeek((today()-7),7),"yyyy-MM-dd")
當前日期的上上周的第一天:
Format(dateInWeek(dateDelta(dateInWeek((today()-7),1),-7),1),"yyyy-MM-dd")
當前日期的上上周的最后一天:
Format(dateInWeek(dateDelta(dateInWeek((today()-7),7),-7),7),"yyyy-MM-dd")
月報
當前日期的上一個月的第一天:
Format(dateInMonth(monthDelta(today(),-1),1),"yyyy-MM-dd")
當前日期的上一個月的最后一天:
Format(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),"yyyy-MM-dd")
當前日期的上上月的第一天:
Format(dateInMonth(monthDelta(dateInMonth(monthDelta(today(),-1),1),-1),1),"yyyy-MM-dd")
當前日期的上上月的最后一天:
Format(dateInMonth(monthDelta(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),-1),daysOfMonth(monthDelta(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),-1))),"yyyy-MM-dd")
年報
當前日期的上一年的第一天:
Format(dateInYear(yearDelta(today(),-1),1),"yyyy-MM-dd")
當前日期的上一年的最后一天
Format(dateInYear(yearDelta(today(),-1),daysOfYear(yearDelta(today(),-1))),"yyyy-MM-dd")
2. 其他類型參數值
報表當中除了時間參數之外,為了節省報表制作的工作量和減少報表文件的總量,我們往往要在報表里面加入其他的參數。例如主機名,指標名等等。
首先我們在報表里面定義這些參數的時候,建議使用中文的參數名稱,這樣在定時生成之后,在報表查看時上方的參數名稱也就是直接讀的在報表
當中定義的參數名稱。中文對于最終用戶來說比較容易理解。
在報表當中有這些參數的時候,定時生成的時候,我們需要設定參數包含哪些具體的值。比如exchange郵件服務器的性能報表,在哪幾臺機器上
有exchange,exchange又包含哪些參數指標。這些我們都需要通過定義全局數據源得到。
也就是說,我們先定義好一個全局數據源,該數據源返回的結果是exchange服務器所在的所有主機。
然后在設置定時生成的時候,主機這個參數的參數類型,設置為“列”。選擇我們已經定義好的全局數據源,以及該數據源中代表主機的列即可。這樣在這個數據源內返回了多少結果,則報表在生成的時候,會每一個值生成一個報表。有一種特殊的情況,也許要通過多定義一些全局數據源來實現。例如我們的報表當中,有一部分是windows主機的性能報表。但是windows的主機又分為OA和CallCenter。如果分開來設計報表的話,是一種重復勞動。
解決的辦法,就是通過定義不同的全局數據源。還是以主機這個參數舉例。在全局數據源里面定義兩個不同的數據源分別返回的結果是OA的主機和CallCenter的主機。 然后我們只要設計一張Windows主機的報表即可。在定義定時任務時,可以定義兩個不同的action, 只是主機這個參數定義的時候,選擇的數據源不同。選擇OA的主機,那么生成的報表就是OA的性能報表,選擇CallCenter的主機,生成的即是CallCenter的報表。 再舉一個例子。各個業務系統的報表,也可以通過這個方法,大大減少報表的數量。例如業務系統的日報,我們只需要設計一張報表。在設置定時生成的時候,業務系統這個參數,可以分別設置固定的值,即十個不同的action。
文章轉自:http://blog.vsharing.com/fanfanzheng/A1305575.html