了解报表数据集 (Report Builder 2.0)

可以使报表数据集的数据作为一组行和列显示。必须至少有一列以及零行或更多行。在设计时,创建查询以指定要从数据源检索的列。还要在设计时处理元数据,以便可以将数据集字段链接到设计图面上的数据区域和报表项。在运行时,报表处理器将检索实际数据,并将这些数据与报表布局组合。然后,将报表传递到您用于查看报表的报表呈现器。

在设计时,当在查询设计器中运行数据集查询时,将看到显示示例数据的来自数据源的行集。在运行时,当用户查看报表时,数据集查询可能产生不同的值,因为数据源的数据已经更改。每次处理报表时,都可能出现新数据。

了解报表数据集数据

报表数据集可以由以下类型的数据组成:

  • 来自关系数据库的结果集,它可以是运行数据库命令、存储过程或用户定义函数的结果。如果通过单个查询检索到多个结果集,则仅处理第一个结果集,并忽略所有其他结果集。例如,在基于文本的查询设计器中运行以下查询时,只有 Production.Product 的结果集出现在结果窗格中:

    SELECT ProductID FROM Production.Product
    GO
    SELECT ContactID FROM Person.Contact
    
  • 来自多维数据源的平展行集,此类数据源使用 XML for Analysis (XMLA) 协议。某些数据访问接口提供来自数据源的其他单元和维度属性,在结果集中看不到这些属性,但它们会出现在报表中。

  • 来自 XML 数据源的平展结果集,此类数据源包括 XML 元素、它们的属性以及它们的子元素。

  • 来自任何注册和配置的 .NET Framework 数据访问接口的结果集。

  • 来自为特定数据源设计的报表模型的数据,这样的报表模型具有预定义实体、实体关系和字段。有关详细信息,请参阅为报表模型创建报表数据集 (Report Builder 2.0)

当在运行时处理报表时,查询返回的实际结果集可能有零行或更多行。在查询中定义的列也有可能已从数据源中丢失。来自数据源的 Null 值映射到 .NET Framework 值 System.DBNull.Value。 

设置数据属性

定义报表数据集时,可以在查询中设置数据属性,也可以接受由数据访问接口设置的默认值。可以通过使用以下策略之一来更改数据类型:

  • 重写数据集查询,以将某字段明确转换为其他数据类型。

  • 编辑数据集中的字段,并提供自定义格式。

  • 基于数据库字段创建新的自定义字段,并提供自定义格式。

对于支持国际数据的数据源,可能需要调整那些影响排序顺序、国际字符属性以及是否将大写和小写字符视为等效字符的数据集属性。这些属性包括大小写、假名类型、宽度、重音和排序规则。有关详细信息,请参阅 SQL Server 联机丛书中的“数据库和数据库引擎应用程序的国际化注意事项”和“使用排序规则”。有关如何设置这些属性的详细信息,请参阅“数据集属性”对话框 ->“选项”(Report Builder 2.0)

了解数据集字段集合中的数据类型

在数据源中,数据以数据源所支持的数据类型存储。例如,SQL Server 数据库中的数据必须是受支持的 SQL Server 数据类型之一,例如 nvarchar 或 datetime。从数据源检索数据时,数据通过与数据源类型相关联的数据处理扩展插件或数据访问接口进行传递。数据可能从数据源所使用的数据类型转换为数据处理扩展插件所支持的数据类型,具体取决于数据处理扩展插件。Reporting Services 使用随 Business Intelligence Development Studio 安装的公共语言运行时 (CLR) 所支持的数据类型。数据访问接口将结果集中的每一列从本机数据类型映射到 .NET Framework 公共语言运行时 (CLR) 数据类型。

在每个阶段,数据分别由不同的数据类型表示,如以下列表所描述:

  • 数据源   所连接的数据源类型版本支持的数据类型。

    例如,SQL Server 数据源的典型数据类型包括 int、datetime 和 varchar。SQL Server 2008 所引入的数据类型添加了对 date、time、datetimetz 和 datetime2 的支持。有关详细信息,请参阅数据类型 (Transact-SQL)

  • 数据访问接口或数据处理扩展插件   连接到数据源时选择的数据处理扩展插件的数据访问接口版本所支持的数据类型。基于 .NET Framework 的数据访问接口使用 CLR 支持的数据类型。有关 .NET Framework 数据访问接口数据类型的详细信息,请参阅 MSDN 上的 Data Type Mappings (ADO.NET)(数据类型映射 (ADO.NET))和 Working with Base Types(使用基类型)。

    例如,.NET Framework 支持的典型数据类型包括 Int32 和 String。DateTime 结构支持日历日期和时间。.NET Framework 2.0 Service Pack 1 引入了对 DateTimeOffset 结构的支持,用于表示带时区偏移量的日期。

    注意注意

    报表服务器使用在报表服务器上安装和配置的数据访问接口。处于预览模式的报表创作客户端使用客户端计算机上安装并配置的数据处理扩展插件。您必须在报表客户端环境和报表服务器环境中测试报表。

  • 报表处理器:数据类型基于安装 Reporting Services 时所安装的 CLR 版本。SQL Server 2008Reporting Services 安装基于 .NET Framework 3.5 的 CLR。

    例如,下表显示了报表处理器用于 SQL Server 2008 中引入的新日期和时间类型的数据类型:

    SQL 数据类型

    CLR 数据类型

    说明

    Date

    DateTime

    仅日期

    Time

    TimeSpan

    仅时间

    DateTimeTZ

    DateTimeOffset

    带有时区偏移量的日期和时间

    DateTime2

    DateTime

    带有毫秒小数部分的日期和时间

有关 SQL Server 数据库类型的详细信息,请参阅 Data Types (Database Engine)(数据类型(数据库引擎))日期和时间数据类型及函数 (Transact-SQL)

有关在表达式中包括对数据集字段的引用的详细信息,请参阅在表达式中使用数据类型 (Report Builder 2.0)

使用多个数据集

报表通常有多个数据集。下表介绍如何在报表中使用数据集:

为数据集导入现有查询

创建数据集时,可以创建新的查询,也可以从文件或从另一个报表导入现有查询。仅支持 .sql 和 .rdl 文件类型。多维表达式 (MDX) 查询或数据挖掘预测 (DMX) 查询只能由 Reporting Services 查询设计器生成,因为结果集必须作为平展行集进行检索。

从另一个报表导入查询时,可以从此报表内数据集的列表中选择要导入哪个查询。

在运行时未检索到任何数据行的情况下显示消息

在报表处理期间,当运行对数据集的查询时,结果集可能不包含任何行。在呈现的报表中,链接到空数据集的数据区域将显示为空数据区域。可以指定要在呈现的报表中代替空数据区域的显示文本。还可以为子报表指定消息,以便如果在运行时对所有数据集的查询没有产生任何数据,则显示该消息。有关详细信息,请参阅如何为数据区域设置“无数据”消息 (Report Builder 2.0)

检测丢失的字段

处理报表时,数据集的结果集可能会由于数据源中不再存在指定的所有列而不包含这些列的值。可以使用字段属性 IsMissing 检测在运行时是否返回了某个字段的值。有关详细信息,请参阅在表达式中使用数据集字段集合引用 (Report Builder 2.0)

显示隐藏的数据集

为某些多维数据源创建参数化查询时,Reporting Services 将自动创建数据集,以为参数提供有效值。默认情况下,这些数据集不显示在“报表数据”窗格中。有关详细信息,请参阅如何显示隐藏的数据集 (Report Builder 2.0)