从 SQL Server 关系数据库创建报表数据集
Reporting Services 提供了一个支持从 MicrosoftSQL Server 关系数据库中检索报表数据的数据处理扩展插件。此数据处理扩展插件可从关系数据表、视图、存储过程以及在基础数据源中定义的其他数据结构中检索数据。连接至数据源后,可以创建一个报表数据集,从而定义要在报表中使用的来自该数据源的数据。Reporting Services 数据集包括一个数据源、一个用于在处理报表时检索数据的查询,以及一个字段集合。数据集定义保存在报表定义中。**“报表数据”**窗格显示报表中的当前数据集定义。
定义数据集的方式有两种:使用 Transact-SQL 查询文本或存储过程调用来创建查询,或者选择一个表并检索该表中的所有数据。系统会依据查询自动创建数据集的字段集合。用户可以编辑字段或添加计算字段。计算字段具有在查询运行时计算的基于表达式的值。这些字段的数据类型将映射到 .NET Framework 中的公共语言运行时 (CLR) 数据类型的子集。有关详细信息,请参阅了解报表数据集和如何从 SQL Server 数据源检索数据。
有两个用于关系数据源的查询设计器:基于文本的查询设计器和图形查询设计器。默认情况下,将打开基于文本的查询设计器。使用基于文本的查询设计器可以直接输入 Transact-SQL 文本、粘贴来自其他源的查询文本、输入使用图形查询设计器无法生成的复杂查询,或输入基于查询的表达式。使用图形查询设计器可以浏览数据源中的元数据以采用交互方式设计查询,还可以查看数据源中的存储过程或表的列表。有关详细信息,请参阅图形查询设计器用户界面、基于文本的查询设计器用户界面和如何从 SQL Server 数据源检索数据。
定义查询后,您还可以指定诸如 Timeout 和 CaseSensitivity 等属性,并定义哪些报表参数将值传递给查询参数。运行查询时,您将看到数据源中的结果集。结果集中的列将映射到数据集中的字段。处理报表时,与数据集字段绑定的报表项将显示检索或计算的数据。报表仅处理任何查询检索的第一个结果集。
指定查询
对于 SQL Server 数据源,可用基于文本的查询设计器或图形查询设计器来帮助指定数据集的查询。指定新数据集的查询时,将默认打开图形查询设计器。如果现有数据集查询过于复杂,以致于无法在图形查询设计器中查看,将会打开基于文本的查询设计器。这两种查询设计器都支持以下查询类型:Text 和 StoredProcedure。可以在打开查询设计器之前,在“数据集属性”对话框中指定查询的类型。
对于 Text 查询类型,如果在查询文本中包含查询参数,Reporting Services 将创建相应的报表参数。对于 StoredProcedure 查询类型,如果存储过程具有输入参数,Reporting Services 将创建相应的报表参数。有关查询参数和报表参数的详细信息,请参阅此主题中后面的使用查询参数。
有关每个查询设计器的详细信息,请参阅基于文本的查询设计器用户界面和图形查询设计器用户界面。
使用 Text 查询类型
当查询设计器在 Text 模式下打开时,可用键入 Transact-SQL 命令来定义数据集中的数据。例如,以下 Transact-SQL 查询将选择所有雇员的姓名。
SELECT FirstName, LastName
FROM HumanResources.Employee E INNER JOIN
Person.Contact C ON E.ContactID=C.ContactID
单击工具栏上的**“运行”按钮 (!) 运行该查询并在“结果”**窗格中显示结果。
还可以从另一报表或从 sql 文件中导入现有查询。
使用 StoredProcedure 查询类型
当查询设计器在 StoredProcedure 模式下打开时,您已经在“数据集属性”对话框中指定 StoredProcedure 时选择了要使用的存储过程。
如果已知道要运行的另一存储过程的名称,可以在查询窗格中键入新存储过程名称,替换掉现有文本。
Reporting Services 支持只返回一组数据的存储过程。如果存储过程返回多个结果集,则仅使用第一个结果集。
如果某个存储过程带有具有默认值的参数,您可以在 Reporting Services 中访问该值,方法是使用 DEFAULT 关键字作为该参数的值。如果该查询参数链接到某个报表参数,用户可以在报表参数的输入框中键入或选择单词 DEFAULT。有关详细信息,请参阅存储过程(数据库引擎)。
使用查询参数
对于包含参数的查询文本或带有输入参数的存储过程,当您运行该查询时,报表设计器将在报表定义中自动创建相应的报表参数。当报表运行时,报表参数的值将传递给查询参数。例如,下面的 SQL 查询将创建一个名为 EmpID 的报表参数:
SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
Person.Contact C ON E.ContactID=C.ContactID
WHERE EmployeeID = @EmpID
可以使用“数据集属性”对话框 ->“参数”管理报表参数与查询参数之间的关系。其参数链接到报表参数的查询不需要 DECLARE 语句。
虽然报表参数是根据查询参数自动创建的,但您需要在**“报表数据”**窗格中单独管理报表参数。
注意 |
---|
如果更改了查询参数的名称或删除了查询参数,并不会自动更改或删除与之相对应的报表参数。可以使用“报表数据”窗格工具栏中的按钮删除或更改报表参数的顺序。有关详细信息,请参阅向报表中添加参数。 |