制作一个SSRS的ORACLE数据库报表,使用了时间类型的参数。
需求:我们这个报表是以月为单位,呈现的数据为查询为当前月的第一天到最后一天。条件类似于:time_day > 20140601 and time_day < 20140630
因为是让用户选择月,所有呈现出来的时间参数应该是201406这种,写了一个时间的SQL,这个是连接ORACLE数据库的,并且只生成从201301到当前月的数据。
select * from (SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2013-01', 'YYYY-MM'), ROWNUM - 1), 'YYYYMM') DAY_ID FROM DUAL CONNECT BY ROWNUM <= months_between(to_date(to_char(sysdate,'yyyy-MM'), 'yyyy-mm'), to_date('2013-01', 'yyyy-mm')) + 1 ) order by DAY_ID desc
做成一个数据集。
到参数里面添加一个参数对应的
在可用值里面选择我们新建的那个时间集合。值字段为那个SQL里面的字段,标签字段其实就是显示出来给用户看的字段,如果觉得201406这种方式用户可能看不懂,那就去改一下那个SQL,把时间格式化成用户能看懂的样子,这个标签字段就显示对应的那个字段,我这里就直接方便选那个值了。这两个参数需要隐藏,这个需要注意一下。不用呈现给用户进行选择
因为在呈现给用户看的数据里面是按天查询的,所以我们要将时间进行转换。另外添加两个参数。
smontime其它就是之前加的一个参数。stime因为是第一天开始,所有直接使用"&"符号将01连接起来,外面的一个Int是将该值转换成一个INT对应参数里面的数据类型。
另一个参数和这个参数一样添加即可,只不过&连接的是31我又偷懒了一下,因为我们后台数据是INT类型的,所以这边我就用了31号。当前是时间的话就不对了。
另一个参数我也截个图吧
添加数据集,下面红色的部分就是上面的两个参数。ORACLE使用":"的方式,SQL SERVER 使用“@”的方式。
现在在报表中插入表格,SSRS报表主体空白的地方右键添加一个表格。
选中那个插入的 表格按F4就会出现这个表格的相关属性,一般会出现在窗口的右侧。
在属性里面有个DataSetName这个就是这个工程里面的数据集。从里面选择一个。
这个时候回到表格的地方就会看到,在单元格中点击鼠标就会出现一个下拉框,这个里面就是你选择的那个数据集里面的字段。
再对表格进行调整一下就行了,表格的第一行为表头,可对格表进行各种属性修改。需要自己摸索了。