共用方式為


教學課程:將參數新增至報表(報表產生器)

將參數新增至報表,讓使用者從數據源或報表中篩選報表數據。 報表參數會自動為數據集查詢中包含的每個查詢參數建立。 參數數據類型會決定報表檢視工具列上的顯示方式。

rs_tut_Parameter

學習內容

在本教學課程中,您將瞭解如何執行下列動作:

  1. 從數據表或矩陣精靈建立矩陣報表和數據集

  2. 從數據表或矩陣精靈組織數據、選擇版面配置和樣式

  3. 新增查詢參數以建立報表參數

  4. 變更報表參數的預設數據類型和其他屬性

    1. 新增數據集以提供可用的值和顯示名稱

    2. 指定可用的值以創建一個 Drop-List 的值集合

    3. 指定預設值,讓報表自動執行

    4. 從具有名稱/值組的數據集查閱值

  5. 在報表中顯示選取的參數值

  6. 在篩選中使用報表參數

  7. 將報表參數變更為接受多個值

  8. 為條件式可見性新增布爾參數

  9. 新增報表標題

  10. 儲存報表

備註

在本教學課程中,將精靈的步驟合併為一個程序。 如需如何流覽至報表伺服器、選擇數據源及建立數據集的逐步指示,請參閱本系列中的第一個教學 課程:教學課程:建立基本數據表報表(報表產生器)

完成本教學課程的估計時間:25 分鐘。

需求

如需需求的相關信息,請參閱教學課程的必要條件(報表產生器)。

1.從數據表或矩陣精靈建立矩陣報表和數據集

建立矩陣報表、數據源和數據集。

備註

在本教學課程中,查詢包含數據值,因此不需要外部數據源。 這使查詢變得相當長。 在商務環境中,查詢不會包含數據。 這僅供學習之用。

若要建立新的矩陣報表

  1. 按兩下 [開始],指向 [ 程式],指向 [Microsoft SQL Server 2014報表產生器],然後按兩下 [ 報表產生器]。

    [ 用戶入門] 對話框隨即出現。

    備註

    如果 [ 開始使用] 對話框未出現,請從 [報表產生器 ] 按鈕按兩下 [ 新增]。

  2. 在左窗格中,確認已選取 [報表 ]。

  3. 在右窗格中,按兩下 [ 資料表或矩陣精靈]。

  4. 點擊 建立

  5. 在 [ 選擇數據集] 頁面上,按兩下 [ 建立數據集]。

  6. [下一步]。

  7. 在 [ 選擇與數據源的連接 ] 頁面上,選取類型為 SQL Server 的數據源。 從清單中選取數據源,或流覽至報表伺服器以選取一個數據源。

  8. [下一步]。

  9. 設計查詢 頁面上,點擊 編輯為文字

  10. 將下列查詢貼到查詢窗格中:

    ;WITH CTE (StoreID, Subcategory, Quantity)   
    AS (  
    SELECT 200 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 2002 AS Quantity  
    UNION SELECT  200 AS StoreID, 'Camcorders' AS Subcategory, 1954 AS Quantity  
    UNION SELECT  200 AS StoreID, 'Accessories' AS Subcategory, 1895 AS Quantity  
    UNION SELECT  199 AS StoreID, 'Digital Cameras' AS Subcategory, 1849 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1579 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Camcorders' AS Subcategory, 1561 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Digital Cameras' AS Subcategory, 1553 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Accessories' AS Subcategory, 1534 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Accessories' AS Subcategory, 1755 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Camcorders' AS Subcategory, 1631 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1772 AS Quantity)  
    SELECT StoreID, Subcategory, Quantity  
    FROM CTE  
    

    此查詢會結合通用數據表運算式內數個 Transact-SQL SELECT 語句的結果,以指定以 Contoso 範例資料庫中簡化數據為基礎的值。 Contoso 銷售數據代表消費品的國際銷售數據。 本教學課程使用相機的銷售數據。 子類別代表數位相機、數位單鏡頭反射(SLR)相機、攝像機和配件。

    查詢會指定數據行名稱,其中包含商店標識符、銷售項目子類別,以及從三家商店訂購銷售訂單的數量。 在此查詢中,存放區名稱不是結果集的一部分。 在本教學課程稍後,您將查閱對應於單獨數據集中的商店標識符的商店名稱。

    此查詢不包含查詢參數。 您稍後將在本教學課程中新增查詢參數。

  11. 在查詢設計工具工具列上,按兩下 [執行] (!)。 結果集會顯示 11 個數據列,其中顯示四個商店每個子類別銷售的項目數量,並包含下列數據行:StoreID、Subcategory、Quantity。

  12. [下一步]。

2.從數據表或矩陣精靈組織數據、選擇版面配置和樣式

使用精靈提供要顯示數據的起始設計。 精靈中的預覽窗格可協助您在完成數據表或矩陣設計之前,將群組數據的結果可視化。

將數據組織成群組

  1. 在 [排列欄位] 頁面上,將 [子類別] 拖曳至 [列群組]。

  2. 將 StoreID 拖曳至 欄群組

  3. 將數量拖移至

    您已將銷售數量值依子類別分組排列在行列中。 每個商店都會有一個欄。

  4. [下一步]。

  5. 在 [ 選擇版面配置] 頁面的 [ 選項] 底下,確認已選取 [顯示小計和總計 ]。

    當您執行報表時,最後一個數據行會顯示所有商店每個子類別的總數量,而最後一個數據列會顯示每個商店的所有子類別總數。

  6. [下一步]。

  7. 在 [ 選擇樣式] 頁面上的 [樣式] 窗格中,選取樣式。

  8. 按一下完成

    矩陣被新增至設計介面。 矩陣會顯示三個數據行和三個數據列。 第一個數據列中單元格的內容為 Subcategory、[StoreID]和 Total。 第二列儲存格的內容包含代表子類別的運算式、每個商店銷售的項目數量,以及所有商店之每個子類別的總數量。 最後一列中的單元格顯示每個商店的總計。

  9. 在矩陣中點擊,將滑鼠懸停在第一列的邊緣,抓住手柄,然後展開欄位寬度。

  10. 按兩下 [執行] 預覽報表。

報表會在報表伺服器上執行,並顯示報表處理發生的標題和時間。

在此案例中,數據行標題會顯示存放區標識符,但不會顯示存放區名稱。 稍後,您將新增表示式,以在包含存放區標識元/存放區名稱組的數據集中查閱存放區名稱。

3.新增查詢參數以建立報表參數

當您將查詢參數新增至查詢時,報表產生器會自動建立具有名稱、提示和數據類型之預設屬性的單一值報表參數。

若要新增查詢參數

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

  2. 在 [報表數據] 窗格中,展開 [ 數據集] 資料夾,以滑鼠右鍵按兩下 [DataSet1],然後按兩下 [ 查詢]。

  3. 將下列 Transact-SQL WHERE 子句新增為查詢的最後一行:

    WHERE StoreID = (@StoreID)  
    

    此子句會將擷取的數據限制為由查詢參數 @StoreID 指定的商店識別碼。

  4. 在查詢設計工具工具列上,按兩下 [執行] (!)。 [ 定義查詢參數 ] 對話框隨即開啟,並提示輸入查詢參數的值 @StoreID

  5. [參數值] 中,輸入 200

  6. 按一下 [確定]

    結果集會顯示商店標識碼 200 的配件、攝像機和數位單反相機銷售的數量。

  7. 按一下 [確定]

  8. 在 [報表數據] 窗格中,展開 [ 參數 ] 資料夾。

請注意,現在有名為 @StoreID 的報表參數。 根據預設,參數具有數據類型 Text。 由於存放區標識碼是整數,因此在下一個程式中,您會將數據類型變更為 Integer。

4.變更報表參數的預設數據類型和其他屬性

建立報表參數之後,您可以調整屬性的預設值。

變更報表參數的預設數據類型

  1. 在 [ 參數 ] 節點下的 [報表數據] 窗格中,以滑鼠右鍵按兩下 [@StoreID],然後按兩下 [ 參數屬性]。

  2. 在 [提示] 中,輸入 市集標識符? 當您執行報表時,此文字會出現在報表查看器工具列上。

  3. [資料類型] 的下拉式清單中,選取 [ 整數]。

  4. 接受對話框中的其餘預設值。

  5. 按一下 [確定]

  6. 預覽報表。 報表查看器會顯示 @StoreID的提示。

  7. 在報表查看器工具列上,在 [市集標識符] 旁輸入 200,然後按兩下 [ 檢視報表]。

4a. 新增數據集以提供可用的值和顯示名稱

若要確保使用者只能輸入參數的有效值,您可以建立要從中選擇的值下拉式清單。 這些值可能來自資料集或您指定的清單。 可用的值必須從不包含參數參考的查詢數據集中提供。

若要為參數建立有效值的數據集

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

  2. 在 [報表數據] 窗格中,以滑鼠右鍵按兩下 [ 數據集] 資料夾,然後按兩下 [ 新增數據集]。

  3. [名稱] 中,輸入 Stores

  4. 選取 [ 使用內嵌在我的報表中的數據集 ] 選項。

  5. [數據源] 的下拉式清單中,選擇您在第一個程式中建立的數據源。

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

  7. [查詢] 中,貼上下列文字:

    SELECT 200 AS StoreID, 'Contoso Catalog Store' as StoreName  
    UNION SELECT 199 AS StoreID, 'Contoso North America Online Store' as StoreName  
    UNION SELECT 307 AS StoreID, 'Contoso Asia Online Store' as StoreName  
    UNION SELECT 306 AS StoreID, 'Contoso Europe Online Store' as StoreName  
    
  8. 按一下 [確定]

    [報表數據] 窗格會顯示 [Stores 數據集] 節點底下的 [StoreID] 和 [ StoreName ] 字段。

4b. 指定可用的值以建立值的下拉式清單

建立資料集以提供可用的值之後,您必須變更報表屬性,以指定要用來填入報表檢視工具工具列上有效值的下拉式清單的數據集和字段。

提供數據集中參數的可用值

  1. 在 [報表數據] 窗格中,以滑鼠右鍵按兩下 參數@StoreID,然後按兩下 [ 參數屬性]。

  2. 按兩下 [可用的值],然後按兩下 [從查詢取得值]。

  3. [數據集] 的下拉式清單中,點擊 [商店]

  4. 值字段中,從下拉式清單中,點選 [StoreID]。

  5. [標籤] 欄位中,從下拉式清單中,按一下 [StoreName]。 標籤欄位會指定值的顯示名稱。

  6. 點選 「一般」

  7. 在提示中,輸入 店名?

    用戶現在會從市集名稱清單中選取,而不是商店標識符。 請注意,參數數據類型會維持 Integer ,因為參數是以存放區標識子為基礎,而不是存放區名稱。

  8. 按一下 [確定]

  9. 預覽報表。

    在報表查看器工具列中,參數文本框現在是顯示 [<選取值>] 的下拉式清單。

  10. 從下拉式清單中,選取 [Contoso 目錄存放區],然後按兩下 [ 檢視報表]。

此報表會顯示商店標識碼 200 的配件、攝影機和數位SLR相機銷售的數量。

4c. 指定預設值,讓報表自動執行

您可以為每個參數指定預設值,讓報表自動執行。

若要從數據集指定預設值

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

  2. 在 [報表數據] 窗格中,以滑鼠右鍵按兩下 [@StoreID],然後按兩下 [ 參數屬性]。

  3. 按兩下 [預設值],然後按兩下 [從查詢取得值]。

  4. 數據集 的下拉式清單中,選擇 存放區

  5. 值字段中,從下拉式清單中,點擊 StoreID。

  6. 按一下 [確定]

  7. 預覽報表。

針對 @StoreID,報表查看器會顯示 「Contoso North America Online Store」值。 這是數據集 存放區結果集中的第一個值。 此報告會顯示數位相機在商店標識碼 199 的銷售數量。

若要指定自定義預設值

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

  2. 在 [報表數據] 窗格中,以滑鼠右鍵按兩下 [@StoreID],然後按兩下 [ 參數屬性]。

  3. 按兩下 [預設值],然後按下 [ 指定值],然後按兩下[ 新增]。 已加入新的值數據列。

  4. [值] 中,輸入 200

  5. 按一下 [確定]

  6. 預覽報表。

針對 @StoreID,報表查看器會顯示值 「Contoso Catalog Store」。。 這是存放區標識碼 200 的顯示名稱。 此報表會顯示商店標識碼 200 的配件、攝影機和數位SLR相機銷售的數量。

4d. 從具有名稱/值組的數據集查閱值

數據集可能包含標識碼和對應的名稱欄位。 當您只有識別碼時,可以在包含名稱/值組的數據集中查閱對應的名稱。

從數據集中查找一個值

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

  2. 在設計介面的矩陣中,於第一列的列標頭中右鍵單擊 [StoreID] ,然後再按一下 [ 表達式]。

  3. 在表達式窗格中,刪除開頭 equals 以外的所有文字(=)。

  4. [類別] 中,展開 [一般函式],然後按兩下 [其他]。 項目窗格會顯示一組功能。

  5. 在 [項目] 中,按兩下 查閱。 表示式窗格會顯示 =Lookup(。 例子範本窗格會顯示查閱語法的範例。

  6. 輸入下列表示式: =Lookup(Fields!StoreID.Value,Fields!StoreID.Value,Fields!StoreName.Value,"Stores")

    Lookup 函式會接受 StoreID 的值、在 “Stores” 數據集中查閱它,並傳回 StoreName 值。

  7. 按一下 [確定]

    商店列標題包含複雜表達式的顯示文字:<<Expr>>

  8. 預覽報表。

每個頁面頂端的文字框會顯示商店名稱,而不是商店標識碼。

5.在報表中顯示選取的參數值

當使用者有關於報表的問題時,有助於知道他們選擇的參數值。 您可以保留報表中每個參數的用戶選取值。 其中一種方式是在頁尾的文字框中顯示參數。

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

  2. 滑鼠右鍵按下頁尾,指向插入,然後單擊文字框。 將文字框拖曳到有時間戳記的文字框旁邊。 抓取文字框的側邊控點,並展開寬度。

  3. 從 [報表數據] 窗格中,將參數 @StoreID 拖曳至文本框。 文字框會顯示 [@StoreID]

  4. 若要顯示參數標籤,請按下文字框中,直到插入游標出現在現有表達式之後、輸入空格,然後將參數的另一個復本從 [報表數據] 窗格拖曳至文本框。 文字框會顯示 [@StoreID] [@StoreID]

  5. 以滑鼠右鍵點擊第一個表示式,然後點擊 [表達式]。 [ 表達式 ] 對話框隨即開啟。 將文字 Value 取代為 Label

  6. 按一下 [確定]

    文字會顯示: [@StoreID.Label] [@StoreID]

  7. 預覽報表。

6.在篩選中使用報表參數

擷取自外部數據源后,篩選有助於控制報告中要使用的數據。 若要讓使用者協助控制他們想要看到的數據,您可以在矩陣的篩選中包含報表參數。

若要在矩陣篩選中指定參數

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

  2. 以滑鼠右鍵點選矩陣的資料列或資料行標頭句柄,然後點選 Tablix 屬性

  3. 按兩下 [篩選],然後按兩下 [ 新增]。 新的篩選數據列隨即出現。

  4. [表達式] 的下拉式清單中,選取數據集字段 StoreID。 數據類型會顯示 Integer。 當表示式值是數據集欄位時,會自動設定數據類型。

  5. [運算子] 中,確認 equals 已選取 (=) 。

  6. [值] 中,輸入 [@StoreID][@StoreID] 是表示 =Parameters!StoreID.Value的簡單表達式語法。

  7. 按一下 [確定]

  8. 預覽報表。

    矩陣只會顯示「Contoso 目錄存放區」的數據。

  9. 在報表查看器工具列上,針對 [ 市集名稱?],選取 [Contoso Asia Online Store],然後按兩下 [ 檢視報表]。

矩陣會顯示對應至您所選取之存放區的數據。

7.將報表參數變更為接受多個值

若要將參數從單一變更為多重值,您必須變更查詢,以及包含參數參考的所有表達式,包括篩選條件。 多重值參數是值的陣列。 在數據集查詢中,查詢語法必須測試在一組值中包含一個值。 在報表表達式中,表達式語法必須存取值的陣列,而不是個別值。

將參數從單一變更為多重值

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

  2. 在 [報表數據] 窗格中,以滑鼠右鍵按兩下 [@StoreID],然後按兩下 [ 參數屬性]。

  3. 選取 [允許多個值]。

  4. 按一下 [確定]

  5. 在 [報表數據] 窗格中,展開 [ 數據集] 資料夾,以滑鼠右鍵按兩下 [DataSet1],然後按兩下 [ 查詢]。

  6. 在查詢中,於最後一行的 Transact-SQL WHERE 子句中,將 equals (=) 變更為 IN

    WHERE StoreID IN (@StoreID)  
    

    IN運算子會測試值,以納入一組值。

  7. 按一下 [確定]

  8. 以滑鼠右鍵按一下矩陣上的資料列或資料行標頭句柄,然後按一下 Tablix 屬性

  9. 按兩下 [ 篩選]。

  10. 運算子 中,選取 [In]

  11. 按一下 [確定]

  12. 在頁面頁尾中顯示 參數的文字框中,刪除所有文字。

  13. 右鍵點擊文字框,然後點擊表達式。 輸入下列表示式: =Join(Parameters!StoreID.Label, ", ")

    此表達式會串連用戶選取的所有存放區名稱。

  14. 按一下 [確定]

  15. 點選您剛才建立之表示式前面的文字框,然後輸入下列文字:已選取的參數值:。

  16. 預覽報表。

  17. 點擊商店名稱旁邊的下拉式選單。

    每個有效值都會出現在複選框旁邊。

  18. 按一下 全部選取,然後按一下 檢視報表

    報表會顯示所有商店所有子類別銷售的數量。

  19. 從下拉式清單中,按兩下 [ 全選] 以清除清單,按兩下 [Contoso 目錄存放區] 和 [Contoso Asia Online Store],然後按兩下 [ 檢視報表]。

8.為條件式可見性新增布爾參數

若要新增布爾參數

  1. 在設計介面的 [報表數據] 窗格中,以滑鼠右鍵按兩下 [ 參數],然後按兩下 [ 新增參數]。

  2. [名稱] 中,輸入 ShowSelections。

  3. [提示] 中,輸入 [顯示選取專案?

  4. [數據類型] 的下拉式清單中,按兩下 [布林值]。

  5. 按兩下 [預設值]。

  6. 按兩下 [指定值],然後按兩下 [ 新增]。

  7. [值] 中,輸入 False

  8. 按一下 [確定]

根據布爾參數設定可見性

  1. 在設計介面上,以滑鼠右鍵按下頁尾中顯示參數值的文字框,然後按兩下 [文字框屬性]。

  2. 按一下 [可見性]

  3. 選取 [ 根據表示式顯示或隱藏] 選項,然後按兩下 [表達式] 按鈕 Fx

  4. 輸入下列表示式: =Not Parameters!ShowSelections.Value

    文字框 [可見性] 選項是由 [隱藏] 屬性所控制。 Not套用 運算符,以便在選取參數時,Hidden 屬性為 false,而且會顯示文字框。

  5. 按一下 [確定]

  6. 按一下 [確定]

  7. 預覽報表。

    顯示參數選項的文字框不會出現。

  8. 在報表檢視器工具列中,按下 True[顯示選取專案] 旁的 。

  9. 預覽報表。

頁尾中的文字框會顯示您選取的所有商店名稱。

9.新增報表標題

若要新增報表標題

  1. 在設計介面上,按一下以新增標題

  2. 輸入參數化產品銷售,然後按下文字框外部。

10.儲存報表

在報表伺服器上儲存報表

  1. [報表產生器] 按鈕中,按兩下 [ 另存新檔]。

  2. 按兩下 [最近使用的網站和伺服器]。

  3. 選取或輸入您有權儲存報表的報表伺服器名稱。

    [ 連接到報表伺服器] 訊息隨即出現。 連線完成時,您會看到報表伺服器系統管理員指定為報表預設位置之報表資料夾的內容。

  4. [名稱] 中,將預設名稱取代為 [參數化銷售報表]。

  5. 點選 [儲存]。

報表會儲存至報表伺服器。 您所連接的報表伺服器會出現在視窗底部的狀態列中。

後續步驟

這總結了如何將參數新增至報表的逐步解說。 若要深入了解參數,請參閱報表參數(報表產生器及報表設計師)。

另請參閱

教學課程(報表產生器)
SQL Server 2014 中的報表產生器