第 4 課:加入具有全選的多重值參數
更新: 2006 年 12 月 12 日
在這一課,您會將 SalesOrderID 和 DayoftheWeek 參數從單一值參數變更為多重值參數。多重值參數可讓您為報表參數選取多個值。若要修改報表參數 SalesOrderID,您將變更 AdventureWorks 資料集的查詢,以針對選取值集合中的 @SalesPersonID 進行測試,而不是變更成等於單一值,並且檢查報表參數的多重值屬性。若要修改 DayoftheWeek 報表參數,您將檢查多重值屬性、從新資料集設定可用的值,並且提供預設值的運算式。您將建立新的資料集,以提供 DayoftheWeek 參數的可用值。最後,您將會在報表中加入文字方塊,以顯示所選取 DayoftheWeek 項目的參數值。
開啟銷售訂單報表
在 [SQL Server Business Intelligence Development Studio] 中,開啟上一課中所建立的 Tutorial Report Server 專案。
在 [方案總管] 中,按兩下 [Sales Orders] 報表。報表隨即在 [配置] 檢視中開啟。
按一下 [資料] 索引標籤。
修改資料集查詢,以測試納入值集合中
從 [資料集] 下拉式清單中,選擇 [AdventureWorks]。
將
@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) )
按一下 [執行] (!) 按鈕。提示輸入查詢參數時,請使用下表來輸入值。查詢設計師不支援測試多重值參數。
@StartDate
20010101
@EndDate
20030101
@SalesPersonID
286
按一下 [確定]。結果集顯示銷售人員 Ranjit Varkey Chudakatil 的 SalesPersonID = 286。
設定報表參數 SalesPersonID 的屬性
在 [報表] 功能表上,選取 [報表參數]。[報表參數] 對話方塊隨即開啟。
在 [參數] 窗格中,選取 [SalesPersonID]。
在 [屬性] 區段中,選取 [多重值]。
在 [提示] 文字方塊中,輸入 Select Sales Persons:。
按一下 [確定]。
按一下 [預覽] 索引標籤。報表會顯示列有銷售人員姓名的下拉式清單。
附註: |
---|
(全選) 值會提供作為多重值參數的可用值下拉式清單中的第一個值。使用此核取方塊,即可選取或清除所有值。 |
附註: |
---|
SQL Server 2005 Service Pack 1 已停用 [全選] 選項,但是 SQL Server 2005 Service Pack 2 已還原此選項。 |
為 DaysoftheWeek 加入新資料集作為可用的值
在 [資料] 索引標籤上,從 [資料集] 下拉式清單中選擇 [新增資料集]<>。
將資料來源設定為 AdventureWorks 資料來源。
在 [名稱] 欄位中,輸入 WeekDaysfromQuery。
將下列查詢字串貼入查詢窗格中。
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)>。在本教學課程中,星期一是一週的第一天。
按一下 [確定]。
按一下查詢設計師工具列上的 [執行] (!) 按鈕。結果集顯示序數和一週的星期幾。
設定報表參數 DayoftheWeek 的屬性
在 [報表] 功能表上,選取 [報表參數]。[報表參數] 對話方塊隨即開啟。
在 [參數] 窗格中,選取 [DayoftheWeek]。此參數是在第 2 課建立的。
在 [屬性] 區段中,選取 [多重值]。
在 [提示] 文字方塊中,輸入 Filter on which days of the week:。
在 [可用的值] 區段中,從 [資料集] 下拉式清單中選取 [WeekDaysfromQuery]。
從 [值欄位] 下拉式清單中,選取 [Weekday]。
從 [標籤欄位] 下拉式清單中,選取 [Weekday]。
對於 [預設值],在第一個 [值] 文字方塊中,輸入 Saturday,在第二個 [值] 文字方塊中輸入 Sunday。
按一下 [確定]。
您必須先將為資料表資料區域定義的篩選運算式變更為使用 IN 運算子,才能預覽報表,因為 DayoftheWeek 參數現在已經是多重值。
變更篩選以使用多重值參數
在 [配置] 檢視中選取資料表。資料表隨即以灰色外框出現。
以滑鼠右鍵按一下資料表外框,並選取 [屬性]。[資料表屬性] 對話方塊隨即開啟。
按一下 [篩選] 索引標籤。
在 [運算式] 資料行中,從下拉式清單確認值為
=Fields!Weekday.Value
。將 [運算子] 從等號 (=) 變更為 In 運算子。
在 [值] 文字方塊中,從下拉式清單確認值為
=Parameters!DayoftheWeek.Value
。按一下 [確定]。
資料表的篩選現在設定為使用 In 運算子,比較 [Weekday] 欄位的值與 DayoftheWeek 參數的值。選擇報表參數的多重值時,篩選會測試資料表中的各個資料列,查看 DayoftheWeek 集合中的 [Weekday] 欄位是否存在。
按一下 [預覽] 索引標籤。報表顯示報表參數 DaysoftheWeek 具有預設值 Saturday 和 Sunday。
附註: |
---|
除了上一個程序所提到的例外,(全選) 值會提供作為多重值參數的可用值下拉式清單中的第一個值。使用此核取方塊,即可選取或清除所有值。 |
加入文字方塊以顯示參數值
在 [配置] 檢視中選取資料表。按向下鍵數次,讓資料表下移,並延伸報表高度。
從工具箱中,將文字方塊拖曳到資料表上方。選取文字方塊的一邊,將它的寬度延伸至與資料表的寬度相符。
將下列運算式貼入文字方塊中:
="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,", ")
。
- 您可以參考參數標籤,而不要參考值。例如:參考
按一下 [預覽]。確認當您按下 [檢視報表] 時,文字方塊會顯示您先前在參數中選取的值。
後續的步驟
您已順利將報表參數屬性從單一值變更為多重值。您已在查詢、篩選和運算式中進行必要的變更,以配合使用多重值參數集合。您已學習到如何在運算式中使用多重值參數。在下一課,您將學習如何建立布林參數,以控制要在報表中看到多少詳細資料。請參閱<第 5 課:加入參數以控制資料列可見性>。
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 12 月 12 日 |
|