从 SQL Server 关系数据库创建报表数据集 (Report Builder 2.0)

Report Builder 2.0 提供了一个支持从 MicrosoftSQL Server 关系数据库中检索报表数据的数据处理扩展插件。您可以从数据库表、视图、存储过程和表值函数中检索报表数据集的报表数据。

在创建报表数据集之前,必须创建一个数据源类型为 MicrosoftSQL Server 的数据源。创建 MicrosoftSQL Server 数据源后,您可以采用以下方式创建数据集:

  • 使用新建表或矩阵向导或者使用新图表向导。可以选择报表中的现有数据集,也可以使用这两个向导来帮助创建其他数据集和查询。

  • 从“报表数据”窗格中创建数据集和数据集查询。

指定报表数据集查询

查询指定了要从 MicrosoftSQL Server 数据库中检索哪些数据来生成报表数据集。查询的结果集中的列填充数据集的字段集合。报表仅处理任何查询检索的第一个结果集。

您可以从以下选项中进行选择,以便帮助指定您所需的数据:

  • 以交互方式生成查询。使用关系查询设计器,此设计器显示表、视图、存储过程及其他数据库项按数据库架构组织的层次结构视图。选择表或视图中的列,或者指定存储过程或表值函数。通过指定筛选条件限制要检索的数据行数。通过设置参数选项自定义报表运行时的筛选器。

  • 键入或粘贴查询。使用基于文本的查询设计器直接输入 Transact-SQL 文本、粘贴来自其他来源的查询文本、输入使用关系查询设计器无法生成的复杂查询,或输入基于查询的表达式。

  • 从文件或报表中导入现有的查询。使用任一查询设计器中的“导入查询”按钮浏览到 .sql 文件或 .rdl 文件,然后导入查询。

有关详细信息,请参阅关系查询设计器用户界面 (Report Builder 2.0)基于文本的查询设计器用户界面 (Report Builder 2.0)如何从 SQL Server 数据源检索数据 (Report Builder 2.0)

使用 Text 查询类型

在基于文本的查询设计器中,可以键入 Transact-SQL 命令来定义数据集中的数据。例如,下面的 Transact-SQL 查询选择职位为销售助理的所有雇员的姓名。

SELECT
  HumanResources.Employee.BusinessEntityID
  ,HumanResources.Employee.JobTitle
  ,Person.Person.FirstName
  ,Person.Person.LastName
FROM
  Person.Person
  INNER JOIN HumanResources.Employee
    ON Person.Person.BusinessEntityID = HumanResources.Employee.BusinessEntityID
WHERE HumanResources.Employee.JobTitle = 'Marketing Assistant' 

单击工具栏上的**“运行”**按钮 (!) 可以运行查询并显示结果集。

若要参数化此查询,请添加一个查询参数。例如,将 WHERE 子句更改为下面的内容:

WHERE HumanResources.Employee.JobTitle = (@JobTitle)

运行查询时,会自动创建与查询参数对应的报表参数。有关详细信息,请参阅本主题后面的查询参数。

使用 StoredProcedure 查询类型

您可以采用以下方式之一为数据集查询指定存储过程:

  • 在**“数据集属性”对话框中,设置“存储过程”**选项。从存储过程和表值函数的下拉列表中进行选择。

  • 在关系查询设计器中的“数据库视图”窗格中,选择存储过程或表值函数。

  • 在基于文本的查询设计器中,从工具栏中选择 StoredProcedure

选择存储过程或表值函数之后,就可以运行查询。系统将提示您提供输入参数的值。运行查询时,会自动创建与输入参数对应的报表参数。有关详细信息,请参阅本主题后面的查询参数。

仅支持为存储过程检索到的第一个结果集。如果存储过程返回多个结果集,则仅使用第一个结果集。

如果某个存储过程带有具有默认值的参数,则您可以访问该值,方法是使用 DEFAULT 关键字作为该参数的值。如果该查询参数链接到某个报表参数,用户可以在报表参数的输入框中键入或选择单词 DEFAULT。

有关存储过程的详细信息,请参阅 SQL Server 联机丛书中的“存储过程(数据库引擎)”。

使用查询参数

对于包含参数的查询文本或带有输入参数的存储过程,将自动创建对应的报表参数。当报表运行时,报表参数的值将传递给查询参数。例如,下面的 SQL 查询将创建一个名为 EmpID 的报表参数:

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID 
WHERE EmployeeID = @EmpID

可以使用“数据集属性”对话框 ->“参数”(Report Builder 2.0)管理报表参数与查询参数之间的关系。其参数链接到报表参数的查询不需要 DECLARE 语句。

虽然报表参数是根据查询参数自动创建的,但您需要在**“报表数据”**窗格中单独管理报表参数。

注意注意

如果更改了查询参数的名称或删除了查询参数,并不会自动更改或删除与之相对应的报表参数。可以使用“报表数据”窗格工具栏中的按钮删除或更改报表参数的顺序。有关详细信息,请参阅向报表中添加参数 (Report Builder 2.0)

修改数据集

创建数据集后,可以在“报表数据”窗格中查看数据集及其字段集合。您可能还需要使用**“数据集属性”**对话框执行以下任务中的部分任务:

  • 通过添加计算字段编辑字段集合。计算字段具有在查询运行后计算的基于表达式的值。这些字段的数据类型将映射到 .NET Framework 中的公共语言运行时 (CLR) 数据类型的子集。

  • 指定数据集属性,如 Timeout、CaseSensitivity 和 Collation。

  • 通过修改查询添加参数,使用户或报表作者能够在运行时自定义报表的数据。

此外,若要更改数据在数据集中的排序或筛选方式,请参阅以下主题: