篩選報表中的報表資料
篩選可協助您控制要在報表中顯示和處理哪些資料。您可以為資料集、資料區或群組的任意組合指定篩選。
請盡可能先篩選資料來源的資料,然後再透過將查詢修改成包含查詢參數以限制要擷取哪些資料,針對報表擷取資料。如需詳細資訊,請參閱<篩選來源的報表資料>。
當您無法篩選來源的資料時,請指定報表項目的篩選。例如,當資料來源不支援查詢參數、您必須執行預存程序但無法修改查詢,或者參數化報表快照集會針對不同的使用者顯示自訂資料時,請使用報表篩選。
選擇要設定篩選的位置
依據您想要在報表中達成的效果,判斷要設定篩選的位置。在執行階段,報表處理器會按照下列順序套用篩選:套用至資料集、套用至資料區,然後由上而下套用至每個群組階層中的群組。在資料表、矩陣和清單上,系統會針對資料列群組、資料行群組和相鄰群組獨立套用篩選。在圖表上,系統會針對類別目錄群組和數列群組獨立套用篩選。當報表處理器套用篩選時,系統就會按照在每個報表項目之 [屬性] 對話方塊的 [篩選] 頁面上定義的順序套用所有篩選方程式,而這就相當於使用 Boolean AND 作業來結合這些篩選方程式。
下列清單會比較針對不同報表項目設定篩選的效果:
資料集:當您想讓繫結至單一資料集的一或多個資料區以相同的方式篩選時,請設定資料集的篩選。例如,您可以針對同時繫結至顯示銷售資料之資料表和顯示相同資料之圖表的資料集設定篩選。
資料區:當您想讓繫結至單一資料集的一或多個資料區提供不同的資料集檢視時,請設定資料區的篩選。例如,您可以在同一份報表中,設定某個資料表資料區域的篩選來顯示銷售量前十名的商店,並且設定不同資料表資料區域的篩選來顯示銷售量後十名的商店。
Tablix 資料區中的資料列或資料行群組:當您想要針對群組運算式包含或排除特定值來控制要在資料表、矩陣或清單中顯示哪些群組值時,請設定群組的篩選。
Tablix 資料區中的詳細資料群組:當您針對某個資料區設有多個詳細資料群組,而且想讓每個詳細資料群組顯示資料集中的不同資料組時,請設定詳細資料群組的篩選。
圖表資料區域中的數列或類別目錄群組:當您想要針對群組運算式包含或排除特定值來控制要在圖表中顯示哪些值時,請設定數列或類別目錄群組的篩選。
建立篩選方程式
在執行階段,報表處理器會將值轉換成指定的資料類型,然後使用指定的運算子來比較運算式和值。下列清單將描述篩選方程式的每個部分:
運算式:定義您要篩選的項目。一般而言,這是資料集欄位。
資料類型:指定報表處理器在執行階段評估篩選方程式時要使用的資料類型。您所選取的資料類型必須是報表定義結構描述所支援的其中一種資料類型。
運算子:定義如何比較篩選方程式的兩個部分。
值:定義要在比較中使用的運算式。
下列各節將描述篩選方程式的每個部分。如需篩選方程式的範例,請參閱<篩選方程式範例 (Reporting Services)>。
運算式
當報表處理器在執行階段評估篩選方程式時,運算式和值的資料類型必須相同。您針對 [運算式] 選取的欄位資料類型是由用來從資料來源中擷取資料的資料處理延伸模組或資料提供者所決定。您針對 [值] 輸入的運算式資料類型是由 Reporting Services 預設值所決定。資料類型的選擇是由支援報表定義的資料類型所決定。資料提供者可能會將資料庫的值轉換成 CLR 類型。如需詳細資訊,請參閱<了解報表資料集>。
資料類型
若要讓報表處理器比較兩個值,其資料類型必須相同。下表將列出 CLR 資料類型與報表定義資料類型之間的對應。您從資料來源中擷取的資料可能會在它是報表資料時轉換成不同的資料類型。如需詳細資訊,請參閱<了解報表資料集>。
報表定義結構描述資料類型 |
CLR 類型 |
---|---|
Boolean |
Boolean |
DateTime |
DateTime, DateTimeOffset |
Integer |
Int16, Int32, UInt16, Byte, SByte |
Float |
Single, Double, Decimal |
Text |
String, Char, GUID, Timespan |
如果您必須指定資料類型,就可以在運算式的 Value 部分中指定自己的轉換。
運算子
下表將列出您可以在篩選方程式中使用的運算子,以及報表處理器用來評估篩選方程式的項目。
運算子 |
動作 |
---|---|
Equal, Like, NotEqual, GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual |
比較運算式與單一值。 |
TopN, BottomN |
比較運算式與單一 Integer 值。 |
TopPercent, BottomPercent |
比較運算式與單一 Integer 或 Float 值。 |
Between |
測試運算式是否位於 (包含) 兩個值之間。 |
In |
測試運算式是否包含在一組值之中。 |
值
Value 運算式會指定篩選方程式的最終部分。報表處理器會將評估的運算式轉換成您所指定的資料類型,然後評估整個篩選方程式,以便判斷在 [運算式] 中指定的資料是否通過篩選。
若要轉換成不是標準 CLR 資料類型的資料類型,您必須修改運算式,以便明確轉換成資料類型。在 [運算式] 對話方塊中,您可以使用列於 [一般函數] 之 [轉換] 底下的轉換函數。例如,若為代表在 SQL Server 資料來源上儲存成 money 資料類型之資料的欄位 ListPrice,資料處理延伸模組就會將欄位值傳回成 System..::..Decimal 資料類型。若要將篩選設定成僅使用報表貨幣中大於 $50000.00 的值,請使用運算式 =CDec(50000.00),將此值轉換成十進位。
這個值也可以包含參數參考,以便允許使用者以互動方式指定要篩選的值。如需詳細資訊,請參閱<篩選方程式範例 (Reporting Services)>。