Share via


パラメーターを使用したレポート データの制御

レポート パラメーターは通常、データ ソースから取得するレポート データのフィルター処理に使用します。データ ソースでデータをフィルター処理すると、レポートの処理と表示のパフォーマンスを向上させることができます。ソースでデータをフィルター処理できない場合は、パラメーターを使用して、取得後のレポート データをフィルター処理することができます。また、レポート パラメーターに基づいて、レポート内のデータの並べ替えやグループ化を行うこともできます。

データ ソースでのデータのフィルター処理

データ ソースでデータをフィルター処理するには、データセット クエリでクエリ パラメーターを使用します。クエリ パラメーターごとに、対応するレポート パラメーターが Reporting Services で作成されます。ユーザーがレポート パラメーターの値を選択すると、選択した値がクエリに渡されます。クエリがデータ ソースに対して実行されると、ユーザーが指定した値のみがレポートに取得されます。ユーザー プロンプトや既定値などのプロパティは、レポート パラメーターに適用されます。

クエリ パラメーター

クエリ パラメーターを定義すると、レポート パラメーターが自動的に生成されます。レポート ビルダーでは、Filter 句でプロンプトを設定すると、レポート パラメーターが自動的に生成されます。

データセットを定義する場合は、MicrosoftSQL Server など、データ ソースの具体的な種類を指定します。レポート デザイナーにより、指定した種類のデータ ソースを処理するように設計されたクエリ デザイナーが起動されます。各データセット用にクエリを定義する場合、クエリ デザイナーにより、クエリ コマンド テキスト内の変数が識別され、個々に応じたクエリ パラメーターが作成されます。データ ソースとデータ プロバイダーの組み合わせによっては、変数を使用するクエリがサポートされないことがあります。データ ソースで要求されるクエリ構文の詳細については、「特定のデータ ソースでのクエリ パラメーターの使用 (Reporting Services)」を参照してください。

SQL Server データ ソースのクエリでは、通常、Transact-SQL ステートメントの WHERE 句に変数を含めて、クエリ実行時に返されるデータの範囲を制限します。同様に、Analysis Services データ ソースのクエリでは、通常、FILTER 句で使用する MDX 変数を含めます。またクエリには、入力情報としてストアド プロシージャやユーザー定義関数へ渡される変数を含めることもできます。

データセットのクエリを変更するたびに、クエリは再処理されます。変数を削除したり変数名を変更したりしてクエリを修正すると、クエリ パラメーターにこれらの変更が反映されます。

[データセットのプロパティ] ダイアログ ボックスの [パラメーター] ページで、追加のデータセット パラメーターを作成できます。作成したパラメーターは、クエリが変更されても変更されません。

各クエリ パラメーターの既定値は、対応するレポート パラメーターとして評価される式に設定されます。既定値を変更するには、[データセットのプロパティ] ダイアログ ボックスの [パラメーター] ページを使用します。たとえば、SQL Server データ ソースでは、クエリ パラメーターが @MyParameter の場合、レポート パラメーターは MyParameter となり、@MyParameter の値には式 [@MyParameter] が設定されます。詳細については、「[パラメータ] ([データセットのプロパティ] ダイアログ ボックス)」を参照してください。クエリ パラメーターを手動で編集し、その既定値を設定することができます。詳細については、「クエリ パラメータをレポート パラメータに関連付ける方法」を参照してください。

自動的に作成されたレポート パラメーターでは、次の既定値が使用されます。

  • 単一の値

  • Text データ型

  • パラメーターの名前に設定された表示名

  • 既定値なし

  • 使用可能な値なし

クエリ パラメーターが表すデータの型に基づいて、これらのプロパティの変更が必要になる場合があります。詳細については、「レポート パラメータの作成とレポート パラメータ プロパティの設定」を参照してください。

注意

クエリ パラメーターの名前を削除または変更しても、対応するレポート パラメーターが自動的に削除されたり変更されたりすることはありません。クエリ パラメーターを削除した場合に、対応するレポート パラメーターが不要であれば、レポート パラメーターを手動で削除する必要があります。クエリ パラメーターの名前を変更すると、クエリを保存する際に、変更したパラメーター名に対応する新しいレポート パラメーターが作成されます。新しいクエリ パラメーター名に一致するようにレポート パラメーター名を変更し、データセット パラメーターのプロパティを更新してクエリ パラメーターをレポート パラメーターにリンクすることもできます。

依存型パラメーター (カスケード型) パラメーター

複数のクエリ パラメーターを使用するクエリを作成する場合、一連のカスケード型パラメーターを作成できます。カスケード型パラメーターを使用すると、大量のパラメーター値をフィルター処理し、扱える数まで値を絞り込むことができます。たとえば、クエリに @Category、@Subcategory、および @Product パラメーターが含まれており、サブカテゴリの一覧は @Category に依存し、製品の一覧は @Subcategory に依存しているとします。ユーザーが Category レポート パラメーターの値を選択すると、Subcategory の値は、選択したカテゴリに対して有効な値に制限されます。ユーザーが Subcategory の値を選択した後、Product の選択肢は、カテゴリとサブカテゴリの値で既にフィルター選択されています。この方法を使用すると、パラメーターの有効な選択肢を、適切な数の値まで減らすことができます。

カスケード型パラメーターをデザインするには、次のアイテムをレポートに含める必要があります。

  • 関連する複数のクエリ パラメーターを含む、メイン データセット クエリ。

  • それぞれがクエリ パラメーターにバインドされているレポート パラメーターの順序付けされた一覧。通常、このようなパラメーターはメイン クエリから自動的に作成されます。各従属パラメーターは、そのパラメーターが依存するパラメーターの後に指定する必要があります。パラメーターの順序は、[レポート データ] ペインのコレクション内でパラメーターを上下に移動すると変更できます。詳細については、「レポート パラメータの順序を変更する方法 (Reporting Services)」を参照してください。

  • 各レポート パラメーターの、使用可能な値を提供する独立したデータセット。各クエリ パラメーターには大文字と小文字の組み合わせを揃えた同じ綴りを使用して、クエリ パラメーターとレポート パラメーターが正しくリンクされるようにすることが重要です。各レポート パラメーターで使用できる値の各セット用のクエリからは、メイン クエリのコンテキストに適した値のみが返される必要があります。

上記の例では、Product レポート パラメーターは Subcategory に依存し、Subcategory は Category に依存しています。これらは Category、Subcategory、および Product の順に並ぶ必要があります。Category で使用できる値を提供するデータセット用のクエリでは、メイン クエリで有効なすべてのカテゴリを示す必要があります。カテゴリの選択後に Subcategory で使用できる値を提供するクエリでは、指定した Category に加え、メイン クエリ内のすべての制約に対して有効な値を提供する必要があります。

詳細については、「カスケード型パラメーターをレポートに追加する方法 (Reporting Services)」を参照してください。

クエリ実行後のレポート データのフィルター処理

レポート パラメーターを作成し、作成したパラメーターをフィルター式で使用して、レポート データセット、データ領域、または Tablix グループのデータをフィルター処理することもできます。詳細については、「レポートでのデータのフィルタ処理」および「フィルタを追加する方法 (Reporting Services)」を参照してください。

レポート パラメーターは、レポートを作成するときにレポート定義の一部として指定しますが、レポートのパブリッシュ後に単独で管理することができます。レポート定義のパブリッシュ後は、レポート マネージャーを使用してパラメーター プロパティを変更できます。詳細については、「パブリッシュされたレポートのプロパティの設定」を参照してください。

急速に変化するパラメーターの有効値の操作

急速に変化する値を有効値として指定した場合、レポートの実行前に値が古くなってしまう可能性があります。このため、値を送信してレポートを実行する時点で既に無効となっている一覧から、ユーザーが値を選択しなければならない可能性があります。これを防ぐには、値の選択とレポートの実行で通常必要となる時間内に変化しない有効値の一覧を、データセットとして返すようなクエリを記述します。

また、急速に変化する非クエリ型の値も使用しないようにします。たとえば、使用できる値として現在の日付を返す場合は、DateTime.Now プロパティではなく、DateTime.Today プロパティを使用する式を記述します。これにより、急速に変化する時間単位の値が返されないようになります。また、値を 1 回計算したらレポートの処理中はその計算結果を変更しないように、レポート変数またはグループ変数を使用することもできます。詳細については、「式におけるレポート変数コレクションとグループ変数コレクションの参照の使用 (Reporting Services)」を参照してください。

関連項目

タスク

クエリ パラメータをレポート パラメータに関連付ける方法

参照

[パラメータ] ([データセットのプロパティ] ダイアログ ボックス)

概念

チュートリアル : レポートへのパラメーターの追加

レポート データセットの作成

その他の技術情報

チュートリアル (Reporting Services)

レポート データ ソースの作成