共用方式為


第 3 課:加入參數以選取清單中的多個值 (SSRS)

在這一課,您會將 BusinessPersonID 和 DayoftheWeek 參數從單一值參數變更為多重值參數。多重值參數可讓您為報表參數選取多個值。若要修改報表參數 BusinessPersonID,您將變更 AdventureWorks2008R22008 資料集的查詢,以針對所選值集合中的 @BusinessPersonID 進行測試,而不是變更成等於單一值,並且檢查報表參數的多重值屬性。若要修改 DayoftheWeek 報表參數,您將檢查多重值屬性、從新資料集設定可用的值,並且提供預設值的運算式。您將建立新的資料集,以提供 DayoftheWeek 參數的可用值。最後,您將會在報表中加入文字方塊,以顯示所選取 DayoftheWeek 項目的參數值。

取代現有的資料集

  1. 在 [報表資料] 窗格中,以滑鼠右鍵按一下 AdventureWorksDataset 資料集,然後按一下 [資料集屬性]

  2. [資料來源] 中,確認已選取 [AdventureWorks_Ref]。

  3. [查詢類型] 中,確認 [文字] 已選取。

  4. 按一下 [查詢設計工具] 按鈕來開啟查詢設計工具。

  5. 以下列查詢取代文字方塊中的文字:

    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 IN (@BusinessPersonID)
    

    除了條件從等於變更為包含之外,這與之前的查詢相同。

    AND soh.SalesPersonID IN (@BusinessPersonID)
    
  6. 按一下 [執行] (!) 按鈕。提示輸入查詢參數時,請使用下表來輸入值。查詢設計工具不支援測試多重值參數。

    @StartDate

    1/1/2001

    @EndDate

    1/1/2003

    @BusinessPersonID

    290

  7. 按一下 [確定]。 

    結果集顯示銷售人員 Ranjit Varkey Chudukatil 的 BusinessPersonID = 290。

編輯 BusinessPersonID 報表參數以接受多個值

  1. 在 [報表資料] 窗格中,展開 [參數],然後按兩下 BusinessPersonID 參數。

  2. 選取 [允許多個值] 選項。

  3. 按一下 [確定]。 

  4. 按一下 [預覽]。報表就會自動執行。BusinessPersonID 的下拉式清單會顯示所有銷售人員的名稱。

[!附註]

([全選]) 值會提供做為多重值參數的可用值下拉式清單中的第一個值。使用此核取方塊,即可選取或清除所有值。根據預設,系統會選取所有值。

加入新的資料集以擴展報表參數的有效值

  1. 切換至 [設計] 檢視。

  2. 在 [報表資料] 窗格中,以滑鼠右鍵按一下 AdventureWorks_Ref,然後按一下 [加入資料集][資料集屬性] 對話方塊隨即開啟。

  3. [名稱] 欄位中,輸入 WeekDaysfromQuery。

  4. [查詢類型] 中,確認 [文字] 已選取。

  5. [查詢] 中,輸入或貼上下列查詢字串:

    SET DATEFIRST 1;
    SELECT DISTINCT 
       DATEPART(weekday, S.OrderDate) as WeekDayNumber,
       DATENAME(weekday, S.OrderDate) as Weekday
       FROM Sales.SalesOrderHeader S
    Order by WeekDayNumber
    
  6. 在查詢設計工具的工具列上,按一下 [執行] (!) 按鈕。結果集會顯示序數和一週的星期幾。

  7. 按兩次 [確定],結束 [資料集屬性] 對話方塊。

    WeekDaysfromQuery 資料集會出現在 [報表資料] 窗格中。

編輯參數以接受多個值、預設值與有效值

  1. 在 [報表資料] 窗格中,展開 [參數],然後按兩下 DayoftheWeek。[報表參數屬性] 對話方塊隨即開啟。

  2. 選取 [允許多個值]

  3. 按一下 [可用的值]

  4. 選取 [從查詢取得值]

  5. [資料集] 中,從下拉式清單選取 WeekDaysfromQuery。

  6. [值欄位] 的下拉式清單中,選取 Weekday

  7. [標籤欄位] 的下拉式清單中,選取 Weekday

  8. 按一下 [預設值]

  9. 選取 [指定值]

  10. (選擇性) 選取現有的值 Friday,然後按一下 [刪除]

  11. 按一下 [加入]

  12. [值] 中,輸入 Saturday。

  13. 按一下 [加入]

  14. [值] 中,輸入 Sunday。

  15. 按一下 [確定]。 

您必須先將針對資料表資料區域定義的篩選運算式變更為使用 IN 運算子,才能預覽報表,因為 DayoftheWeek 參數接受多個值。

變更篩選以使用多重值參數

  1. [設計] 檢視中,以滑鼠右鍵按一下資料表,再按一下 [Tablix 屬性][Tablix 屬性] 對話方塊隨即開啟。

  2. 按一下 [篩選]。已經有一個從第 1 課針對 DaysoftheWeek 加入的篩選器。

  3. [運算式] 中,從下拉式清單確認值為 [Weekday]。

  4. 確認 [文字] 已選取。

  5. [運算子] 從等號 (=) 變更為 In 運算子。

  6. [值] 文字方塊中,從下拉式清單確認值為 [@DayoftheWeek]。

  7. 按一下 [確定]。 

    資料表的篩選現在設定為使用 In 運算子,比較 Weekday 欄位的值與 DayoftheWeek 參數的值。選擇報表參數的多個值時,篩選會測試資料表的各個資料列,查看 DayoftheWeek 集合中的 Weekday 欄位是否存在。

  8. 按一下 [預覽]。報表會顯示報表參數 DaysoftheWeek,其中具有預設值星期六和星期日。使用下拉式清單選取 DayoftheWeek 參數的多個值。

後續步驟

您已順利將報表參數屬性從單一值變更為多重值。您已在查詢、篩選和運算式中進行必要的變更,以配合使用多重值參數集合。您已學習到如何在運算式中使用多重值參數。在下一課,您將學到如何建立根據先前參數選取之值,有條件地擴展其值的參數。請參閱<第 4 課:加入串聯參數 (SSRS)>。