Reporting Services 学习整理1. 简介1. Microsoft? SQL Server ? 2000 Reporting Services 是一种基于服务器的新型报表平台,可用于创建和管理包含来自关系数据源和多维数据源的数据的表格报表、 矩阵报表、 图形报表和自由格式报表可以通过基于 Web 的连接来查看和管理您创建的报表2. 支持广泛的数据源3. Microsoft SQL Server Oracle 数据库任何与4. ODBC 或 OLE DB 兼容的数据源5. Reporting Services 提供两种编程模式 : IDE 和 API6. 微软的报表可以象 VB 那样通过拖拉以及填写一些必要的信息来一步步的创建,这点功能对非专业的用户可能比较有用, 但专业开发人员可能更喜欢用调用 API 的方式来实现, 演讲中微软的专家现场用编写了代码,很简便,例如 ( )表示删除报表 .7. 同 Outlook 集成实现报表的自动发送8. 因为 Outlook 是微软自己的产品,因此实现同 Outlook 的集成是情理之中,显然这也是Reporting Services 的一个很大的优势,相当于包含了一部分工作流的功能,对于企业高层用户来说,时间宝贵,当然不可能总是到 ERP中手工获取报表, Reporting Services 可以事先定义好报表规则,然后可以按月按季度定时把报表自动发送到用户邮箱中 .9. 提供权限控制功能10. 分管理员 / 高级用户 / 普通用户等等权限,创建报表的人可为该报表分配权限11. 提供快照和历史记录功能,减少了报表服务器的负荷12.快照实际上就是在数据库服务器和报表服务之间又加了一层Cache,也就是说有些报表可以直接在缓存里调出来使用,不用每次都查询。
历史纪录就象IE 里的历史纪录一样,提供了一个索引功能13.提供便利的接口允许用户自定义报表规则14.非专业用户不需要写 SQL语句来实现报表规则, 只需要在一个列表中填写规则(例如 ><= 等规则 ).这也是微软一贯的风格,微软的软件都是“傻瓜”型的,这也是许多非专业用户喜欢微软软件的重要原因15. 同 Office 集成,而且可以直接转换为 PDF格式16. 产生的报表最初是显示在 IE 里,也可以转换为 Excel 等格式, 另外还可以转为 PDF格式同 Office 集成是可以理解的, 但让人意外的是, 微软现在也开始提供 PDF格式,PDF是 WORD的有力竞争者,我想第一是 PDF 有很多免费的二次开发工具,第二是微软也认识到越来越多的用户在使用 PDF格式, PDF的优点是体积小、格式清晰美观、保密功能强 .17. Reporting Services 是 .NET 开发环境中的一个插件 ,18. 必须在安装 .NET 开发环境后才能安装 Reporting Services,在 BI(Business Intelligence) 组件库中可以找到 Reporting Services 项目 .然后就可以按照 Step by step 的步骤来建报表 ,一般的要从控件库里拖拉一个 Table 放在界面里,然后指定行列以及各自对应字段 .19. 报表文件通用性强20. 报表定义文件是一个扩展名为RDL的 XML 文档。
它保存了报表的样式定义和数据源的定义,是微软自己定义的一种描述报表定义的 XML 文档,结构是公开的,因此第三方厂商可以编写兼容报表服务的报表设计器2. rdl 和 rdlc 的异同.rdlc 是 VS2005 中报表文件的后缀名,是Report Definition Language Client的缩写,直接翻译过来可以理解为报表定义语言客户端这样听起来很难懂, 不知所云 其实和 rdlc 同时存在的还有一个 rdl ,就是上面这个全程前3 个单词的缩写从 SQL Server 2005开始,微软提供了一个报表服务 (ReportingService),而 rdl 是指那些针对报表服务部署在服务器端的报表,而 rdlc 是指在本地的一些报表也就是说我们要使用报表不一定要依赖于SQL Server的Reporting Service ,而是可以自主生成一些数据源然后通过报表的方式展现出来如果和rdl比较, rdlc 可以看成是一个轻量级的报表在展现报表的时候我们需要使用到的一个控件叫ReportViewer ,这种控件可以展现 rdl报表,也可以展现 rdlc 报表。
从其属性可以看出,是针对 rdl 报表的,而是针对rdlc 报表的里面设置的参数和内容也不尽相同RDL 和 RDLC 是由称为报表定义语言的XML 架构定义的 这两种文件格式的架构是相同的SQL Server 2005 联机丛书中介绍了这种架构用来处理 .rdlc 文件的 ReportViewer控件忽略RDL 的 元素如果报表定义中包含查询,此控件将不处理它在 SQL Server 2005 Reporting Services中创建的报表(保存为.rdl 文件)可以转换为ReportViewer 控件所使用的客户端报表定义(.rdlc) 文件格式这称为RDL 到 RDLC 转换何时使用远程处理基于服务器的报表功能为实现下列任务提供了方法:集中存储和管理报表、设置策略和确保对报表及文件夹的安全访问、控制处理和分布报表的方式, 以及设置在业务中使用报表的标准方式 Reporting Services可以以单服务器、 分布式和群集配置的方式进行安装如果报表具有下列特征,请考虑使用远程处理:报表将被许多用户访问报表有一个非常复杂的查询或包含大量数据, 从而导致应用程序所在的计算机上的系统资源超载。
报表已发布在报表服务器上,并且希望将其包含在所创建和部署的应用程序中——建议对于包括中小型号报表和数据集的应用程序使用本地处理模式 由于所有数据和报表的处理都是在客户端进行的, 因此,如果您试图处理大型或复杂的报表和查询, 性能可能会降低如果您需要简单的部署策略,其中应用程序的所有部分都在同一台计算机上一起运行,也建议使用本地处理模式本地处理模式的功能不及远程处理强大,它适用于不需要报表服务器的独立应用程序熟悉在远程 SQL Server Reporting Services 报表服务器上运行的服务器报表的用户应注意以下特别之处:1. 客户端报表定义 (.rdlc) 中的报表参数不映射到查询参数客户端报表定义中没有参数输入区域,它接受随后在查询中使用的值2.客户端报表定义不包含嵌入式查询信息您必须定义返回可供报表使用的数据的数据源3.通过 RSClientPrint ActiveX 控件执行的基于浏览器的打印不适用于ReportViewer Web服务器控件中运行的客户端报表定义打印控件是报表服务器功能集的一部分如果您受到这些特别之处的影响,您应该迁移到 Reporting Services 安装或编写提供您所需功能的应用程序代码。
4. ReportViewer Web 服务器控件用于客户端报表定义 (.rdlc) 文件时,不提供内置打印支持虽然可以使用浏览器打印功能,但如果将报表导出为 PDF 或 Excel,然后从 PDF 查看器或Excel 打印,效果会更好3. 参数的使用1. 利用 ReportViewer 控件引用报表建立、发布报表的最终目的还是为了在程序中引用它们,在此我们选择的是最简单的方法——使用 ReportViewer 控件WinForm 环境下的 ReportViewerWinForm 下的 ReportViewer 控件,位于命名空间下, 在 VS2005 中默认会出现在 ToolBar 中,直接将其拖放进窗体即可对其操作一般来说,所有报表都必须设置的参数有以下几个:ProcessingMode:这个属性用来设置 ReportViewer 的数据来源是本地还是远程, 在这里我们设为 Remote;:就是我们前面看到的 TargetServerUrl,即报表服务器的 URL 地址注意这个地址包含了“ ReportServer,比”如;:是 ReportFolder 和 ReportName 的组合,比如 “/Test/,”注意注意千万注意,最开始的那个“ /一”定不能省略!对于实际应用,采用代码来控制ReportViewer 要比设计时设置属性更加常用,下面就是一个简短的例子,概括了这样一个过程:在上面的过程中,先是设置ReportPath (ReportServerUrl 在本示例中已经指定,实际上应该通过的设置字符串来设置)。
然后创建报表参数列表 (这个 params 的名称是在设计报表的时候设置的报表参数,在SQL 语句中通过 @params 进行引用),进而调用 ServerReport的SetParameters 方法,将参数传递给报表紧接着,将报表的ShowParameterPrompts 属性设为 false,即不在 ReportViewer 的头部显示参数输入提示最后执行 RefreshReport()方法, 刷新报表页面 "/Test/Report1";List parameters = new List(); (new ReportParameter("params",);= false;2. 环境下的 ReportViewer微软的统一性工作无疑是相当出色的, Web 下的 ReportViewer 在使用起来与 WinForm 下完全相同,唯一不同的就是控件位于下, 而诸如 ReportParameter 等类也改为此命名空间之下在代码控制报表方面,不需要进行改动即可移植Visual WebGUI下的ReportViewer在项目中, 我们是采用 VWG 来作为程序的框架的。
Gizmox 开发团队也为 ReportViewer 设计了 相应 版 本 , 控 件 位 于 命 名 空 间 下 , 但 要 注 意 , 它 的 属 性 诸 如 ReportParameter 、Process。