第 2 課:加入參數以建立可用值的清單 (SSRS)
可用值 (或有效值) 提供使用者一份報表參數的可能值清單。身為報表作者,您可以從特別設計來擷取資料來源中一組值的查詢提供有效值,也可以提供一組預先定義的值。透過將一組可用的值繫結至報表處理時所執行的資料集查詢,您就可以確保從下拉式清單只能選擇資料庫中現有的值。
在本課中,您將修改「銷售訂單」報表,以便從 SQL Server AdventureWorks2008R2 資料庫提供一份可用銷售人員名稱的下拉式清單。您將設定資料表屬性,在所選取參數值的結果集中沒有資料列時顯示訊息。當您選擇姓名並檢視報表時,報表只會顯示該銷售人員的銷售額。
取代現有的資料集
在 [報表資料] 窗格中,以滑鼠右鍵按一下 AdventureWorksDataset 資料集,然後按一下 [資料集屬性]。
[!附註]
如果您看不到 [報表資料] 窗格,請按一下 [檢視] 功能表上的 [報表資料]。
在 [資料來源] 中,確認已選取 [AdventureWorks_Ref]。
在 [查詢類型] 中,確認 [文字] 已選取。
按一下 [查詢設計工具] 按鈕來開啟查詢設計工具。
以下列查詢取代文字方塊中的文字:
SELECT soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND soh.SalesPersonID = (@BusinessPersonID)
除了加入將結果值限制為一個銷售人員的條件之外,這與之前的查詢相同。
AND soh.SalesPersonID = (@BusinessPersonID)
按一下 [執行] (!) 按鈕。提示輸入查詢參數時,請使用下表來輸入值。
@StartDate
1/31/2001
@EndDate
1/31/2003
@BusinessPersonID
290
按一下 [確定]。 結果集顯示銷售人員 Ranjit Varkey Chudukatil 的 SalesPersonID = 290。
擴展報表參數的有效值清單
在 [報表資料] 窗格中,按一下 [新增],然後按一下 [資料集]。[資料集屬性] 對話方塊隨即開啟。
在 [名稱] 欄位中,輸入 BusinessPersons。此資料集將用於擴展 SalesPersonID 報表參數的有效值清單。
確認資料來源為 AdventureWorks_Ref。
將下列 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
按兩次 [確定]。BusinessPersons 資料集會擴展欄位的清單。此資料集將用於提供 BusinessPersonID 參數的有效值。
您將會注意到 BusinessPersons 資料集擁有稱為 FirstName 和 LastName 的欄位。下一步,我們會將這些欄位串連到一個稱為 Name 的欄位。
若要在報表資料窗格中定義導出欄位
在 [報表資料] 窗格的工具列中,以滑鼠右鍵按一下 BusinessPersons 資料集,然後按一下 [加入導出欄位]。[資料集屬性] 對話方塊的 [欄位] 頁面會開啟,並在方格中加入一個新的資料列。
在最後一個 [欄位名稱] 文字方塊中,輸入 Name。
在 [欄位來源] 文字方塊中,貼上下列運算式:
=Fields!LastName.Value & ", " & Fields!FirstName.Value
按一下 [確定]。
在 [報表資料] 窗格的 BusinessPersons 資料集下,新的 Name 欄位會出現在資料集的欄位集合中。
若要利用可用值的清單擴展報表參數
在 [報表資料] 窗格中,展開 [參數] 節點,並以滑鼠右鍵按一下 BusinessPersonID,然後按一下 [參數屬性]。
在 [提示] 中,輸入 Select business person:。
在 [資料類型] 中選取 [整數]。
按一下 [可用的值]。
選取 [從查詢取得值] 選項。
從 [資料集] 下拉式清單中,選取 [BusinessPersons]。
從 [值欄位] 下拉式清單中,選取 [BusinessEntityID]。
從 [標籤欄位] 下拉式清單中,選取 [Name]。
透過選取標籤的名稱,BusinessEntityID 參數的有效值下拉式清單現在將會顯示每個銷售人員的姓名,而不是銷售人員編號。
按一下 [預設值]。
選取 [從查詢取得值] 選項。
從 [資料集] 下拉式清單中,選取 [BusinessPersons]。
從 [值欄位] 下拉式清單中,選取 [BusinessEntityID]。
按一下 [確定]。
按一下 [預覽] 索引標籤。報表會顯示包含商務人員姓名的下拉式清單。
按一下 [檢視報表]。選取其他參數值以檢視結果。
後續步驟
您已順利在現有的報表中加入參數的可用值清單。下一步,您會將 DayoftheWeek 和 SalesPersonID 參數修改成多重值。請參閱<第 3 課:加入參數以選取清單中的多個值 (SSRS)>。