第 2 课:添加创建可用值列表的参数 (Report Builder 2.0)

可用值(即有效值)为用户提供一系列可能的报表参数值。您可以提供专门用于从数据源中检索一组值的查询中的有效值,也可以提供一组预定义的值。通过将一组可用值绑定到处理报表时运行的数据集查询,可以确保用户只能选择基础数据源中存在的值。

在本课中,您将修改销售订单报表以显示 AdventureWorks2008 数据库中可用销售人员姓名的下拉列表,并将设置一个表属性,以便在所选参数值的结果集中没有行时显示消息。当选择某个姓名并查看此报表时,此报表只显示该销售人员的销售额。

替换现有数据集查询

  1. 在“报表数据”窗格中,右键单击 DataSet1,然后单击**“查询”**。将打开查询设计器。

    在“查询”窗格中,将现有查询文本替换为以下查询:

    SELECT
      SH.OrderDate
      ,DATENAME(weekday, SH.OrderDate) as Weekday
      ,SH.SalesOrderNumber
      ,SD.OrderQty
      ,SD.LineTotal
      ,P.Name AS [Product]
      ,PS.Name AS [Subcategory]
    FROM Sales.SalesPerson SP 
      INNER JOIN Sales.SalesOrderHeader AS SH 
          ON SP.BusinessEntityID = SH.SalesPersonID
      INNER JOIN Sales.SalesOrderDetail AS SD 
         ON SH.SalesOrderID = SD.SalesOrderID
      INNER JOIN Production.Product AS P
       ON SD.ProductID = P.ProductID
      INNER JOIN Production.ProductSubcategory AS PS
       ON PS.ProductSubcategoryID = P.ProductSubcategoryID
      INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PS.ProductCategoryID
    WHERE PC.Name = 'Clothing' 
       AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
       AND SH.SalesPersonID = (@BusinessPersonID)
    

    此查询包括负责销售订单的销售人员的查询参数:

    AND SH.SalesPersonID = (@BusinessPersonID)

  2. 单击**“运行”(!**) 按钮。提示输入查询参数的值时,请使用下表来输入值。

    @StartDate

    20010101

    @EndDate

    20030101

    @BusinessPersonID

    290

  3. 单击“确定”。随即显示 SalesPersonID = 290 的销售人员 Ranjit Varkey Chudukatil 的结果集。 

    接下来,将创建列出销售人员姓名的新的数据集。

填充报表参数的有效值列表

  1. 在“报表数据”窗格工具栏中,单击**“新建”,然后单击“数据集”。此时将打开“数据集属性”**对话框。

  2. 在**“名称”**字段中,键入 SalesPersons。该数据集将用于填充 SalesPersonID 报表参数的有效值列表。

  3. 确保数据源为 AdventureWorks2008。

  4. 单击**“查询设计器”,然后单击“编辑为文本”**。

  5. 将以下 Transact-SQL 查询粘贴到查询窗格中:

    SELECT SP.BusinessEntityID, C.FirstName, C.LastName
    FROM   Sales.SalesPerson AS SP INNER JOIN
         HumanResources.Employee AS E ON E.BusinessEntityID = 
         SP.BusinessEntityID INNER JOIN
         Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityID
    ORDER BY SP.BusinessEntityID
    
  6. 单击**“确定”**两次。在“报表数据”窗格中,新数据集显示三个字段:BusinessEntityID、FirstName 和 LastName。该数据集将用于提供 BusinessPersonID 参数的有效值。

    下一步,您将创建将 FirstName 和 LastName 连接到称为 Name 的字段的其他数据集字段。您定义的字段称为计算字段。

在“报表数据”窗格中定义计算字段

  1. 在“报表数据”窗格工具栏中,右键单击 SalesPersons 数据集,再单击**“添加计算字段”。随即将打开“数据集属性”对话框的“字段”**页,并向网格添加一个新行。

  2. 在最后一个**“字段名称”**文本框中,键入 Name。

  3. 在**“字段源”**文本框中,粘贴以下表达式:

    =Fields!LastName.Value & ", " & Fields!FirstName.Value

  4. 单击“确定”。

  5. 在“报表数据”窗格的 SalesPersons 数据集下,新字段 Name 将出现在该数据集的字段集合中。

    下一步,您将指向报表参数 BusinessPersonID 以将此数据集用于其有效值。

使用可用值列表填充报表参数

  1. 在“报表数据”窗格中,展开“参数”节点,右键单击 BusinessPersonID,然后单击**“参数属性”**。

  2. 在**“提示”**中,键入 Select sales person:。

  3. 在**“数据类型”中,选择“整数”**。

  4. 单击**“可用值”**。

  5. 选择**“从查询中获取值”**选项。

  6. 从**“数据集”**下拉列表中,选择 BusinessPersons

  7. 从**“值字段”**下拉列表中,选择 BusinessEntityID

  8. 从**“标签字段”下拉列表中,选择“名称”**。

    通过为标签选择“名称”,BusinessEntityID 参数的有效值下拉列表现在将显示每个销售人员的姓名,而不是业务识别号。

  9. 单击**“默认值”**。

  10. 选择**“从查询中获取值”**选项。

  11. 从**“数据集”**下拉列表中,选择 BusinessPersons

  12. 从**“值字段”**下拉列表中,选择 BusinessEntityID

  13. 单击“确定”。 

  14. 单击**“运行”**。此报表将显示业务人员姓名下拉列表。

  15. 单击**“查看报表”**。

    报表将显示符合报表参数指定限制条件的所选销售人员的销售订单。有些日期、周工作日和销售人员的组合可能没有结果。

后续步骤

您已经成功地向现有报表添加了参数的可用值列表。接下来,您将修改 DayoftheWeek 和 BusinessPersonID 参数以接受多个值。请参阅第 3 课:添加在列表中选择多个值的参数 (Report Builder 2.0)