第 3 课:从嵌入 XML 数据定义报表数据集

新建日期: 2006 年 7 月 17 日

通过下列步骤可以学习如何从嵌入在 Reporting Services XML 数据源的数据集查询中的 XML 数据检索报表数据。在本例中,AdventureWorks 示例数据库的 SQL 查询结果集的 XML 数据已嵌入在数据集查询中。本教程还将展示如何在查询的 ElementPath 标记中为报表数据集指定要检索的元素节点和属性。

过程

为数据集创建查询

  1. 打开 Microsoft SQL Server Management Studio

  2. 在**“连接到服务器”对话框中,选择“服务器类型”,然后选择“数据库引擎”**。

  3. 在**“服务器名称”**中,输入安装了 AdventureWorks 示例数据库的服务器的名称。例如 localhost。

  4. 在对象资源管理器中,展开“数据库”节点。

  5. 右键单击 AdventureWorks,然后选择**“新建查询”**。

  6. 将下列查询粘贴到查询窗格中。

    SELECT TOP 5 S.OrderDate, S.SalesOrderNumber, S.TotalDue, 
           C.FirstName, C.LastName
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    ORDER BY S.TotalDue DESC
    FOR XML AUTO
    
  7. 在结果窗格中,选择 xml 结果并复制。

将根节点添加到 XML

  1. 打开记事本或您选择的编辑器。

  2. 粘贴 XML 文本。

  3. 在第一行之前插入以下 XML:<Query><XmlData><Root>

  4. 将以下 XML 添加到最后一行:</Root></XmlData></Query>

    可使用此 XML 数据作为测试数据。

为 Web 服务定义报表数据集

  1. 启动报表设计器,打开为本教程创建的报表服务器项目。

  2. 在“数据”视图中,选择**“新建数据集”**。键入数据集的名称(例如 XMLEmbeddedDataSet)。

  3. 在**“数据集”对话框的“数据源”中,选择“新建数据源”。将显示“数据源”**对话框。

  4. 键入数据源的名称(例如 XMLEmbeddedDataSource)。

  5. 在**“类型”**中,选择 XML

  6. 将**“连接字符串”**保留为空。

  7. 单击**“确定”以保存更改,并关闭“数据源”**对话框。

  8. 单击**“确定”**关闭“数据集”对话框。

  9. 从上一步中使用的记事本或编辑器中复制查询文本,然后将其粘贴在“查询”窗格中。该查询文本应如下所示:

    <Query>
    <XmlData>
    <Root>
    <S OrderDate="2003-07-01T00:00:00" SalesOrderNumber="SO51131" TotalDue="247913.9138">
      <C FirstName="Shu" LastName="Ito" />
    </S>
    <S OrderDate="2003-10-01T00:00:00" SalesOrderNumber="SO55282" TotalDue="227737.7215">
      <C FirstName="Shu" LastName="Ito" />
    </S>
    <S OrderDate="2002-07-01T00:00:00" SalesOrderNumber="SO46616" TotalDue="207058.3754">
      <C FirstName="Jae" LastName="Pak" />
    </S>
    <S OrderDate="2002-08-01T00:00:00" SalesOrderNumber="SO46981" TotalDue="201490.4144">
      <C FirstName="Ranjit" LastName="Varkey Chudukatil" />
    </S>
    <S OrderDate="2002-09-01T00:00:00" SalesOrderNumber="SO47395" TotalDue="198628.3054">
      <C FirstName="Michael" LastName="Blythe" />
    </S>
    </Root>
    </XmlData>
    </Query>
    
  10. 单击**“运行”**(!) 以查看结果集。请注意,XML 的默认查询会选择通往叶节点的第一个路径上的所有属性和元素。

  11. 通过在查询中包括 ElementPath 标记,指定要在结果集中包括的元素。在“查询”窗格中的 Query 标记之后和 XmlData 标记之前粘贴以下文本。

    <ElementPath>Root /S  {@OrderDate (Date), @TotalDue (Decimal)} /C {@LastName} </ElementPath>
    

    此元素路径指定如下内容:

    • 对于 S 元素,将 OrderDate 属性作为 Date 类型返回,将 TotalDue 属性作为 Decimal 类型返回。
    • 对于 C 元素,返回 LastName 属性(默认为 String 类型)。
  12. 单击**“运行”**(!) 以查看结果集。现在,结果仅包括了您在 ElementPath 部分中指定的那些元素和属性。OrderDate 属性指定了 Date 类型以将其值转换为 DateTime。同样,TotalDue 转换为 Decimal 格式。

  13. 在工具栏中,单击**“刷新字段”(刷新数据集字段) 按钮。这将保存报表定义并更新“报表数据集”**窗口中的字段视图,以显示您可以使用的所有字段。

后续步骤

您已成功地从嵌入在数据集查询中的 XML 数据定义了报表数据集。处理报表时,从 Web 服务检索来自每个 XML 表元素的数据及其属性。接下来,您将创建一个报表,该报表使用第 1 课、第 2 课和第 3 课中的数据集。请参阅第 4 课:创建使用 XML 数据的报表

请参阅

概念

Reporting Services 教程

其他资源

为 XML 数据定义报表数据集
连接数据源
定义报表数据集
如何创建或编辑报表特定数据源(报表设计器)
如何创建数据集(报表设计器)
使用报表数据集中的字段
如何在“数据集”窗口中添加、编辑或删除字段(报表设计器)
报表数据集(报表设计器)
用于指定 XML 报表数据的元素路径语法

帮助和信息

获取 SQL Server 2005 帮助