本文共 1370 字,大约阅读时间需要 4 分钟。
其实企业里大多数报表都是重复的报表项目,有的是结构一样,但是数据内容不同,有的是时间范围不同(日报、周报、月报、季报、年报),解决这种多重分析角度的最有效方法就是导入多维度分析,不过,对很多企业来说,传统的固定报表还是使用者最习惯的展示平台,此时,可以用SSRS中的报表参数技术,让分析者自行输入要查询的条件,动态地生成对应的报表。
但是,参数化报表并不能取代多维度分析(On-Line Analytical Processing,OLAP),因为参数化报表是每次输入查询条件以产生新的数据集,数据集是在查询时或是报表生成时才进行存取计算,而没有经过事前汇总,所以,在使用时还是需要注意查询的效率。如果数据量多大,建议先设计多维度分析Cube后再利用SSRS存取。
参数化报表就是利用可变动的参数来取代固定的字段值,同时在界面中能够让使用者自行输入或是变更参数的内容。SSRS中使用两种不同类型的参数:“查询参数”以及“报表参数”。查询参数是定义在数据集层的变量(影响查询),用来影响SSRS内的数据集,因此查询参数会随着使用的数据提供者而会有不同。以SQL Server为例,数据库查询参数类似“@参数名称”,至于Oracle则会是“:参数名称”。
报表参数是定义在报表层的标量(影响报表使用者界面),用以显示在前端界面供使用者选择,通常报表参数会自动对应至查询参数,但是,报表参数值的格式都是固定利用“Parameters!参数名称.Value”来作代表。
参数化报表实例
步骤1:
先打开“Report Data”窗口(可以从工具栏“View”、“Report Data”打开)。右击该报表所使用的数据集,选择“Query”,即可开启查询设计工具,请在查询设计工具上输入带有@YEAR参数查询条件的查询语句,单击“OK”按钮后,即会发现在报表数据窗口的“Parameters”下产生了一个名为“@YEAR”的新报表参数。
注意:参数名称是有区分大小写的。
步骤2:
刚才,我们在WHERE条件加入了查询参数的筛选条件,请注意数据来源为SQL Server时,在此输入查询参数的前面请加上@符号,才可以被识别为查询参数,不然会发生错误。保存此查询语句时,系统会自动产生一个同名的报表参数(除非这个名称的报表参数已经被人使用了)。
步骤3:
请在报表数据窗口的“Parameters”处右击,选择“Parameter Properties”。
步骤4:
在此将此参数的提示修改为“销售年度”,以及将数据类型切换为整数即可。当切换至报表预览画面时,会在报表上方看到一个文本框,当我们在文本框中输入“2010”并单击右侧“查看报表”时,此时,系统会将输入的报表参数“2010”带入数据集的查询参数所在的WHERE条件中,以产生2010年的销售数字结果。
但是,像参数化报表这种便利的功能就像潘多拉的盒子,一开启了就收不回来,使用者只会一直冒出更多的需求,当然,身为报表开发者也只能照单全收,尽量满足使用者天马行空的需求。
本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1610264 ,如需转载请自行联系原作者