Reporting Services建立多级分组报表

2013-04-29 05:11凌旭东
无线互联科技 2013年6期
关键词:管理器报表语句

凌旭东

摘 要:在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.

猜你喜欢
管理器报表语句
应急状态启动磁盘管理器
重点:语句衔接
Windows文件缓冲处理技术概述
LabWindows/CVI中Excel报表技术研究
从三大报表读懂养猪人的成绩单
高集成度2.5A备份电源管理器简化锂离子电池备份系统
快速导出QQ群消息
如何搞定语句衔接题
作文语句实录
月度报表