在一张报表中完成日周月年报

本文以一个例子说明如何通过参数和宏在一个报表中显示日报、周报、月报、年报等。

背景描述

要做的是一个公园人流量统计的报表,要求选择日报时能够选择对应的时间段,并显示相应时间段的数据:

周报则显示周一到周日的人流量数据:

月报显示月初到月末人流量数据:

年报显示一月到十二月的人流量数据:

实现过程

报表中使用to()函数的两个参数控制扩展范围,通过动态参数和动态宏判断对应显示值。现将报表中主要部分说明如下:

关键参数:

hourCount 用于计算小时数,表达式: int(@endTime)-int(@beginTime)

dayCount 用于计算天数,表达式:daysAfter(monthbegin(@dateFormat+” 00:00:00″),monthend(@dateFormat+” 00:00:00″))+1

toBegin to函数第一个参数,表达式:case(reportType,”1″,int(@beginTime),”2″,day(weekbegin(@date+” 00:00:00″))+1,1)

toEnd to函数第二个参数,表达式:case(@reportType,”1″,@endTime,”2″,@toBegin+6,”3″,@dayCount,”4″,12)

关键宏:

categoryName 用于显示扩展分类,也用做统计图分类值,表达式:case(@reportType,”1″,”B2+’:00′”,”2″, “‘星期‘+chn(dayNo(@year+’-'+@month+’-'+disp(B2)+’ 00:00:00′)-1)”,”3″,”@month+’‘+B2+’‘”,”4″,”B2+’‘”)

最后将相应的参数传给数据集过滤数据即可。