第四章 SQL Server 2005的报表设计

第十四章
SQL Server 2005的报表设计
1
SQL Server 2005的报表设计
报表一直是各信息系统所必备的,企业内各级别的人员都有不同的报表
需求,所有信息系统或多或少都有报表的输出。报表解决方案必须满足的一些需求
包括:为用户提供长期应用信息,可以处理信息的硬拷贝版本(当资料经由打印机
输出至纸上称为硬拷贝),可以处理汇总、分析和历史数据,提供一个简单的用户
接口来生成复杂的布局,包括嵌套、累加和条件格式化,提供通过电子邮件、移动
设备和其他电子媒体来发布报表的能力,提供计划安排报表创建过程的功能,提供
一种管理报表系统的手段,可以对内置的功能进行扩展。
Microsoft SQL Server 2005 Reporting Services是一种基于服务器的
解决方案,用于生成从多种关系数据源和多维数据源提取内容的企业报表,发布能
以各种格式查看的报表,以及集中管理安全性和订阅。SQL Server 2005
Reporting Services 提供有支持 Web 的企业级报告功能,以便创建能够从多种
数据源获取内容的报表,以不同格式发布报表,并集中管理安全性和订阅。本章将
介绍Microsoft SQL Server 2005 Reporting Services中报表设计的基本概念,
利用Reporting Services来进行报表创建、报表管理。
2
第一节 报表设计概述
在开始实际创建报表以前,先了解报表设计特性、术语和工具
将有助于创建更好的报表,以及更有效、更高效地管理Reporting
Services。
报表生存周期
.
报表设计的需求方案
内容
关键术语
.
3
(一) 报表生存周期
每个报表都有一个报表生存周期,这个周期包括3个不同的活动:
1.报表创建
这是第一个阶段,指的是定义报表、报表属性、用户与报表的交互方式以
及报表“感官效果”的过程。Reporting Services包含两个主要的创作工具,
其一是 “报表设计器”,该工具运行在Visual Studio内,因而是这两个工具
中比较灵活、功能比较强大的一个,适用于数据处理专业人员;其二是“报表
向导”,该工具自动化了报表创建过程的绝大部分步骤。选择哪个工具取决于
用户对报表的要求和报表创作者的专业知识。
2.报表管理
一旦创建了报表并将它们发布到了报表服务器上,就需要管理它们,并需
要管理文件夹、资源、连接等相关对象。Reporting Services允许从报表服务
器上利用一组标准化工具执行这些管理——SQL Server Management Studio或
报表管理器。
3.报表传输
报表生存周期的最后一项活动主要关注以两种形式将报表传输给终端用户:
或者以书面形式,或者让用户能够访问到这些报表。Reporting Services提供
了访问和传输报表的两种基本方法。
4
(二) 关键术语
在开始实际创建报表以前,先熟悉与报表有关的关键术语也是很重要的。这
里全面地介绍Reporting Services中的各种可用工具。
1.报表定义
这是报表的蓝图,报表定义包含有关报表的查询和布局的信息。通常使用“报表设
计器”或“报表生成器”创建。报表定义包括报表运行时需要提供的查询、格式和其他
设计元素的相关信息。报表使用XML格式保存在带有RDL(Report Definition Language,
报表定义语言)扩展名的文件中。
2.发布的报表
创建 .rdl 文件之后,可以通过以下方法将该文件发布到报表服务器:通过报表设
计器部署报表项目解决方案;使用报表生成器进行保存;或者通过报表管理器或 SQL
Server Management Studio 上载该文件。发布的报表存储在报表服务器数据库中,并
在报表服务器上进行管理。
3.呈现的报表
呈现的报表是经过完全处理的报表,其中包含格式适于查看(例如 HTML)的数据和
布局信息。只有在报表以输出格式呈现之后,才能查看报表。报表呈现由报表服务器执
行。可以通过执行以下操作之一来呈现报表:一是从报表服务器打开发布的报表;二是
订阅报表,这样报表将以指定的输出格式传递到电子邮件收件箱或文件共享位置。
Reporting Services 报表的默认呈现格式是 HTML 4.0。除了 HTML之外,报表还可以
用多种输出格式呈现,其中包括 Excel、XML、PDF、TIFF 和 CSV。
5
关键术语
4.报表快照
这种报表类型包含在特定时间点捕获的数据的报表。报表快照实际上是
一种报表定义,该定义包含的是数据集而不是查询指令,这些报表通常是按
时间表生成的,并保存在报表服务器上。它们有许多种用途,比如维护报表
历史记录,为高度易失的数据创建标准化数据集,以及通过脱机运行它们来
提高性能。
5.参数化的报表
可以使用参数来完成选择报表数据的查询,筛选查询返回的结果集,或
控制报表的显示和隐藏部分的布局属性。还可以指定动态参数,用于填充一
系列相关的下拉参数列表。
6.报表模型
报表模型是对用于生成即席报表的基础数据库的业务性说明。报表模型
提供的附加信息可以将数据库表和视图与业务用户可以理解的一些概念关联
起来。
报表模型是在模型设计器中创建的,然后再发布到报表服务器。随后在
报表生成器中,报表模型即可用作生成协作性即席报表的基础。
6
关键术语
7.链接的报表
链接报表是提供对现有报表的访问点的报表服务器项。从概念上说,它与用于运
行程序或打开文件的程序快捷方式类似。链接报表是从现有报表派生的,保留原始报
表的报表定义。链接报表始终会继承原始报表的报表布局和数据源属性。所有其他属
性和设置都可以与原始报表不同,其中包括安全性、参数、位置、订阅和计划。
8.渲染的报表
为了让发布的报表是可查看的,这些报表必须经过报表服务器处理。处理后的结
果报表就称为渲染的报表,并以一种适合查看的格式包含数据和布局信息。报表的渲
染是通过打开报表服务器上的已发布报表,或者通过渲染和发送报表到收件箱或共享
文件夹以回复订阅来进行的。渲染的报表不能被编辑和存回到报表服务器上。
9.报表服务器管理员
文档中使用此术语来说明具有访问报表服务器所有设置和内容的提升特权的用户。
如果使用默认的角色,报表服务器管理员通常是同时分配了“内容管理员”角色和“
系统管理员”角色的用户。即使没有为本地管理员定义角色分配,本地管理员也具有
提升的权限。
10.文件夹分级结构/报表服务器文件夹命名空间
文件夹分级结构/报表服务器文件夹命名空间可以交换地使用。这个术语指的是
标识所有报表、文件夹、模型、共享数据源对象以及报表服务器上存储和管理的各种
资源的命名空间。报表服务器文件夹命名空间是一种包含预定义文件夹和用户定义文
件夹的层次结构。命名空间唯一标识存储在报表服务器中的报表和其他项。它提供了
在 URL 中指定报表的寻址方案。
7
(三) 报表设计的需求方案内容
1.创建报表
正如Excel或者Word需要一个包含数据及与这些应用程序相关的信息的
文件格式(.xls或.Doc)一样,报表解决方案也需要一个报表定义文件。
Microsoft Reporting Services使用报表定义语言(Report Definition
Language,(RDL))文件来履行这种职责。RDL文件是遵循公共可用框架的
XML文件。为了创建与Reporting Services兼容的报表,只需要一个可以创
建XML(RDL)文件的工具。甚至可以坚持使用记事本来编写一个报表定义文
件,但这并不是创建报表的标准方法。Microsoft SQL Server 2005允许在
Microsoft SQL Server Business Intelligence Development Studio
(BIDs)中通过经典的设计界面来创建报表项目。
2.部署报表
一旦报表定义完成,就应该放到某地使应用程序和(或者)用户可以找
到并请求处理它。Reporting Services包括将报表保存在集中、安全的存储
库的体系架构。
可以通过三种不同的方法部署报表:通过BIDS本身;通过将RDL文件上
传到报表管理器;或者通过脚本化上传操作并使用rs.exe工具来执行这些脚
本。
8
报表设计的需求方案内容
3.访问报表
一旦部署好报表,就应该有某个机制允许应用程序和(或)用户找到他们需要的报表
并请求运行这些报表。Reporting Services包括适合管理员和用户的一个Web应用程序与
一个报表管理器。对于通过应用程序的非人为访问,Reporting Services包括了许多应用
程序编程接口(API)。
4.发布报表
报表处理过程输出的默认格式是HTML4.0。对于需要不同格式输出的用户和(或)应用
程序,Reporting Services提供了一种导出特性。Reporting Services包括对许多流行格
式的“开箱即用”支持,例如Adobe Acrobat(PDF),Microsoft Excel和HTML。此外,
Reporting Services默认包括的功能可将渲染过的报表发布到共享文件或将它们通过电子
邮件发送。
5.扩展Reporting Services
Reporting Services是一个可以扩展的平台,它允许在很多地方加入自定义的代码:
安全、数据源访问、渲染和发布。这些自定义的代码实际上是注册到Reporting Services
的.NET程序集。
6.管理Reporting Services
正如前文所提到的,企业报表的目标之一是以任何企业用户所需要的使用格式,在他
们需要获取报表的地点提供报表。当然,并不是所有用户都应该或能够访问所有公司报表。
因此,Reporting Services提供了管理报表环境的功能。企业报表的一个重要特性是它能
够对报表处理进行计划安排。例如,一个管理员可能需要在一些进程完成之后进行报表的
处理,或者防止用户在日常工作时间处理大型报表。
9
第二节 报表设计环境介绍
SQL Server 2005 Reporting Services 是基于服务器的报表平台,
可以用来创建和管理包含关系数据源和多维数据源中的数据的表格、矩阵、图
形和自由格式的报表。可以通过基于万维网的连接来查看和管理所创建的报表。
1.Reporting Services 体系结构
图14.1
Reporting Services 体系结构
10
报表设计环境介绍
在Reporting Services体系结构中关键构件和工具包括:
报表管理器;
报表服务器;
报表设计器;
报表生成器;
模型设计器;
Reporting Services配置工具;
报表服务器命令提示符实用程序。
此外,Reporting Services还支持各种编程接口,其中包括Windows管理规范(WMI)、简单对象访问协
议(SOAP)和URL端点。
(1)报表管理器
报表管理器是一个基于Web并运行在Internet Explorer内的访问与管理工具。“报表管理器”
可以用来通过HTTP管理远程报表服务器,也可以用来查看和导航报表。可以使用报表管理器执行以下任
务:
查看、搜索和订阅报表
创建、保护和维护文件夹层次结构,以便组织服务器上的项。
配置站点属性和默认设置。还可以确定“我的报表”的可用性,以支持在个人工作区中发布和创建报
表。
配置基于角色的安全性,确定对项和操作的访问权限。
配置报表执行属性、报表历史记录和报表参数。
创建报表模型,使用这些报表模型可以连接到 SQL Server Analysis Services 数据源或 SQL
Server 关系数据源,并从这些数据源中检索数据。
创建共享计划和共享数据源,以提高计划和数据源连接的可管理性。
创建可以将报表展开为大型收件人列表的数据驱动订阅。
创建链接报表,以便按不同方式重用现有报表和重新确定其用途。
启动报表生成器,这是一个用于创建和修改模型驱动的即席报表的报表设计工具。
11
报表设计环境介绍
(2)报表服务器
“报表服务器”是Reporting Services的主要处理构件。报表服务器的主要功能
是处理报表,并让报表变成可以按请求或通过订阅进行访问。报表服务器也是管理和
维护各种报表的地方。
(3)报表生成器
“报表生成器”是一个特别的报表创作工具,适用于需要简单、有效地生成特殊
报表而又不必了解数据源结构的终端用户。终端用户可以基于一组叫做报表模型的模
板快速生成和预览报表。“报表生成器”采用了一个容易使用的拖放式界面。创建报
表不一定非使用Visual Studio不可,但由于“报表生成器”报表是使用RDL保存的,
因此以后可以使用Visual Studio编辑和修改它们。
(4)报表设计器
报表设计器是一组宿主在 Microsoft Visual Studio 环境中的设计图面和图形
工具。报表设计器提供了“数据”、“布局”和“预览”等选项卡式窗口,使用这些
窗口可以采用交互方式设计报表。可以添加数据集以适应新的报表设计思路,或基于
预览结果调整报表布局。除了“数据”、“布局”和“预览”设计图面,报表设计器
还提供了查询生成器、表达式编辑器和向导,可以帮助放置图像或按步骤引导创建简
单的报表。
报表设计器可以通过 Business Intelligence Development Studio 进行访问。
若要使用报表设计器,选择一个报表服务器项目或报表服务器项目向导模板,随后将
打开设计器。
12
报表设计环境介绍
(5)模型设计器
一种用于定义、编辑和发布报表生成器中使用的报表模型的工具。报表模
型是对基础数据库的业务性说明。它对实体、属性和关系(角色)方面的数据
进行了说明,报表生成器用户随后可以使用这些数据来帮助生成即席报表 。模
型以最终用户所熟悉的可以理解的业务术语说明基础数据库。可以启动模型设
计器并通过使用数据源直接开始设计模型,或者使用预定义的一组规则自动生
成模型。模型设计器只能生成基于 SQL Server 数据库的模型。
(6)Reporting Services配置管理器
使用 Reporting Services 配置工具可以配置 SQL Server 2005
Reporting Services 的安装。如果使用“仅文件”安装选项安装报表服务器,
必须使用此工具来配置服务器,否则服务器将不可用。如果使用默认配置安装
选项安装报表服务器,可以使用此工具来验证或修改在安装过程中指定的设置。
如果从以前的版本升级,可以使用此工具将报表服务器数据库升级为新格式。
13
报表设计环境介绍
(7)报表服务器命令提示符实用程序
有3个可以用来管理报表服务器的命令行实用程序。
Rsconfig 配置工具
用来配置和管理与报表服务器数据库的报表服务器连接。还可以使
用该工具来指定用于无人参与报表处理的用户帐户。
Rskeymgmt 实用工具
是一个加密密钥管理工具。使用该工具可以备份、应用、重新创建
对称密钥。还可以使用此工具将报表服务器实例附加到共享的报表服务
器数据库。可以在数据库恢复操作中使用 Rskeymgmt。通过应用对称密
钥的备份副本,可以在新安装中重用现有数据库。如果无法恢复密钥,
此工具提供了一种删除不再使用的加密内容的方法。
Rs 实用工具
是可以用来执行脚本操作的脚本主机。使用此工具可以运行
Microsoft Visual Basic .NET 脚本,在报表服务器数据库之间复制数
据、发布报表、在报表服务器数据库中创建项等。
14
报表设计环境介绍
2.Reporting Services方案
(1)企业报表
许多公司通过报表软件向用户分发信息,以便于用户利用报表进行决策、发现机会
或分析威胁。Reporting Services 具有一整套现成的工具和服务,可帮助创建、部署
和管理单位的报表。尽管可以通过编程方式操作报表,但如果打算使用现成的
Reporting Services,则不需要进行任何编程操作。创作和管理工具包括报表设计器、
SQL Server Management Studio、报表管理器和 Reporting Services 配置工具。业务
用户可以使用报表管理器、SharePoint Web 部件或 Web 浏览器来按需查看报表,或者
订阅通过电子邮件传递的报表。
(2)即席报表
处理业务数据的用户经常需要能够即席创建和修改报表。Reporting Services 包
括报表生成器,这一工具允许从报表服务器选择报表模板和报表模型、将数据字段和图
形元素拖到设计图面上以创建基本报表、将报表定义文件保存到服务器以及修改报表。
即席报表需要使用由模型设计器创建并随后发布到报表服务器中以供整个单位使用的预
定义报表模型。
(3)嵌入报表
如果是开发人员,可以使用 Reporting Services 在应用程序中提供报表功能。对
于某些应用程序,通过添加报表可以为应用程序跟踪、创建或监视的数据提供一种显示
方法,从而完善功能集。使用报表生成器可以基于在应用程序中提供的数据源或允许公
开访问的数据源创建报表。使用 API 可以为要包含在应用程序中的任何内置报表服务
器功能定义访问权限和添加支持。作为应用程序部署的一部分,应同时包括报表服务器
以及包含报表及其他元数据的报表服务器数据库。
15
报表设计环境介绍
(4)门户集成
由于报表可以容纳和显示来自于多种来源的数据,因此许多单位都使用 Reporting
Services 的交互式报表功能在门户应用程序中分发表格数据或图表数据。通过在单个自由
格式的报表布局中嵌入多个报表、图表和数据驱动图像,可以在门户页中承载报表或创建
一个模仿面板样式的 Web 应用程序的报表。当需要将表格数据或图表数据合并到业务应用
程序中时,可以考虑添加一个报表。
(5)Internet 报表
通过将报表服务器部署在面向 Internet 的 Web 服务器上,可以使报表供远程或位
于区域办事处的员工访问。请注意,Internet 报表部署通常需要创建自定义安全扩展插件
以支持基于窗体的身份验证。要求具有 Web 安全和 Internet 部署方面的专业知识以及编
写必要的扩展插件所需的编程技能。
(6)生成自定义报表设计和报表管理工具
Reporting Services 附带的工具和应用程序所基于的编程接口对所有用户都是可用
的。这意味着可以使用自己创建的自定义工具集来替换 Reporting Services 中的应用程
序和工具。例如,如果需要为用于报表设计器的Visual Studio创作环境提供一个替代环境,
可以开发一个自定义报表创作工具来替换它。若要生成自定义Web门户或报表管理工具,请
查看API以了解必须支持的报表服务器管理功能。Reporting Services带有一个Windows
Management Instrumentation(WMI)提供程序,可以使用该程序来开发基于Windows的服
务器管理工具。
(7)扩展Reporting Services功能
Reporting Services采用了可扩展的设计。可以创建自定义扩展插件来支持其他类型
的数据源、传递方法、安全模型和报表项。创建自定义扩展插件的难度可能会因要创建的
扩展插件类型和要支持的功能的不同而迥然相异。数据处理扩展插件通常最容易创建,而
要支持整个报表架构的呈现扩展插件就很难创建。
16
第三节 设计报表
报表由三个主要区域构成:页眉、页脚和表体。页眉和页脚分别在报
表每一页的顶部和底部重复相同的内容。可以在页眉和页脚中放置图像、文本框
和线条等报表项。表体中包含报表数据。除了可放入页眉或页脚的报表项之外,
还可以在表体的任意位置放置数据区域(用于显示数据集中的数据)。
可以在报表中随意放置报表项。在Reporting Services中,放置报表项
时可选择的位置不再仅限于“带区”数据区域。可以并列放置具有不同数据集的
数据区域。某些报表项还可以包含其他报表项。对于数据区域而言,这意味着可
以将数据组嵌套到其他数据组内。
创建报表的方法
A
B
Title
布局、测试并优化
报表
D
C
17
设置一个报表
筛选数据
(一) 创建报表的方法
1.使用报表生成器创建报表
若要创建即席报表,使用报表生成器。报表生成器是一种ClickOnce Windows窗体应用程
序,该程序由用户从报表服务器下载到其本地计算机。用户通过将字段从预定义的报表模型拖
到预设计的报表布局模板上来创建报表。用户可以设置数据的格式,对数据进行分组和排序,
还可以筛选数据。此外,用户还可以编辑或定义公式。使用报表生成器时,用户不必了解数据
源的基础结构,也不必了解任何复杂的计算语言。他们只需熟悉其数据源中的数据即可。
使用报表生成器,用户可以创建表、矩阵或图表报表。开始时,只需选择一个报表布局模
板,再将字段拖放到设计区域中即可。可以通过筛选、分组和排序或使用公式来操作数据。此
外,还可以设置报表格式,以便使用颜色、字体、线条和不同的格式。将报表保存到报表服务
器中,然后就可以像管理服务器上任何其他报表一样来管理这些报表。或者,可以将报表以不
同的文件类型(例如 TIFF、PDF、Excel 或 HTML 文件)导出到本地计算机。详细操作请参见
Microsoft SQL Server 2005联机丛书。
2.使用报表设计器创建报表
若要创建更复杂的报表,使用报表设计器。报表设计器支持各种各样的报表创作功能,其
中包括自定义和可编程功能。在报表设计器中创建的报表既可以是自由格式的,也可以是高度
结构化的;既可以是简单的,也可以是极为复杂的。可以完全控制布局,并可以添加高级功能,
如表达式、通过报表运行的自定义程序集以及用于深化或链接到相关数据的报表交互功能。还
可以创建由简单表、图像或列表组成的基本报表。
在报表设计器中,创建报表的方法有三种。可以创建空白报表,然后手动添加查询和布局;
也可以使用报表向导,根据提供的信息自动报表;还可以从 Microsoft Access 导入现有的报
表。
18
(二) 设置一个报表
创建一个报表的过程包括一些常识性的步骤:首先创建一个SQL Server
Business Intelligence Development Studio(BIDS)项目来包括与报表相关的文
件。然后指示BIDS在报表中显示哪些数据。在此后,要定义报表中实际需要哪些数
据,最后,要对报表进行布局安排、测试和部署。
1.创建一个报表项目
(1)从【开始】菜单中,依次选择【所有程序】|【Microsoft SQL Server 2005】
|【SQL Server Business Intelligence Development Studio】。在【文件】菜单
中,选择【新建】|【项目】。如图14.2所示。
图14.2 打开【新建项目】菜单
19
设置一个报表
(2)【新建项目】对话框随之出现。在其中的【项目类型】面板中,选择【商业
智能项目】。在【模板】面板中,选择【报表服务器项目】。为这个项目选择一个
名称和目标位置。这里分别用了“StudentReport”和“StudentReport”,对话框
应该如图14.3所示。
图14.3选择项目名称和位置
20
图14.4 【新建项】
设置一个报表
(3)单击【确定】按钮创建项目。
(4)由于报表项目十分简单,【解决方案资源管理器】中几乎不显示任何内容。可
以在【视图】菜单中选择【解决方案资源管理器】,从而打开【解决方案资源管理
器】。
(5)右键单击【解决方案资源管理器】中的【报表】文件夹并在弹出菜单中选择
【添加】|【新建项】添加第一个空报表。如图14.4所示。
图14.4 【新建项】
21
设置一个报表
(6)【添加新项】对话框将会出现,如图14.5所示。在【模板】面板中选择
【报表】并为报表键入“StudentReport1.rdl”作为名称。
(7)单击【添加】按钮确认这个过程。BIDS会在【报表设计器】窗口中显示
一个空的新创建的报表,如图14.6所示。
图14.6 空白的新建报表
图14. 5 【添加新项】对话框
22
设置一个报表
2.创建一个共享数据源
(1)为了设计一个报表,需要告诉BIDS要使用哪个数据源。在【解决方案资源管理器】中右键
单击【共享数据源】文件夹并在弹出菜单中选择【添加新数据源】。【共享数据源】窗口随之
出现。
(2)键入“StudentSource1”作为数据源的名称。
(3)可以键入连接串,单击【编辑】按钮可以转到【连接属性】对话框,如图14.7所示。在输
入框中填入与系统相符的信息。对于本示例,要设置连接到“StudentSource1”示例数据库的
连接串。
(4)用户可以通过单击相应的按钮来设置高级选项。测试连接也是一样。单击【确定】按钮后,
可以检查在【共享数据源】窗口中生成的连接串,如图14.8所示。连接串中没有显示认证信息。
单击【凭据】选项卡查看可用的选项。
(5)单击【确定】按钮来创建这个数据源。数据源将出现在【共享数据源】文件夹中。
图14.7 【连接属性】对话框
图14.8
23
【共享数据源】窗口
设置一个报表
3.定义一个数据集
(1)必须让BIDS知道自己希望在报表中显示什么数据。为此,至少需要创建一
个数据集,有时会多于一个。检查【数据】选项卡是否在BIDS的中心区域可见。
打开【数据集】下拉列表并选择【<新建数据集…>】。
(2)【数据集】窗口会显示出来,如图14.9所示。
图14.9 【数据集】窗口
24
设置一个报表
(3)键入“student_course”作为数据集的名称(这个数据集将在最后收集并包括学生成绩
数据)。
(4)再次检查在【数据源】下拉列表中选择的共享数据源并且检查其【命令类型】是
“Text”。注意,另一个可用的选项是使用“stored procedure”来代替“Text”。
(5)可以使用更高级的查询设计器来创建数据集表达式。现在,在【查询字符串】中键入
这个简单的查询:
select SC_id,Student_id,Course_id,Course_id,Course_year from student_course
(6)单击【确定】按钮接受查询。数据集查询将出现在【数据】选项卡上,如图14.10所示。
图14.10 数据集查询
25
设置一个报表
(7)可以单击【执行】按钮(有红色感叹号的按钮)来测试并检查查询结果。
(8)不要对空白的屏幕感到困惑。这是通用查询设计器。可以通过【通用查询设
计器】工具条按钮来切换打开或关闭这个设计器,如图14.11所示。
通过单击这个按钮,可以工作在完全查询设计器中,如图14.12所示,或者工
作在开始时那个简单的设计器中。
图14.12 在查询设计器中工作
26
第三节布局、测试并优化报表
1.布局报表
(1)在报表打开状态下,切换到【布局】选项卡。将看到一个有点阵和网格标
记的矩形。
(2)单击【解决方案资源管理器】上的小图钉隐藏面板,这样一来,就可以在
报表设计器中有更多的工作区域。
(3)在【视图】菜单中,选择【工具箱】。
(4)从工具箱中拖拽一个【文本框】到网格界面上。在其中键入【学生成绩
表】,调整文本框的大小来容纳更多的文本,并调整格式,如图14.13所示。
(5)创建一个放置报表数据的区域。从工具箱中拖动一个“表”控件并将其拽
到设计界面,如图14.14所示。不要担心究竟拖拽到哪里,因为这个表会在宽度
上填满整个区域。这个表将显示三行共9个单元格。注意灰色的头以及表的左侧
边框。它们将在取消选定这个控件时消失,并在重新选择它们的时候显示出来。
灰色的区域将帮助执行特定的操作,例如选择整个列、一整行或者整张表。
(6)选择【视图】菜单上的【数据集】来显示数据集面板。然后展开
“Student_course”节点。
27
布局、测试并优化报表
图14.13 调整文本框大小
图14.14 将表控件拖到设计界面
28
布局、测试并优化报表
(7)拖动“SC_id”列并将其拽到表格中间一行(“详细信息”行)的最左侧单元
格中。此时单元格显示了一个表达式。有关表达式的内容将在随后的??步骤详
细介绍。
(8)对“Student_id”及“Course_id”列重复这个拖动的过程,分别将它们填
充到中间和右侧的详细信息单元格中。不要担心“FirstName”和“MiddleName”
列,在随后构建一个表达式返回完整成绩单时会用到它们。
(9)需要一个额外的列和更多的空间来放置Course_year列。为此,需要通过单
击并拖动SC_id和Student_id列头之间的线来调窄SC_id列。注意,在鼠标指针处
于这条线上方的时候,会显示一个双向的箭头。注意观察,这个表也会相应地变
窄。
(10)右键单击“JobTitle”列头并在弹出菜单中选择【在右侧插入列】,在
JobTitle列的右侧插入一列。将“Course_year”列拖放到这个新建的详细信息
单元格中。
(11)如果希望在纸上打印出这个报表,则需要控制区域的宽度。重新调窄
“Course_year”列的宽度并拖动设计区域边界到合适的宽度。究竟多少宽度合
适?可以查看下文题为【决定合适的设计区域宽度】的补充内容。
29
布局、测试并优化报表
2.预览报表
(1)在放置基本的布局之后,预览一下报表。单击设计视图中的【预览】选项卡。一个报表已
经生成的消息将在报表处理结果显示之前显示出来。如图14.15所示。
(2)为了以打印格式预览报表,可以单击【打印编辑】工具条按钮。【打印编辑】按钮是一个
触发按钮;因此,即使切换了选项卡,它会仍然处于开启状态直到再次将其切换到关闭状态。
(3)返回【布局】选项卡中继续编辑报表。
在【预览】选项卡中,可以打印、打印预览并输出报表结果。
图14.15 预览报表
30
布局、测试并优化报表
3.在表的单元格中编辑文本
(1)右键单击单元格并在弹出菜单中选择【属性】来显示【文本框属性】窗口,如图14.16所
示。在这里可以编辑【值】下拉列表。
(2)右键单击单元格并选择【表达式】打开【编辑表达式】窗口,如图14.17所示。在这里可
以编辑表达式。
(3)按【F4】键或单击属性窗口工具条按钮显示属性窗口(或者如果属性窗口可见, 就单击
它)。在属性窗口中,可以编辑【值】下拉列表。
图14.17 【编辑表达式】窗口
图14.16 在【文本框属性】窗口中进行编辑
31
布局、测试并优化报表
4.保存报表
(1)单击含有Course_year列值的单元格(中间一行最右侧的单元格)。
(2)编辑表达式的格式使其更可读。由于属性窗口会提供更多的帮助选项,因此,在这里
选择属性窗口和不选择属性窗口有很重要的不同。右键单击这个单元格并选择【属性】。
(3)导航到【格式】选项卡,如图14.18所示。
(4)单击【省略号】(…)按钮打开【选择格式】窗口。如果单击函数按钮,会出现【编
辑表达式】窗口。如果在属性窗口中编辑格式化属性也会出现同样的结果。
(5)选择【日期】并单击【确定】按钮。注意,在【格式代码】文本框中的值是“D”。
Reporting Services使用的格式代码是.NET Famework格式类型。
(6)单击【确定】按钮接受对文本框属性的编辑。预览报表以检查到目前为止所做的更改。
(7)保存报表。
图14.18 【格式】选项卡
32
布局、测试并优化报表
5.编辑表达式
(1)选择“Student_id”列值(中间一行的从左数第二个单元格)。下面将更改其中的表
达式来显示学生学号和课程号。
(2)右键单击这个单元格并选择【表达式】。【编辑表达式】窗口将打开。在
Reporting Services中的表达式应该用visual Basic.NET语法编写。此外,可以在单元
格中直接编辑表达式而不必打开任何对话框。第二种方法非常适合少量的编辑,例如添
加一个空格或诸如此类的编辑;但在需要更高级的编辑时,【编辑表达式】窗口更实用。
(3)当前的表达式值是:
=Fields!Student_id.Value
在这个表达式中,要注意一些元素:
等号(=):等号表示这个符号之后的文本是表达式而不是纯文本。
Fields!:表达式的Fields!部分表示Student_id是列集合中的一个元素。
Value:每一个RDL对象都有一个编辑表达式时可以访问的属性集合。在【编辑表达式】
对话框中编辑表达式的时候,“智能感知”会针对每个项类型提供一个属性列表。
(4)由于希望显示一些额外的列,所以像下面这样编辑表达式:
=Fields!Student_id.Value & Fields!course_id.Value
(5)单击【确定】按钮保存表达式。预览报表以检查表达式的结果。
(6)预览报表,保存报表。
33
布局、测试并优化报表
6.加入计数、合计
(1)假设希望加入一个显示学生选课课程总数(SC_id)的计数,首先显
示【数据集】面板来查看列。展开“student_course”节点。
(2)拖动“SC_id”节点并将其拽到最下面一行的最右侧单元格中,它在
SC-id的详细单元格的下方。
(3)注意,单元格中的结果表达式如下所示:
=count(Fields!SC_id.Value)
(注:计数)
或 =sum(Fields!SC_id.Value)
(注:合计)
(4)这个项是全新的,因此其格式属性是空。这意味着合计显示的数据
格式和上面的行不一样。为了更正格式,打开【属性】窗口并在【格式】
属性中简单地键入值“C”即可。
(5)保存报表。
34
布局、测试并优化报表
7.排序结果
目前所做的报表显示了没有顺序的记录。由于学生课程成绩信息是这个报表所涉及的
内容,因此,很自然地想到对数据进行排序。
(1)单击表中的任何一处来显示表的灰色边框。
(2)右键单击表边框的左上角并选择【属性】。
(3)在【表属性】窗口中,导航到【排序】选项卡。
(4)在【排序方式】格中,在表达式列的下拉列表中选择“=Fields!Student_id.Value”列。
注意,加号会加到表达式的前端。
(5)在【方向】列的下拉列表中选择“Ascending”,见图14.19。
(6)单击【确定】按钮来接受这些更改。保存报表并在【预览】选项卡中检查结果。完成之
后,再次切换到【布局】选项卡。
图14.19 【表属性】窗口
35
布局、测试并优化报表
8.让用户排序结果
虽然可以设计报表以不同的排序顺序来显示数据,但若让用户能够自由更
改排序表达式和排序方向将使用户查看报表更方便。
(1)右键单击表头中的“Student_id”文本单元格并在弹出菜单中选择【属
性】。
(2)导航到【交互式排序】选项卡。
(3)选择【将交互式排序操作添加到此文本框】复选框。根据图14.20来选择
余下的值。
(4)单击【确定】按钮接受所做的更改。保存报表并在【预览】选项卡中检查
结果。
(5)注意Student_id选项卡边的双箭头。单击它的时候,表格内容会相应地进
行排序。在其他列的头上重复步骤(1)到(5),以在这些列上允许交互性排
序。
(6)保存报表并在【预览】选项卡中检查结果。完成后切换回【布局】选项卡。
36
布局、测试并优化报表
图14.20 选择其他属性值
37
(四) 筛选数据
大多数报表都需要用户提供一些应用于数据的筛选器。因此,需要为用户
提供一种方法来指示应该应用什么样的数据筛选器。实现这个目的的工具是报表参
数。下面将创建一个参数依据学生的Student_id来筛选学生数据。
1.导航到【数据】选项卡。
2.编辑查询加入一个使用参数的WHERE子句,如图14.21所示。可以将参数命名为@
prmTerritory。
图14.21 加入WHERE子句
38
筛选数据
3.在【报表】菜单上选择【报表参数】。
4.可以看出,报表设计器通过解析数据集查询加入了一个参数。如图14.22所示。
5.可以编辑这个参数使其对用户更加友好。这里忽略不再编辑。单击【确定】按钮关
闭【报表参数】窗口,并预览报表。
6.在标签名为“prmTerritory”的文本框中输入“11001”并单击【查看报表】按钮。
报表会执行并显示出图14.23所示结果。
图14.22 【报表参数】窗口
图14.23 执行结果
39
筛选数据
要求用户记住并准确键入所有Student_id名称并不是最佳方案。应该让
用户从一个可用的territories列表中选择Student_id,借此为他们提供一些帮
助。为了实现这个目标,需要创建一个新的数据集并通过它的输出来提供参数值。
7.导航到【数据】选项卡并保存报表。
8.打开【数据集】下拉列表并选择【<新建数据集…>】。
9.编辑【名称】和【查询字符串】值分别为“student_id”和“select
student_id from student”,完成之后单击【确定】按钮。
10.若要将第9步中名为“student_id”的查询结果(或数据集)用作参数
值, 需要编辑【参数】属性。在【报表】菜单中,选择【报表参数】。
11.编辑【参数】属性使其与图14.24一致(注意,【提示】和【默认值】也被
编辑了)。
12.单击【确定】按钮接受更改。
13.保存报表并预览它。注意,报表没有等待用户从下拉列表中选择值就被处理
了。这是因为参数属性中声明了一个默认值。可以通过将默认值设置为空来改变
这种行为。
14.在“Territory To Show”下拉列表中选择一个不同的territory并单击【查
看报表】按钮以新的筛选值处理报表,如图14.25所示。
40
筛选数据
图14.24 编辑参数属性
图14.25 筛选结果
41
第四节实训:SQL Server 2005的报表设计
1.实训任务
在14.3介绍了利用报表设计器创建空白报表,然后手动添加查询和布局。本节
将向用户介绍使用报表向导,根据提供的信息自动创建学生基本信息报表,指导用户完成
上机操作。
2.实训指导
操作步骤:
(1)从【开始】|【程序】|【Microsoft SQL Server 2005】中,启动Business
Intelligence Development Studio(BIDS)。
(2)选择【文件】|【新建项目】,打开【新建项目】对话框。
(3)确认左窗格中的【商业智能项目】已被选中,右窗格中的【报表服务器项目向导】
也已被选中。见图14.26所示。
图14.26 【新建项目】选项
42
实训:SQL Server 2005的报表设计
(4)在【名称】文本框中,键入
students_information,接受默认的【位置】
和【解决方案名称】,然后单击【确定】按
钮。
【报表向导】自动启动。
(5)在【欢迎使用报表向导】页面上,单
击【下一步】按钮转到【选择数据源】对话
框。选中【新建数据源】单选框,并确认类
型设置为Microsoft SQL Server。然后,单
击【编辑】按钮打开【连接属性】对话框。
(6)在【服务器名】文本框中,键人
localhost;或者使用下拉按钮选取一个服
务器。
(7)在【登录到服务器】中,确认【使用
Windows身份验证】单选框被选中。
(8)在【连接到一个数据库】中,确认
【选择或输入一个数据库名】单选框已被选
中,并选择student数据库。【测试连接】
按钮可以用来确认服务器和数据库的连接是
否已建成。如图14.27所示。
43
图14.27 【连接属性】设置
实训:SQL Server 2005的报表设计
(9)单击【确定】按钮返回到【选择数据源】对话框。确认本地服务器和Student
数据库已出现在连接字符串中。单击【下一步】按钮。
(10)在【设计查询】页面中,可以使用【查询生成器】设计查询。本例查询学生
家庭所在地。为此,键入下列代码:
SELECT Student_id,Student_name,Student_home FROM Students
如图14.28所示。
(11)单击【下一步】按钮进入【选择报表类型】页面,如图14.29所示。确认
【表格格式】单选框被选中,然后单 击【下一步】按钮。
图14.29 【报表类型】设置
图14.28 【查询语句】输入
44
实训:SQL Server 2005的报表设计
(12)在【设计表】页面中,应该在页面左边的【可用字段】中看到从Student
数据库表中选定的3个字段。还应该看到3个按钮:【页面】、【组】和【详细
信息】,它们用来指定要添加的字段;第4个按钮是【删除】,用来删除字段。
在本例中,想按学生家庭所在地分组学生信息。选取Student_home字段,然后
或者单击【组】按钮,或者将它拖到【组】框中。将Student_id和
Student_name字段添加到【详细信息】框中。如图14.30所示。通过反白显示字
段并进行拖动,可以修改它们的顺序。单击【下一步】按钮。
图14.30 【数据分组】设置
45
实训:SQL Server 2005的报表设计
(13)在【选择表布局】页面中,可以选择多个选项,其中包括是否【启用明
细】,以及是否【包括小计】。在本例中,选中【包括小计】简单地单击【下
一步】按钮。如图14.31所示。
(14)在【选择表样式】页面中,选择【海洋】。单击【下一步】按钮。如图
14.32所示。
图14.31 选择表布局
图14.32 选择表样式
46
实训:SQL Server 2005的报表设计
(15)在【选择部署位置】对话框中,接受报表服务器的默认位置和服务器上部
署文件夹的默认位置。单击【下一步】按钮。
(16)在【完成向导】页面上,将报表命名为student address report。复查
【报表摘要】的内容以确认各项是正确的。标记【预览报表】复选框,然后单击
【完成】按钮。
(17)报表处理完毕,一个预览出现在BIDS中。还应该注意到,在【解决方案资
源管理器】中,报表已经添加到student address report下的【报表】文件夹中。
如图14.33所示。
图14.33 使用报表向导生成的报表窗口
47
本章小结
本章介绍了Reporting Services的体系结构及其重要组件。展示
了基本的报表创作过程:创建报表,设置数据源和数据查询,创建并编辑报
表布局,在报表中加入代码以执行共享的操作,以及添加一些交互功能。开
发人员和需要较复杂报表的用户可以使用“报表设计器”及其功能强大的
“报表向导”。
SQL Server 2005联机丛书包括有关这些主题的详细信息。其他功能包
括:列和矩阵数据区域、分组、表达式范围和级联参数;如何使用可见性特
性、图表、子报表、语言用法以及通过Analysis Services(SQL Server分
析服务)时行报表处理。
48
习
题
理论题
1.创建一个报表的过程包括那些常识性的步骤?
2.在Microsoft SQL Server 2005 Reporting Services体系结构中报表设计器
起怎样的作用?
3.创建一个报表服务器项目的步骤是什么?创建的方法有那些?请分别说明。
操作题
请利用报表设计器创建空白报表,然后手动添加查询,创建一个学生
成绩报表,要求按班级进行统计学生成绩(提示:在创建报表时要用到的数据
表有:学生信息数据表(Students)、班级信息数据表(Classes)、课程信息
数据表(Courses)、学生-课程记录数据表(Student_course))。
49
本章结束
50