第 2 課:加入參數以建立可用值的清單 (報表產生器 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]。
從 [標籤欄位] 下拉式清單中,選取 [Name]。
透過選取標籤的名稱,BusinessEntityID 參數的有效值下拉式清單現在將會顯示每個銷售人員的名稱,而不是商務識別碼。
按一下 [預設值]。
選取 [從查詢取得值] 選項。
從 [資料集] 下拉式清單中,選取 [BusinessPersons]。
從 [值欄位] 下拉式清單中,選取 [BusinessEntityID]。
按一下 [確定]。
按一下 [執行],報表會顯示包含商務人員名稱的下拉式清單。
按一下 [檢視報表]。
報表就會針對符合報表參數所指定之限制的選取銷售人員,顯示銷售訂單。某些日期、當週日期和銷售人員的組合可能沒有任何結果。
後續步驟
您已順利在現有的報表中加入參數的可用值清單。下一步,您會將 DayoftheWeek 和 BusinessPersonID 參數修改成接受多重值。請參閱<第 3 課:加入參數以選取清單中的多個值 (報表產生器 2.0)>。