第 4 課:加入串聯參數 (SSRS)
串聯參數提供管理大量報表資料的方法。在使用串聯參數時,某參數的值清單會視前一個參數所選擇的值而定。順序對於串聯參數是非常重要的,因為列在清單中後面之參數的資料集查詢會包含清單中前面參數的參考。
在這一課中,您將使用主資料集查詢建立報表,該查詢會針對類別目錄、子類別目錄和產品定義三種查詢參數。您也必須針對每個串聯參數定義三個額外的資料集來提供可用的值。
將新的報表加入至開啟的報表伺服器專案
在 [方案總管] 中,以滑鼠右鍵按一下 [報表],指向 [加入],再按一下 [新增項目]。
在 [加入新項目] 對話方塊的 [範本] 下,按一下 [報表]。
在 [名稱] 中,輸入 CascadingParameters.rdl,再按一下 [加入]。
報表設計師會在 [設計] 檢視中開啟並顯示新的 .rdl 檔案。
建立共用資料來源的參考
在 [報表資料] 窗格中,按一下 [新增],然後按一下 [資料來源]。
在 [名稱] 中,輸入 AdventureWorks_Ref
選取 [使用共用資料來源參考]。
從下拉式清單方塊中選取 AdventureWorks。
按一下 [確定]。
使用查詢和查詢參數建立主資料集
在 [報表資料] 窗格中,以滑鼠右鍵按一下資料來源 AdventureWorks_Ref,然後按一下 [加入資料集]。
在 [名稱] 中,輸入 SalesbyCategory。
在 [資料來源] 中,確認已選取 [AdventureWorks_Ref]。
在 [查詢類型] 中,確認 [文字] 已選取。
在查詢窗格下方按一下 [查詢設計工具]。
按一下 [當成文字編輯] 切換至以文字為基礎的查詢設計工具。
貼入下列查詢:
SELECT PC.Name AS Category, PSC.Name AS Subcategory, P.Name AS Product, SOH.[OrderDate], SOH.SalesOrderNumber, SD.OrderQty, SD.LineTotal FROM [Sales].[SalesPerson] SP INNER JOIN [Sales].[SalesOrderHeader] SOH ON SP.[BusinessEntityID] = SOH.[SalesPersonID] INNER JOIN Sales.SalesOrderDetail SD ON SD.SalesOrderID = SOH.SalesOrderID INNER JOIN Production.Product P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory PSC ON P.ProductSubcategoryID = PSC.ProductSubcategoryID INNER JOIN Production.ProductCategory PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE (PC.Name = (@Category) AND PSC.Name = (@Subcategory) AND P.Name = (@Product))
查詢現在包含查詢參數 @Category、@Subcategory 和 @Product。
按一下 [執行] (!) 查看結果集。[定義查詢參數] 對話方塊隨即開啟。
請使用下表,在 [參數值] 資料行中輸入每個查詢參數的值。
參數名稱
參數值
@Category
Components
@Subcategory
Brakes
@Product
Front Brakes
按一下 [確定]。
此結果集包含前剎車依日期分組的銷售訂單號碼清單。
當您執行查詢時,每個查詢參數都會產生相對應的報表參數。按兩次 [確定],結束查詢設計工具和對話方塊。
(選擇性) 在 [報表資料] 窗格中展開 [參數] 節點,然後確認下列的報表參數出現:Category、Subcategory 和 Product。
(選擇性) 每個資料集查詢參數的值都會繫結至相同名稱的報表參數。若要進行確認,請在 [報表資料] 窗格中,以滑鼠右鍵按一下 SalesbyCategory,然後按一下 [資料集屬性]。
按一下 [參數]。
在 [參數名稱] 資料行中,確認名稱為 @Category、@Subcategory 和 @Product。
在 [參數值] 資料行中,確認值為 [@Category]、[@Subcategory] 和 [@Product]。
這些簡單的運算式會參考您在 [報表資料] 窗格中所見的報表參數。
下一步,您將建立資料集,以便在執行階段為每個報表參數提供値。這些値會擴展可用的値,並同時提供預設值,使報表能夠自動執行。
為報表參數定義有效的値資料集
在 [報表資料] 窗格中,以滑鼠右鍵按一下 AdventureWorks_Ref,然後按一下 [加入資料集]。
在 [名稱] 中,輸入 CategoryValues。
在 [資料來源] 中,確認已選取 [AdventureWorks_Ref]。
在 [查詢類型] 中,確認 [文字] 已設定。
在 [查詢] 窗格下方按一下 [查詢設計工具]。
按一下 [當成文字編輯] 切換至以文字為基礎的查詢設計工具。
在 [查詢] 窗格中,貼入下列查詢文字:
SELECT DISTINCT Name AS Category FROM Production.ProductCategory
SELECT DISTINCT 命令只會從資料行擷取唯一值。
按一下 [執行] (!) 查看結果集。Category 資料行會顯示四個値:Accessories、Bikes、Clothing 和 Components。
按一下 [確定]。
接下來,您將會設定報表參數 Category 的屬性,以針對其可用値和預設值使用此查詢的値。
設定報表參數的可用值和預設值
在 [報表資料] 窗格的 [參數] 資料夾中,以滑鼠右鍵按一下 Category,然後按一下 [參數屬性]。
在 [名稱] 中確認名稱是 Category。
按一下 [可用的值]。
按一下 [從查詢取得值]。三個欄位隨即出現。
從 [資料集] 中,從下拉式清單選取 [CategoryValues]。
在 [值] 欄位中按一下 [Category]。
在 [標籤] 欄位中按一下 [Category]。
按一下 [預設值]。
按一下 [從查詢取得值]。
在 [資料集] 中,從下拉式清單選取 [CategoryValues]。
在 [值] 欄位中選取 [Category]。
按一下 [確定]。
接下來,您會將 @Subcategory 參數修改為相依於選取的 @Category 値。
加入報表參數 Subcategory 的値資料集
在 [報表資料] 窗格中,以滑鼠右鍵按一下 AdventureWorks_Ref,然後按一下 [加入資料集]。
在 [名稱] 中,輸入 SubcategoryValues。
在 [查詢] 窗格中,貼入下列查詢文字:
SELECT DISTINCT PSC.Name AS Subcategory FROM Production.ProductSubcategory AS PSC INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE PC.Name = (@Category)
按一下 [確定]。
SubcategoryValues 資料集會出現在 [報表資料] 窗格中。如果開啟查詢設計工具,執行查詢,然後輸入 Components 做為類別目錄,結果集就會顯示 14 個資料列。
接下來,請將報表參數 @Subcategory 的屬性設定為針對其可用値和預設值使用此查詢的値。
設定報表參數 Subcategory 的可用值和預設值
在 [報表資料] 窗格的 [參數] 資料夾中,以滑鼠右鍵按一下 Subcategory,然後按一下 [參數屬性]。
按一下 [可用的值]。
按一下 [從查詢取得值]。
在 [資料集] 中,從下拉式清單按一下 [SubcategoryValues]。
在 [值] 欄位中按一下 [Subcategory]。
在 [標籤] 欄位中按一下 [Subcategory]。
按一下 [預設值]。
按一下 [從查詢取得值]。
在 [資料集] 中,從下拉式清單按一下 [SubcategoryValues]。
在 [值] 欄位中按一下 [Subcategory]。
按一下 [確定]。
接下來,建立 @Product 參數,此參數相依於 @Category 和 @Subcategory 兩個値。
加入報表參數 Product 的値資料集
在 [報表資料] 窗格中,以滑鼠右鍵按一下 AdventureWorks_Ref,然後按一下 [加入資料集]。
在 [名稱] 中,輸入 ProductValues。
在 [查詢] 窗格中,貼入下列查詢文字:
SELECT DISTINCT P.Name AS Product FROM Production.Product P INNER JOIN Production.ProductSubcategory AS PSC ON P.ProductSubcategoryID = PSC.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE (PC.Name = (@Category) AND PSC.Name = (@Subcategory))
按一下 [確定]。
名為 ProductValues 的資料集 (具有一個名為 Product 的欄位) 隨即加入至 [報表資料] 窗格。
接下來,請將參數 @Product 的屬性設定為針對其可用値和預設值使用此查詢的値。
設定報表參數 Product 的可用值和預設值
在 [報表資料] 窗格的 [參數] 資料夾中,以滑鼠右鍵按一下 [Product],然後按一下 [參數屬性]。
按一下 [可用的值]。
按一下 [從查詢取得值]。
在 [資料集] 中,從下拉式清單按一下 [ProductValues]。
在 [值] 欄位中按一下 [Product]。
在 [標籤] 欄位中按一下 [Product]。
按一下 [預設值]。
按一下 [從查詢取得值]。
在 [資料集] 中,從下拉式清單按一下 [ProductValues]。
在 [值] 欄位中按一下 [Product]。
按一下 [確定]。
接下來請加入資料表,讓您能查看針對每個串聯參數選擇値的效果。
加入資料表以顯示結果
在 [設計] 檢視中加入資料表。
從 [報表資料] 窗格中的 SalesbyCategory 資料集,將下列欄位拖曳到資料表詳細資料資料列中的 3 個資料格:SalesOrderNumber、OrderQty、LineTotal。
將 Category 從 SalesbyCategory 資料集拖曳到 [RowGroups] 窗格,並放在 [詳細資料] 群組上方。
將 Subcategory 從 SalesbyCategory 資料集拖曳到 [資料列群組] 窗格,並放在 Category 下方。
將 Product 從 SalesbyCategory 資料集拖曳到 [資料列群組] 窗格,並放在 Subcategory 下方。
將 OrderDate 從 SalesbyCategory 資料集拖曳到 [資料列群組] 窗格,並放在 Product 下方。
(選擇性) 設定下列資料格的格式:將 [LineTotal] 格式化為「貨幣」,而將 [OrderDate] 格式化為「日期」。
測試串聯參數
按一下 [預覽]。
報表會自動執行,因為您已經設定了每個報表參數的預設值。
從 [Category] 下拉式清單選取 [Components]。
從 [Subcategory] 下拉式清單選取 [Brakes]。
從 [Product] 下拉式清單中選取 [Front Brakes]。
請注意,當您選取每個連續的參數時,下一個參數的下拉式清單只會根據您所選取的項目顯示可用的值。
在報表檢視器工具列上,按一下 [檢視報表]。
報表會針對含有「前剎」產品的訂單,顯示銷售訂單號碼以及訂單數量和訂單總計。資料表則顯示依類別、子類別、產品和訂購日期所排列的銷售訂單。
後續步驟
您已使用依類別、子類別和產品名稱進行篩選的串聯參數,成功地建立報表以顯示包含特定產品的銷售訂單。在下一課,您將學習傳遞參數到鑽研報表。請參閱<第 5 課:加入傳遞至鑽研報表的參數 (SSRS)>。