凌旭东
摘 要:在VS2008中,通过使用Reporting Services技术,实现多级分组报表。
关键词:Reporting Services;多级分组;RDL;SQL Server;Business Intelligence Development
Reporting Services提供了一个基于Web的报表管理器Report Manager,其主要功能是通过调用报表服务器提供的Web Service来完成的,可以使用类似于http://(ServerName)/Reports$(InstanceName)的URL来了解报表管理器的全貌。Reporting Services的Web Service是客户端程序和报表服务器之间的通信接口,允许开发者创建任何涵盖整个报表生命周期的相关自定义工具(除了类似于报表管理器的报表管理功能外,还具备生成、发布、打印报表等功能)。下面来介绍这种方法的对多级分组报表建立与处理过程。
1 设计流程
通过Business Intelligence Development(智能商业)建立报表项目,绘制报表,建立Parameters(参数),借用参数对数据源数据进行Sql脚本控制,从而达到数据过滤。将报表部署到服务器端,从而完成多级分组报表项目的设计。
2 实施步骤
建立报表
在VS2008中“商业智能项目”模板中,选择创建一个“报表服务器项目”AWReport。
⑴添加“共享数据源”。
⑵使用向导生成报表。切换到报表的“布局”选项卡,添加分组内容
⑶开发工具将自动生成具有分组结构的报表,通过调整分组单元格的位置、内容得到分组。
⑷设置数据来源。切换到报表的“报表数据”选项卡,点击数据集,输入查询语句:
SELECT kc_dept, kc_a1, kc_a2, kc_a3, kc_a4, kc_a5, kc_a6, kc_a7, kc_a8, kc_a9, kc_a10, kc_a11, kc_a12, kc_a13, Purchasedate,kc_date1, c_date2, xh, ResourceID
FROM ResourceReport
WHERE (kc_a1 LIKE N'%' + CASE ISNULL(@lstResourceClass, '') WHEN '' THEN '' ELSE @lstResourceClass END + '%') AND
(kc_dept LIKE N'%' + CASE ISNULL(@CurrentUserDept, '') WHEN '' THEN '' ELSE @CurrentUserDept END + '%')
这里需要在报表中添加2个参数,一个是部门@CurrentUserDept,一个是资源类型,强调在SQL语句中使用Case语句。
⑸预览结果:
可以看到分组成功,有总计、合计、小计,完成3级分组。
⑹在网页中调用报表
1)部署服务器报表
通过Web Services管理站点报表,需要在报表项目中输入站点地址,如:“http://192.168.120.120/reportserver/”。
在部署过程中IIS7版本中,慎用Asp.Net模拟,否则部署过程中需要指定的模拟账户,并且指定模拟账户需要一定的报表服务器读写访问权限。
在报表服务器中指定匿名账户即IIS7中应用程序池中的站点匿名访问账户。
2)Aspx网页中服务器端代码
//指定报表服务器地址
Uri ReportUri=new Uri("http://192.168.120.120/reportserver ");
//绑定到报表控件中
ReportViewer1.ServerReport.ReportServerUrl= ReportUri;
//清除所有参数
Microsoft.Reporting.WebForms.ReportParameter[]Paras
=new Microsoft.Reporting.WebForms.ReportParameter[2];
Paras[0]=new Microsoft.Reporting.WebForms.ReportParameter("lstResourceClass",new string[1] { null });
Paras[1]=new Microsoft.Reporting.WebForms.ReportParameter("CurrentUserDept",new string[1] { null });
//由Web页面提交报表所需参数,设置参数值代码:
.....略
//上传参数值至报表服务器
this.ReportViewer1.ServerReport.SetParameters(Paras);
//刷新
ReportViewer1.ServerReport.Refresh();
至此报表部署已介绍完毕。通过利用Sql Server中的Case语句巧妙制作出3级分组报表,并可以在网页中浏览、打印,亦可导出报表数据、格式到本地Word、Excel、Pdf等文件中,也可利用这些功能将数据直接写入本地Word、Excel、Pdf等文件中。本案例在Vs2008+Sql Server2008+IIS7中10万数据量测试通过。
[参考文献]
[1]微软公司.MSDN Library 1995-2000版.http.www.Microsoft.com/china/msdn/library/平台SDK/G&M/VFW.html.
[2][美]David J.Kruglinski著.潘爱民,王国印,译.Visual C++技术内幕.第四版.北京:清华大学出版社,1999.43-478.