Share via


レポートでのレポート データのフィルタ処理 (レポート ビルダ 2.0)

レポートにどのようなデータを表示し、どのようなデータを処理するかは、フィルタを使用して制御できます。フィルタは、データセット、データ領域、またはグループに対して指定できるほか、複数のフィルタを自由に組み合わせて指定できます。

可能な場合は、データのフィルタ処理をデータ ソースで実行し、フィルタ処理後のデータをレポートに取得するようにしてください。たとえば、取得するデータを制限するクエリ パラメータをクエリに追加するようにします。詳細については、「ソースでのレポート データのフィルタ処理 (レポート ビルダ 2.0)」を参照してください。

レポート アイテムに対するフィルタは、ソース側でデータをフィルタ処理できない場合に指定します。たとえば、データ ソースがクエリ パラメータをサポートしていない、ストアド プロシージャを実行する関係上、クエリに変更を加えることができない、パラメータ化されたレポートのスナップショットで、ユーザーごとにカスタマイズしたデータを表示する場合などは、レポート フィルタを使用します。

フィルタを設定する場所の選択

フィルタの設定場所は、レポートにどのような効果を持たせるかに基づいて判断します。レポート プロセッサは実行時に、データセット、データ領域、グループの順にフィルタを適用します。グループについては、フィルタがグループ階層の上から順に適用されます。テーブル、マトリックス、および一覧では、行グループ、列グループ、および隣接するグループに対してフィルタが別々に適用されます。グラフでは、カテゴリ グループと系列グループに対するフィルタが別々に適用されます。レポート プロセッサがフィルタを適用するとき、すべてのフィルタ式が、各レポート アイテムの [プロパティ] ダイアログ ボックスの [フィルタ] ページに定義されている順序で適用されます。これは、フィルタ式を論理 AND 演算子で結合した結果に相当します。

次に、フィルタを設定した場合の効果を各種のレポート アイテムごとに説明します。

  • データセット   単一のデータセットに関連付けられている 1 つまたは複数のデータ領域を同じ方法でフィルタ処理する必要がある場合は、そのデータセットに対してフィルタを設定します。たとえば、同じ売上データを表示するテーブルとグラフの両方に同じデータセットが関連付けられている場合は、そのデータセットに対してフィルタを設定します。

  • データ領域   単一のデータセットに 1 つまたは複数のデータ領域が関連付けられており、そのデータセットをそれぞれ異なる角度から眺めた結果を表示させている場合は、データ領域に対してフィルタを設定します。たとえば、同じレポートに 2 つのテーブル データ領域が存在するとき、一方のテーブル データ領域には、売上高の上位 10 店舗を表示するフィルタを設定し、もう一方のテーブル データ領域には、下位 10 店舗を表示するフィルタを設定します。

  • Tablix データ領域の行グループまたは列グループ   グループ式の特定の値を含めたり除外したりすることによって、テーブル、マトリックス、または一覧に表示させるグループ値を制御する場合は、グループに対してフィルタを設定します。

  • Tablix データ領域の詳細グループ   データ領域に複数の詳細グループが存在するとき、データセットから異なるデータを取得しながら、それぞれ別々の詳細グループに表示させる場合は、詳細グループに対してフィルタを設定します。

  • グラフ データ領域の系列グループまたはカテゴリ グループ   グループ式の特定の値を含めたり除外したりすることによって、グラフに表示させる値を制御する場合は、系列グループまたはカテゴリ グループに対してフィルタを設定します。

フィルタ式の作成

レポート プロセッサは、実行時に値を指定のデータ型に変換し、指定された演算子を使って式と値を比較します。フィルタ式の各部分の説明を次に示します。

  •    フィルタ処理の対象を定義します。通常、これは、データセット フィールドです。

  • データ型   実行時にレポート プロセッサによってフィルタ式が評価される際に使用されるデータ型を指定します。レポート定義スキーマでサポートされているデータ型を選択する必要があります。

  • 演算子   フィルタ式の右辺と左辺をどのように比較するかを定義します。

  •    比較に使用する式を定義します。

以降の各セクションで、フィルタ式の各部分について説明します。フィルタ式の例については、「フィルタ式の例 (レポート ビルダ 2.0)」を参照してください。

レポート プロセッサが実行時にフィルタ式を評価するためには、式のデータ型と値のデータ型とが一致している必要があります。[式] に対して選択されているフィールドのデータ型は、データ ソースからデータを取得するときに使用されるデータ処理拡張機能またはデータ プロバイダによって判断されます。[値] に対して入力された式のデータ型は、Reporting Services の既定の設定に基づいて判断されます。どのデータ型が使用されるかは、レポート定義でサポートされているデータ型によって決まります。データベースから取得された値は、データ プロバイダによって CLR 型に変換される場合があります。詳細については、「レポート データセットについて (レポート ビルダ 2.0)」を参照してください。

データ型

レポート プロセッサが 2 つの値を比較するためには、データ型が同じであることが条件となります。次の表は、CLR データ型とレポート定義のデータ型の対応関係を示しています。データ ソースから取得されたデータが、別のデータ型に変換されてレポート データになる場合もあります。詳細については、「レポート データセットについて (レポート ビルダ 2.0)」を参照してください。

レポート定義スキーマのデータ型

CLR 型

Boolean

Boolean

DateTime

DateTime,DateTimeOffset

Integer

Int16, Int32, UInt16, Byte, SByte

Float

Single, Double, Decimal

Text

String, Char, GUID, Timespan

データ型を指定する必要がある場合は、式の値に対して適切な変換を指定できます。

演算子

次の表は、フィルタ式に使用できる演算子と、その演算子を使用したフィルタ式の評価方法の一覧です。

演算子

アクション

Equal, Like, NotEqual, GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual

式と単一の値とを比較します。

TopN, BottomN

式と単一の Integer 値とを比較します。

TopPercent, BottomPercent

式と単一の値 (Integer または Float) とを比較します。

Between

式が 2 つの値の範囲内にあるかどうかを調べます。

In

式が特定の値の集合に含まれるかどうかを調べます。

最後に、フィルタ式のもう 1 つの構成部分である "値" について説明します。レポート プロセッサは、[式] で指定されたデータにフィルタの通過を許可するかどうかを判断する際、評価対象の式を指定のデータ型に変換した後、フィルタ式全体を評価します。

標準の CLR データ型以外の型に変換するためには、特定のデータ型へと明示的に変換するように、式を修正する必要があります。この変換には、[式] ダイアログ ボックス ([共通の関数][変換]) に表示される変換関数を使用できます。たとえば、SQL Server データ ソースの money 型として格納されたデータを表す ListPrice というフィールドがあるとします。データ処理拡張機能は、このフィールドの値を System..::..Decimal 型として返します。このとき、レポートの通貨で $50000.00 を超える値だけを使用するようにフィルタを設定するには、=CDec(50000.00) という式を使って、この値を Decimal 型に変換します。

フィルタに使用する値をユーザーが対話形式で選択できるように、この値にパラメータ参照を含めることもできます。詳細については、「フィルタ式の例 (レポート ビルダ 2.0)」を参照してください。