第 3 課:使用參數變更初始排序和互動式排序

新增: 2006 年 7 月 17 日

您可以定義讓報表讀者能夠互動地對資料區域或群組中一個或多個報表資料的資料行變更排序順序的報表。您可以提供使用互動式排序或參數化排序來變更排序順序的能力。

使用互動式排序時,您會設定資料行或群組首文字方塊的 UserSort 屬性。報表轉譯時,資料行標題上會出現排序控制項按鈕,報表讀者可以按一下按鈕來排序資料。剛開始,資料是未排序的。第一次點選時會以遞增的順序來排序資料。連續點選則會在遞增和遞減的順序之間切換排序順序。

使用參數化排序時,您會建立參數來設定排序順序,並在資料集、資料區域或群組的排序運算式中加入含有該參數的運算式。

在這一課,您將加入兩種排序類型。您將加入 InitialSort 參數,並在 TotalDue 資料表資料行上設定排序運算式,用於初始依照彙總的總數來排序資料表群組。您將建立 SortBy 參數,讓報表讀者可以選擇要依照資料表 Store 資料行中的商店名稱還是每家商店的銷售訂單數目來排序。您將在 Store 資料行加入互動式排序按鈕,然後根據 SortBy 值設定排序運算式。

開啟 Advanced Parameters Tutorial 報表伺服器專案

  1. [SQL Server Business Intelligence Development Studio] 中,開啟 Advanced Parameters Tutorial 報表伺服器專案 (如果尚未開啟的話)。

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

在下一個程序中,您將變更資料表群組首,以顯示商店名稱和每家商店的銷售數目。您將建立報表參數,讓使用者可以選擇排序資料表群組的方式:依照商店名稱或每家商店的銷售數目。

在群組首中加入群組計數值

  1. 選取第一個資料表群組首資料列中的 [Store] 文字方塊。

  2. 以下列內容取代運算式 =Fields!Store.Value

    =Fields!Store.Value & vbCrLf & vbTab & "(" & 
    Count(Fields!SalesOrderNumber.Value, "table1_Store") & ")"
    
  3. (選擇性) 按一下 [預覽],在群組首第一個資料列的不同行上,查看商店名稱或每家商店的銷售數目。

在下一個程序中,您將建立報表參數,讓使用者可以選取要排序資料表群組的方式:依照商店名稱或銷售數目。

加入新的報表參數

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

  2. 按一下 [加入]。隨即建立含有預設值的新參數。

  3. [屬性] 區段的 [名稱] 文字方塊中,輸入 UserSortBy。確認資料類型是 String

  4. [提示] 中,輸入 How do you want to sort the table group?

  5. 清除 [允許空白] 選項。

  6. [可用的值] 區段中選取 [非查詢的]。請使用下表來輸入值。

    標籤

    Name of store

    Name

    Number of sales per store

    Number

  7. [預設值] 區段中選取 [非查詢的]。在文字方塊中,輸入 Name

  8. 按一下 [確定]

在下一個程序中,您將在顯示商店名稱和銷售數目的群組首文字方塊中加入 UserSort (也稱為互動式排序) 控制項。您將為控制項設定運算式,以使用 UserSortBy 報表參數的值。當您預覽報表時,該資料行上會出現排序按鈕。您可以按一下排序按鈕,在遞增和遞減值之間切換,以排序此參數所定義的欄位。

在群組上加入互動式排序按鈕

  1. 在資料表頁首資料列中,以滑鼠右鍵按一下名稱為 textbox2 的第一個文字方塊,然後選擇 [屬性]。此文字方塊的內容是字串 "Store"。[文字方塊屬性] 對話方塊隨即開啟。

  2. 按一下 [互動式排序] 索引標籤。

    [互動式排序] 索引標籤上設定屬性的方式,與在文字方塊上設定 UserSort 屬性的方式完全相同。

  3. 選取 [將互動式排序動作加入此文字方塊] 選項。

  4. 按一下 [運算式] (Fx) 按鈕。[編輯運算式] 對話方塊隨即開啟。

  5. 將下列運算式貼入運算式窗格中:

    =IIF(Parameters!UserSortBy.Value="Name",Fields!Store.Value,
    Count(Fields!SalesOrderNumber.Value, "table1_Store"))
    

    如果直接將此運算式貼入文字方塊中,將只會取得運算式的第一行。

  6. 按一下 [確定]

  7. 在 [要排序的資料區域或群組] 區段中,選取 [選擇資料區域或群組]。從下拉式清單中,選擇 [table1]。這是資料表資料區域。

  8. 在 [評估此範圍中的排序運算式] 區段中,選取 [選擇資料區域或群組]。從下拉式清單中,選擇 [table1_Store]。這是資料表內的商店群組。

    如果 UserSortBy 參數設為 Name,則此運算式會評估為 Fields!Store.Value,並且資料表群組會依照上一課所提到的方式排序 (也就是依照商店名稱的字母順序排序)。如果 UserSortBy 參數不是設為 Name,則資料表群組將依照群組中銷售數目的遞增順序排序。

  9. 按一下 [預覽]

    資料表中的 Store 資料行現在具有互動式排序按鈕。初始的排序順序為資料表群組排序的預設值。第一次點選互動式排序按鈕時,資料行會根據 UserSortBy 參數值排序。後續點選互動式排序按鈕則會在遞增與遞減之間切換排序順序。

  10. 從下拉式清單中,將 UserSortBy 的參數值變更為 Number of sales per store。按一下 [檢視報表]

    排序資料行不會產生任何變更,必須等到報表重新處理,讓參數運算式能夠為此新的參數設定進行重新評估,才會產生變更。資料行現在是依照銷售數目排序,而不是依照商店名稱排序。

在下一個程序中,您將加入參數,讓使用者可以選擇排序資料表詳細資料列的方式。

加入新的報表參數,以參數化排序

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

  2. 按一下 [加入]。隨即建立含有預設值的新參數。

  3. [屬性] 區段的 [名稱] 文字方塊中,輸入 InitialSort。確認資料類型是 String

  4. [提示] 中,輸入How do you want to sort the table detail rows?

  5. 清除 [允許空白] 選項。

  6. [可用的值] 區段中選取 [非查詢的]。請使用下表來輸入值。

    標籤

    Total due

    TotalDue

    Sales order date

    OrderDate

  7. [預設值] 區段中選取 [非查詢的]。在文字方塊中,輸入 TotalDue

  8. 按一下 [確定]

在下一個程序中,您將定義使用 InitialSort 報表參數的排序運算式,讓資料表詳細資料列根據您所選擇的值排序。

將排序運算式加入至資料表詳細資料列

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

  2. 按一下 [排序] 索引標籤。

  3. [運算式] 文字方塊下拉式清單中,選取 [<運算式>][編輯運算式] 對話方塊隨即開啟。

  4. 以下列內容取代等號 (=):

    =IIF(InStr(Parameters!InitialSort.Value,"TotalDue")>0,Fields!TotalDue.Value,Fields!OrderDate.Value)
    

    如此,即可測試字串值 "TotalDue" 的參數。如果找到 TotalDue 欄位,就會用作排序順序;如果找不到,則會使用 OrderDate 欄位。排序順序方向 ([遞增][遞減]) 並不是以運算式為基礎,因此,您在 [排序] 索引標籤上設定的值會套用至評估運算式中指定的欄位。

  5. 按一下 [確定]

  6. (選擇性) 變更 InitialSort 的參數值,然後按一下 [檢視報表]。展開 Efficient Cycling 商店的節點。確認詳細資料列是依照 InitialSort 設定來排序。

後續的步驟

您已順利加入兩個參數,以控制是否要依照商店名稱或銷售數目來排序 Store 資料行上的互動式按鈕,以及是否依照訂單日期或應付總額排序資料表的詳細資料列。在下一課,您將學習如何使用隱藏的布林參數控制此報表的初始向下鑽研狀態。請參閱<第 4 課:加入布林參數,以控制初始向下鑽研狀態>。

請參閱

其他資源

在 Reporting Services 中使用參數
在報表中排序資料

說明及資訊

取得 SQL Server 2005 協助