共用方式為


第 4 課:加入具有全選的多重值參數

更新: 2006 年 12 月 12 日

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

開啟銷售訂單報表

  1. 在 [SQL Server Business Intelligence Development Studio] 中,開啟上一課中所建立的 Tutorial Report Server 專案。

  2. 在 [方案總管] 中,按兩下 [Sales Orders] 報表。報表隨即在 [配置] 檢視中開啟。

  3. 按一下 [資料] 索引標籤。

修改資料集查詢,以測試納入值集合中

  1. 從 [資料集] 下拉式清單中,選擇 [AdventureWorks]。

  2. @SalesPersonID 測試從等式 (= (@SalesPersonID)) 變更為納入 (IN (@SalesPersonID)),藉此修改現有查詢的 WHERE 子句。

    以下列查詢取代此資料集的查詢字串。

    SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday,
        S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    WHERE
       (
       S.OrderDate BETWEEN (@StartDate) AND (@EndDate) 
       AND
       S.SalesPersonID IN (@SalesPersonID)
       )
    
  3. 按一下 [執行] (!) 按鈕。提示輸入查詢參數時,請使用下表來輸入值。查詢設計師不支援測試多重值參數。

    @StartDate

    20010101

    @EndDate

    20030101

    @SalesPersonID

    286

  4. 按一下 [確定]。結果集顯示銷售人員 Ranjit Varkey Chudakatil 的 SalesPersonID = 286。

設定報表參數 SalesPersonID 的屬性

  1. 在 [報表] 功能表上,選取 [報表參數]。[報表參數] 對話方塊隨即開啟。

  2. 在 [參數] 窗格中,選取 [SalesPersonID]。

  3. 在 [屬性] 區段中,選取 [多重值]。

  4. 在 [提示] 文字方塊中,輸入 Select Sales Persons:

  5. 按一下 [確定]。

  6. 按一下 [預覽] 索引標籤。報表會顯示列有銷售人員姓名的下拉式清單。

Aa337396.note(zh-tw,SQL.90).gif附註:
(全選) 值會提供作為多重值參數的可用值下拉式清單中的第一個值。使用此核取方塊,即可選取或清除所有值。
Aa337396.note(zh-tw,SQL.90).gif附註:
SQL Server 2005 Service Pack 1 已停用 [全選] 選項,但是 SQL Server 2005 Service Pack 2 已還原此選項。

為 DaysoftheWeek 加入新資料集作為可用的值

  1. 在 [資料] 索引標籤上,從 [資料集] 下拉式清單中選擇 [新增資料集]<>。

  2. 將資料來源設定為 AdventureWorks 資料來源。

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

  4. 將下列查詢字串貼入查詢窗格中。

    SET DATEFIRST 1;
    SELECT DISTINCT 
       DATEPART(weekday, S.OrderDate) as WeekDayNumber,
       DATENAME(weekday, S.OrderDate) as Weekday
       FROM Sales.SalesOrderHeader S
    Order by WeekDayNumber
    

    DATEFIRST 會設定您要將一週中的星期幾當做第一天。例如,SET DATEFIRST 7 會變更一週中星期幾的順序,讓星期日成為第一天。如需詳細資訊,請參閱<SET DATEFIRST (Transact-SQL)>。

    在本教學課程中,星期一是一週的第一天。

  5. 按一下 [確定]。

  6. 按一下查詢設計師工具列上的 [執行] (!) 按鈕。結果集顯示序數和一週的星期幾。

設定報表參數 DayoftheWeek 的屬性

  1. 在 [報表] 功能表上,選取 [報表參數]。[報表參數] 對話方塊隨即開啟。

  2. 在 [參數] 窗格中,選取 [DayoftheWeek]。此參數是在第 2 課建立的。

  3. 在 [屬性] 區段中,選取 [多重值]。

  4. 在 [提示] 文字方塊中,輸入 Filter on which days of the week:

  5. 在 [可用的值] 區段中,從 [資料集] 下拉式清單中選取 [WeekDaysfromQuery]。

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

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

    對於 [預設值],在第一個 [值] 文字方塊中,輸入 Saturday,在第二個 [值] 文字方塊中輸入 Sunday

  8. 按一下 [確定]。

    您必須先將為資料表資料區域定義的篩選運算式變更為使用 IN 運算子,才能預覽報表,因為 DayoftheWeek 參數現在已經是多重值。

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

  1. 在 [配置] 檢視中選取資料表。資料表隨即以灰色外框出現。

  2. 以滑鼠右鍵按一下資料表外框,並選取 [屬性]。[資料表屬性] 對話方塊隨即開啟。

  3. 按一下 [篩選] 索引標籤。

  4. 在 [運算式] 資料行中,從下拉式清單確認值為 =Fields!Weekday.Value

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

  6. 在 [值] 文字方塊中,從下拉式清單確認值為 =Parameters!DayoftheWeek.Value

  7. 按一下 [確定]。

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

  8. 按一下 [預覽] 索引標籤。報表顯示報表參數 DaysoftheWeek 具有預設值 SaturdaySunday

Aa337396.note(zh-tw,SQL.90).gif附註:
除了上一個程序所提到的例外,(全選) 值會提供作為多重值參數的可用值下拉式清單中的第一個值。使用此核取方塊,即可選取或清除所有值。

加入文字方塊以顯示參數值

  1. 在 [配置] 檢視中選取資料表。按向下鍵數次,讓資料表下移,並延伸報表高度。

  2. 從工具箱中,將文字方塊拖曳到資料表上方。選取文字方塊的一邊,將它的寬度延伸至與資料表的寬度相符。

  3. 將下列運算式貼入文字方塊中:

    ="From " & Parameters!StartDate.Value & " to " & 
    Parameters!EndDate.Value & vbCrLf & "For the following " & 
    Parameters!DayoftheWeek.Count & " days of the week: " & 
    Join(Parameters!DayoftheWeek.Value,", ") & vbCrLf &
    "First and last selected salespersons: " & 
    Parameters!SalesPersonID.Label(0) & " and " & 
    Parameters!SalesPersonID.Label(Parameters!SalesPersonID.Count-1)
    

    此運算式有幾點需要注意:

    • 您可以參考參數標籤,而不要參考值。例如:參考 Parameters!SalesPersonID.Label,而非 Parameters!SalesPersonID.Value
    • 若要處理參數集合中的各個成員,請使用以零為基底的索引。例如:Parameters!SalesPersonID.Label(0)
    • 若要處理整個集合,請不要使用索引。例如:Parameters!SalesPersonID.Value
    • 若要計算值的數目,請使用 Parameters!SalesPersonID.Count
    • 您也可以查看參數是否為多重值。例如:Parameters!SalesPersonID.IsMultivalue
    • 您可以使用 Visual Basic Join 函數,將所有選取的值串連在多重值參數中。例如,Join(Parameters!DayoftheWeek.Value,", ")
  4. 按一下 [預覽]。確認當您按下 [檢視報表] 時,文字方塊會顯示您先前在參數中選取的值。

後續的步驟

您已順利將報表參數屬性從單一值變更為多重值。您已在查詢、篩選和運算式中進行必要的變更,以配合使用多重值參數集合。您已學習到如何在運算式中使用多重值參數。在下一課,您將學習如何建立布林參數,以控制要在報表中看到多少詳細資料。請參閱<第 5 課:加入參數以控制資料列可見性>。

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

變更的內容:
  • SP 2 中已還原 [全選] 選項。

請參閱

工作

第 1 課:為參數教學課程建立報表伺服器專案

其他資源

在 Reporting Services 中使用參數

說明及資訊

取得 SQL Server 2005 協助