`

Microsoft SQL Reporting Services 教程4: 在报表中使用动态查询

阅读更多
1:创建新报表  
在开始使用动态查询之前,您必须首先创建一个带有报表的报表服务器项目,然后向该项目中添加一个报表项。
创建报表服务器项目
在 Business Intelligence Development Studio 中,报表包含在报表服务器项目中。
创建新的报表服务器项目
1.        单击“开始”,依次指向“程序”和 Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。
2.        在“文件”菜单上,指向“新建”,再单击“项目”。
3.        在“项目类型”列表中,单击“商业智能项目”。
4.        在“模板”列表中,单击“报表服务器项目”。
5.        在“名称”中,键入 Dynamic Query Tutorial。
6.        单击“确定”以创建项目。
创建报表
创建报表定义文件
1.        在解决方案资源管理器中,右键单击“报表”,指向“添加”,再单击“新建项”。
注意:

如果未显示解决方案资源管理器窗口,请在“视图”菜单中单击解决方案资源管理器。
2.        在“添加新项”中,单击“报表”。
3.        在“名称”中,键入 Employee List.rdl,再单击“添加”。此时,系统将打开一个包含“数据”、“布局”和“预览”选项卡的视图。这是 Business Intelligence Development Studio 的报表设计器组件。系统将在“数据”视图中打开此报表。

2:创建 Employees 数据集  
该报告将根据名为 Employees 的数据集显示员工列表。在 Reporting Services 中,数据集可以指定数据源连接和检索数据的查询。
创建数据源和数据集
创建数据源和数据集
1.        在数据视图顶部的“数据集”中,选择“新建数据集”。此时,将显示“数据源”对话框。
2.        在“名称”中,键入 AdventureWorks。
3.        在“类型”中,选择 Microsoft SQL Server。
4.        在“连接字符串”中,键入以下内容:
Data source=(local); initial catalog=AdventureWorks
注意:

此连接字符串假定 Business Intelligence Development Studio、报表服务器和 AdventureWorks 数据库都安装在本地计算机上,并且您有权登录 AdventureWorks 数据库。有关连接字符串的详细信息,请参阅连接数据源和数据源(“常规”选项卡,报表设计器)。

5.        单击“确定”。AdventureWorks 将添加到“数据集”窗格中。
重命名数据集
如果报表或项目中没有其他数据源,则创建的第一个数据源将按所选数据库命名。由于此报表将包含两个数据集,所以应使用更具说明性的名称重命名第一个数据集。若要更改数据集的名称,需要执行下列步骤。
重命名数据集
1.        在工具栏上单击“编辑所选的数据集”(...) 按钮。
2.        在“名称”中,键入 Employees。
3.        单击“确定”。
在数据集中添加查询
Employees 数据集从 AdventureWorks 数据库检索员工数据。
在数据集中添加查询
1.        在“数据”视图中,在通用查询设计器的顶部窗格中键入或者复制并粘贴以下查询:
复制到剪贴板
Select c.firstname, c.lastname, e.title, d.departmentID From HumanResources.EmployeeDepartmentHistory D INNER JOIN HumanResources.Employee E ON D.EmployeeID = E.EmployeeID INNER JOIN Person.Contact C ON E.ContactID = C.ContactID Where D.DepartmentID=1 Order By c.lastname
此查询以后将变为一个表达式;如果首先创建一个基本查询,报表设计器就能自动创建字段列表。如果一开始就编写表达式,则必须手动更新字段列表。
2.        若要查看查询的结果,请单击查询设计器工具栏上的“运行”(!) 按钮。

3:创建部门数据集  
此报表使用的参数将最终按照所选部门来筛选 Employee 数据集。参数列表中的值由 Department 数据集填充。
创建数据集
创建数据集
1.        在数据视图顶部的“数据集”中,选择“新建数据集”。“数据集”对话框随即出现。
注意:

如果已为报表提供了数据源,则报表设计器将显示“数据集”对话框而不是“数据源”对话框。创建 Employee 数据集时已定义了数据源。
2.        在“名称”中,键入 Departments。
3.        单击“确定”。
向数据集添加查询
Department 数据集将为本教程后面定义的 Deparment 参数填充可用值列表。
向数据集添加查询
1.        在“数据”视图中,选中 Department 数据集后,在通用查询设计器的顶部窗格中键入或复制和粘贴以下查询:
复制到剪贴板
SELECT 0 AS DepartmentID, 'All' AS Name UNION SELECT DepartmentID, Name FROM HumanResources.Department ORDER BY Name
此 UNION 查询将创建一个部门列表,在此列表顶部包含词“All”。
注意:

默认情况下,通用查询设计器显示在“数据”视图中。尽管也可以使用图形查询设计器编辑查询;但还是应该始终使用通用查询设计器编辑 UNION 查询。
2.        若要查看查询的结果,请单击查询设计器工具栏的“运行 (!)”按钮。

4:定义报表布局  
因为已定义了数据集,您现在可以向报表中添加表数据区域了。数据区域是一种数据绑定报表项。添加到报表中的表数据区域将包含 Employees 数据集中的数据。第一次打开表数据区域时,表数据区域包含三行三列。每个行用于指定以下信息:
•        表头
•        详细信息
•        表尾
在本教程中,表格表头和表尾不是直接指定的。因此,您将只使用“详细信息”部分来指定重复的雇员数据行。将字段拖到“详细信息”部分时,会自动指定表格表头,而根本不会使用表格的表尾部分。
添加表数据区域
向报表添加表数据区域和字段
1.        单击“布局”选项卡。
2.        在“工具箱”中,单击“表”,再单击设计图面。报表设计器将在设计图面的宽度内绘制一个具有三列的表。
此时,“工具箱”可能显示为设计区域左侧的一个选项卡。若要打开“工具箱”,请将指针移到“工具箱”选项卡上。
注意:

如果“工具箱”不可见,请单击“视图”菜单中的“工具箱”。
3.        在“数据集”窗口中,展开 Employees。
4.        将 FirstName 字段从“数据集”窗口拖到该表中第一列的中间(详细信息)行中。
注意:

如果“数据集”窗口不可见,请单击“视图”菜单中的“数据集”。
5.        将 LastName 字段从“字段”窗口拖到该表第二列的中间(详细信息)行中。
6.        将 title 字段从“字段”窗口拖到该表第三列的中间(详细信息)行中。

5:添加报表参数  
在本课程中,将添加一个报表参数以筛选由查询返回的数据。报表基于用户所选的部门筛选数据。
本教程中的动态查询基于参数值构造。如果将参数数据直接合并到动态查询中,则必须使用可用值列表(也称为有效值);否则,您的报表服务器将容易受到攻击。报表服务器依据可用值列表验证用户的输入,并仅允许使用该列表中的值。这样,您可以控制动态查询中使用的值,并保证报表的安全。但是,如果没有使用可用值列表(“可用值”设置为“无查询”,并且值列表保留空白),并且数据类型为“字符串”,则系统将向用户显示一个可以使用任何值的文本框。在这种情况下,报表用户可能在该文本框中键入 SQL 语法,从而导致报表和服务器容易受到 SQL 注入攻击。如果用户有足够的权限执行新的 SQL 语句,则可能在服务器上产生意外结果。在任何从参数直接合并数据的查询中,请务必使用可用值列表,并确保运行报表的用户仅具有查看报表中数据所需的权限。
添加报表参数
添加参数
1.        在“报表”菜单上,单击“报表参数”。
注意:

如果“报表”菜单不可用,则单击“布局”选项卡。
2.        单击“添加”以添加新的报表参数。
3.        按照以下方式设置参数属性:
o        对于“名称”和“提示”,请键入 Department。
o        对于“数据类型”,请选择“字符串”。
o        清除下列复选框:“隐藏、内部、多值”、“允许空值”以及“允许空白值”。
o        对于“可用值”,请选择“来自查询”。
o        对于“数据集”,请选择“部门”。对于“值字段”,请选择 DepartmentID。对于“标签字段”,请选择“名称”。
o        对于“默认值”,请选择“无查询”。
o        在“无查询”旁边的框中,键入 0。
4.        单击“确定”。
5.        单击“预览”选项卡。该表将基于静态查询显示一部分员工列表 (DepartmentID = 1)。这时参数不筛选数据。
6:使用动态查询更新 Employees 数据集  
在 Employees 数据集中使用静态查询的报表应在正确运行。以下步骤将静态查询替换为动态查询。
动态查询的值为表达式。查询构造为表达式时,不能在查询设计器中使用 Run (!) 命令验证语法,也不能确认语法是否返回了期望的结果。若要检查语法,请预览报表以确保处理后的报表包含数据。
添加动态查询
若要在报表定义中添加动态查询,请执行以下操作:
1.        单击“数据”选项卡。
2.        选择 Employees 数据集,再使用通用查询设计器,将原始查询替换为以下表达式:
复制到剪贴板
="SELECT c.firstname, c.lastname, e.title, d.departmentID " & "From HumanResources.EmployeeDepartmentHistory D " & "INNER JOIN HumanResources.Employee E " & "ON D.EmployeeID = E.EmployeeID " & "INNER JOIN Person.Contact C " & "ON E.ContactID = C.ContactID " & Iif(Parameters!Department.Value = 0, "", "WHERE D.DepartmentID = " & Parameters!Department.Value) & "ORDER BY C.LastName"
仅当未选择 All 时,此表达式才生成包含 WHERE 子句的查询。WHERE 子句包含 Department 参数中的值。 必须使用通用查询设计器创建表达式。
3.        保存报表项目。在“文件”菜单上,单击“全部保存”。
4.        单击“预览”选项卡。默认情况下,显示所有雇员。如果选择了特定部门后查看报表,则将显示该部门的雇员。
注意 每次运行报表时,都将在 Employees 数据集中使用表达式生成一个查询字符串。如果选中 All (内部 DepartmentID 值为 0),则生成的查询不带 WHERE 子句,这将导致检索所有雇员。如果 选择一个部门,则将在 WHERE 子句中使用选定部门的 DepartmentID 构造查询,并将数据限制为该部门的数据。
分享到:
评论

相关推荐

    [Microsoft SQL Server 2005 Reporting Services专家教程]源文件

    **Microsoft SQL Server 2005 Reporting Services**是微软推出的一款强大的商业智能工具,它主要用于数据报表的创建、管理和分发。本教程旨在深入探讨这一技术,帮助用户从初学者到专家级别的提升。 Reporting ...

    Pro SQL Server 2008 Reporting Services.pdf

    《Pro SQL Server 2008 Reporting Services》是一本专注于Microsoft SQL Server 2008 Reporting Services的专业指南,由Rodney Landrum、Shawn McGehee和Walter J. Voytek III共同撰写。本书旨在为读者提供一个逐步...

    Reporting+Services+教程

    在本教程中,将使用通用查询设计器创建一个查询,以从AdventureWorks数据库中提取销售订单信息。 ### 总结 通过上述步骤,您不仅学会了如何创建报表服务器项目和报表定义文件,还掌握了设置数据源连接信息的方法,...

    SQL Server 2008 Reporting Services

    SQL Server 2008 Reporting Services 是微软提供的一款强大的商业智能工具,主要用于生成、管理和分发各种报表。这个入门教程涵盖了从安装配置到高级特性的全方位指导,旨在帮助用户掌握这款强大工具的使用。 首先...

    Microsoft-SQL Server 2008 Reporting Services Step by Step(2009) 随书光盘

    《Microsoft SQL Server 2008 Reporting Services Step by Step(2009)》随书光盘包含了丰富的学习资源,旨在帮助用户深入理解和掌握SQL Server 2008 Reporting Services的功能与应用。这本书的重点在于实践操作,...

    Reporting Services发布的报表允许匿名访问

    这些步骤包括在Reporting Services站点设置匿名用户角色、在SQL Server中为匿名用户配置登录及权限、以及在IIS中开启匿名访问等功能。这些操作有助于实现更灵活的报表发布方式,使得非认证用户也能访问某些公开报表...

    在 Reporting Services 中使用表达式

    【在 Reporting Services 中使用表达式】 Reporting Services 是微软的一款强大报表工具,允许用户创建复杂的、交互式的报表。在 Reporting Services 中,表达式扮演着至关重要的角色,它们被广泛应用于报表的各个...

    Microsoft_SQLServer_2008_Reporting_Services应用教程

    《Microsoft SQL Server 2008 Reporting Services应用教程》 Microsoft SQL Server 2008 Reporting Services(简称SSRS)是微软提供的一款强大的商业智能工具,用于生成、管理和分发报表。它允许用户通过交互式的...

    Wrox.Professional.Microsoft.SQL.Server.2008.Reporting.Services.Dec.2008

    《Wrox Professional Microsoft SQL Server 2008 Reporting Services》是关于微软SQL Server 2008中的报表服务的专业指南。这本书深入探讨了SQL Server 2008 Reporting Services(简称SSRS)这一强大工具,它是企业...

    sql server 2005 reporting services报表设计

    在 SQL Server 2005 中,Analysis Services 被集成到 Reporting Services 中,使用户能够利用多维数据分析的强大能力来创建动态和交互式的报表。用户可以使用 MDX(多维表达式)查询来检索和展示复杂的数据集,这极...

    Reporting Services入门文档

    Microsoft SQL Server 2008 R2 Reporting Services (简称 RS 或 Reporting Services) 是一款强大的企业级报表解决方案,它允许用户创建、管理和发布各种类型的报表,包括表格报表、矩阵报表、图表报表及自由格式报表...

    Microsoft SQL Server 2000 Reporting Services发布.pdf

    由于您提供的文件信息中包含的【部分内容】并非关于“Microsoft SQL Server 2000 Reporting Services发布”的具体知识点,而是关于柔性显示技术前瞻以及电子邮件与手机通信技术的描述,因此,我将基于标题、描述和...

    reporting services 教程-

    Microsoft SQL Server 2005 Reporting Services (SSRS) 是一个强大的报表平台,用于生成、管理和分发数据报表。本教程涵盖了SSRS的基本概念和操作,帮助用户逐步掌握报表设计和实现。 **创建基本报表** 创建基本...

    SQLServer2012ReportingServices

    SQL Server Reporting Services(SSRS)是微软SQL Server数据库系统的一个组件,用于创建、管理和发布传统的和交互式报告。它是一个端到端的解决方案,能够从不同的数据源提取、处理数据,并生成报表。这些报表可以...

    Reporting Services Samples

    4. 数据集:预定义的SQL查询或MDX表达式,从数据源中提取数据并准备供报表使用。 5. 报表:由数据集、布局和样式组成的可视化展示,可以通过参数进行定制。 三、Reporting Services的报表类型 1. 传统报表:以表格...

    Reporting Services 教程

    在教程中,你将学习如何设置和配置Reporting Services服务器,包括安装、配置Web服务接口、设置安全策略和权限管理。这对于确保报表的稳定运行和数据安全至关重要。此外,了解报表服务器的目录结构和元数据管理,能...

    ReportingServices部署

    Reporting Services是Microsoft SQL Server的一个重要组件,主要用于企业级的报表生成和管理。它提供了一种灵活的方式来设计、发布和管理各种复杂和交互式的报表。在本文中,我们将深入探讨Reporting Services的部署...

    Reporting_Services报表开发示例

    【Reporting Services报表开发示例】是关于如何使用Microsoft的Reporting Services工具进行报表开发的一个实践教程。Reporting Services允许开发者创建复杂的报表,包括折叠功能,以帮助用户更有效地浏览和理解大量...

Global site tag (gtag.js) - Google Analytics