在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