第 2 课:添加创建可用值列表的参数 (Report Builder 2.0)
可用值(即有效值)为用户提供一系列可能的报表参数值。您可以提供专门用于从数据源中检索一组值的查询中的有效值,也可以提供一组预定义的值。通过将一组可用值绑定到处理报表时运行的数据集查询,可以确保用户只能选择基础数据源中存在的值。
在本课中,您将修改销售订单报表以显示 AdventureWorks2008 数据库中可用销售人员姓名的下拉列表,并将设置一个表属性,以便在所选参数值的结果集中没有行时显示消息。当选择某个姓名并查看此报表时,此报表只显示该销售人员的销售额。
替换现有数据集查询
在“报表数据”窗格中,右键单击 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)
单击**“运行”(!**) 按钮。提示输入查询参数的值时,请使用下表来输入值。
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
单击“确定”。随即显示 SalesPersonID = 290 的销售人员 Ranjit Varkey Chudukatil 的结果集。
接下来,将创建列出销售人员姓名的新的数据集。
填充报表参数的有效值列表
在“报表数据”窗格工具栏中,单击**“新建”,然后单击“数据集”。此时将打开“数据集属性”**对话框。
在**“名称”**字段中,键入 SalesPersons。该数据集将用于填充 SalesPersonID 报表参数的有效值列表。
确保数据源为 AdventureWorks2008。
单击**“查询设计器”,然后单击“编辑为文本”**。
将以下 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
单击**“确定”**两次。在“报表数据”窗格中,新数据集显示三个字段:BusinessEntityID、FirstName 和 LastName。该数据集将用于提供 BusinessPersonID 参数的有效值。
下一步,您将创建将 FirstName 和 LastName 连接到称为 Name 的字段的其他数据集字段。您定义的字段称为计算字段。
在“报表数据”窗格中定义计算字段
在“报表数据”窗格工具栏中,右键单击 SalesPersons 数据集,再单击**“添加计算字段”。随即将打开“数据集属性”对话框的“字段”**页,并向网格添加一个新行。
在最后一个**“字段名称”**文本框中,键入 Name。
在**“字段源”**文本框中,粘贴以下表达式:
=Fields!LastName.Value & ", " & Fields!FirstName.Value
单击“确定”。
在“报表数据”窗格的 SalesPersons 数据集下,新字段 Name 将出现在该数据集的字段集合中。
下一步,您将指向报表参数 BusinessPersonID 以将此数据集用于其有效值。
使用可用值列表填充报表参数
在“报表数据”窗格中,展开“参数”节点,右键单击 BusinessPersonID,然后单击**“参数属性”**。
在**“提示”**中,键入 Select sales person:。
在**“数据类型”中,选择“整数”**。
单击**“可用值”**。
选择**“从查询中获取值”**选项。
从**“数据集”**下拉列表中,选择 BusinessPersons。
从**“值字段”**下拉列表中,选择 BusinessEntityID。
从**“标签字段”下拉列表中,选择“名称”**。
通过为标签选择“名称”,BusinessEntityID 参数的有效值下拉列表现在将显示每个销售人员的姓名,而不是业务识别号。
单击**“默认值”**。
选择**“从查询中获取值”**选项。
从**“数据集”**下拉列表中,选择 BusinessPersons。
从**“值字段”**下拉列表中,选择 BusinessEntityID。
单击“确定”。
单击**“运行”**。此报表将显示业务人员姓名下拉列表。
单击**“查看报表”**。
报表将显示符合报表参数指定限制条件的所选销售人员的销售订单。有些日期、周工作日和销售人员的组合可能没有结果。
后续步骤
您已经成功地向现有报表添加了参数的可用值列表。接下来,您将修改 DayoftheWeek 和 BusinessPersonID 参数以接受多个值。请参阅第 3 课:添加在列表中选择多个值的参数 (Report Builder 2.0)。