报表弥补数据库不足(二)

上一篇当中我们阐述了在FineReport报表当中如何list出一个连贯的月份,在实际的应用当中,还有一种情况需要使用补足的手段。

例如下面这张考勤表:

职工考勤表

职工考勤表

可以看到这里的日期部分是1到31号的一个list。而在报表当中有两个参数,分别是让用户输入年和月。而每个月的具体的天数又是根据月份不同的,所以需要根据不同的月份来显示对应的天数。

所以这张表就需要一个稍微长一点的公式,作为list的结束数。在该公式当中要调用我们定义的年月参数,作为动态显示天数的根据。

range(1,tointeger(mid(todate(CONCATENATE($year,”-”,tointeger($month)+1,”-”,1))-1,9,2)))
从最里层开始解释一下这个公式:$year,$month是我们在报表参数处定义好的参数名称,类型都是字符串,即用户要输入的年和月。Tointeger是将字符串类型的数据转换为日期,以便能够在月份上面+1。

然后使用CONCATENATE()字符串拼接函数,将($year,”-”,tointeger($month)+1,”-”,1))中的四个字符拼成我们需要的日期格式,例如$year的值是2008,$month的值是3,那么最终我们CONCATENATE($year,”-”,tointeger($month)+1,”-”,1)获取到的是2008-4-1也就是根据输入的参数,获取到了该月份下一个月的第一天。

TODATE的作用,就是将我们拼出的日期,转换为date类型,然后-1,得到的即是当前输入月份的最后一天,例如输入的是2008,3,那么转换之后得到的值就是2008-3-31。

继续是MID函数,该函数和SUBSTR函数的功能相同,即从一个数据当中截取部分长度的字符,mid(todate(CONCATENATE($year,”-”,tointeger($month)+1,”-”,1))-1,9,2)返回的是上面的日期数据当中最后两位数据,即31。

最后range函数是和list功能相同的一个函数,起始值我们设置的1,结束值根据输入的月份不同。

然后下面的出勤数可以从数据库中取,关联的方法和上一章是相同的。

立即发现·数据价值

推荐阅读

→ 可视化分析平台对企业作用几何?

→ 自定义报表之自定义参数界面

→ 融资?不要!上市?不急!这个帆软有点酷……

→ web报表插件领导品牌FineReport

→ 怎样用图表分析数据(一)

→ 如何利用CRM系统报表,提高企业的核心竟争力?

→ 帆软报表平台的使用方法

→ BIRT报表深度解析之BIRT中国企业级用户流失之谜

→ 信息化管理系统在企业中的价值

→ 典型数据报表的样式和作用

版权所有©2016 南京帆软软件有限公司 | 苏ICP备14031611号-3

返回顶部