単一値および複数値パラメータの使用
更新 : 2006 年 12 月 12 日
パラメータには、単一の値または複数の値を指定できます。複数値パラメータは、複数の値に設定できます。複数値パラメータ用に使用できる値の一覧を定義すると、Reporting Services によってレポート ツール バーのドロップダウン リストに [すべて選択] オプションが自動的に配置されます。このオプションを使用して、一覧内のすべての値を選択したり選択解除したりできます。
メモ : |
---|
[すべて選択] オプションは、SQL Server 2005 Service Pack 1 では無効になっていましたが、SQL Server 2005 Service Pack 2 で復活しました。 |
パラメータに複数値プロパティを設定するには、[レポート パラメータ] ダイアログ ボックスの [複数値] オプションを選択します。 ブール型を除くすべての種類のパラメータを、複数値に設定できます。
複数値パラメータの主要な目的は、Transact-SQL の WHERE 句や MDX の Filter 句などのクエリ制限句を使用して、単一の値と等しいかどうかではなく、一連の値に含まれているかどうかをテストできるようにすることです。複数値パラメータの作成方法の詳細については、「チュートリアル : 基本的な表形式レポートへのパラメータの追加」および 「レポート パラメータの作成とレポート パラメータ プロパティの設定」を参照してください。
セキュリティ メモ : |
---|
String 型のパラメータが含まれるレポートでは、使用可能な値の一覧 (有効な値の一覧とも呼ばれています) を必ず使用してください。また、レポートを実行するすべてのユーザーに対して、レポート表示に必要な権限のみを与えてください。String 型のパラメータを定義した場合は、任意の値が許容されるテキスト ボックスが表示されます。使用可能な値の一覧を使用すると、入力できる値が制限されます。クエリ パラメータにレポート パラメータが関連付けられている場合に、使用可能な値の一覧を使用しなければ、レポート ユーザーはテキスト ボックスに SQL 構文を入力できるので、レポートとサーバーが SQL インジェクション攻撃を受ける危険性が生じます。さらに、ユーザーが新しい SQL ステートメントを実行するための十分な権限を持っている場合は、サーバーで予想外の結果が生じる可能性もあります。 クエリ パラメータと関連付けられていないレポート パラメータがあり、このパラメータ値がレポートに含まれていると、レポート ユーザーが式の構文または URL をパラメータ値に入力して、このレポートを Excel または HTML に変換することも可能になります。別のユーザーがこのレポートを表示して、表示されたパラメータ コンテンツをクリックすると、悪意のあるスクリプトまたはリンクが意図せず実行されてしまう可能性があります。 悪意のあるスクリプトを誤って実行するリスクを軽減するためには、信頼できる作成元からのレポートだけを開くようにしてください。レポートの保護の詳細については、「レポートとリソースの保護」を参照してください。 |
複数の値を指定できるレポート パラメータにマップされるクエリの記述
作成する任意のレポート パラメータとして、複数の値を指定できるパラメータを定義できます。ただし、複数のパラメータ値をクエリに渡す場合は、以下の要件が満たされている必要があります。
- データ ソースは、SQL Server、Oracle、または Analysis Services のいずれかでなければなりません。
- ストアド プロシージャをデータ ソースにすることはできません。Reporting Services では、複数の値を指定できるパラメータの配列をストアド プロシージャに渡すことはサポートされていません。
- クエリでは、IN 句を使用してパラメータを指定する必要があります。
次の例は、Transact-SQL ステートメントの WHERE 句で IN キーワードを使用する方法を示しています。IN キーワードの詳細や、このクエリによって返される結果については、「IN (Transact-SQL)」を参照してください。
SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.Title IN (@Title)
レポートでこのクエリをテストするには、上記のクエリを使用してデータセットを定義します。自動的に作成されたレポート パラメータである "Title" のプロパティを、次のようにして変更します。
- [複数値] オプションを選択します。
- [使用できる値] で [クエリなし] オプションを選択します。[値] 列に、「Design Engineer」、「Buyer」、「Marketing Assistant」と入力します ([ラベル] 列は空白のまま)。
- [既定値] に「Buyer」と入力します。
- プレビューを実行します。Title について、さまざまな値の組み合わせを選択し、適切な結果が返されることを確認します。
メモ : |
---|
パラメータを配列として処理できないデータ ソースに対するクエリは、レポート サーバーによって書き換えられます。目的の結果を得るためには、このクエリの書き換えが必要になります。クエリの書き換えが行われるのは、パラメータが複数の値を指定できるように定義されており、クエリで IN ステートメントを使用してパラメータが指定されている場合です。IN ステートメントを含まないクエリを作成すると、複数の値を指定できるパラメータをサポートするためにレポート サーバーが提供するロジックを回避することになるので注意してください。 |
データセット、データ グループ、データ領域のフィルタ式は、対応するプロパティ ページの [フィルタ] タブに定義されています。複数値パラメータを参照するフィルタ式が定義されている場合は、フィルタ式で IN 演算子を使用する必要があります。IN 以外の演算子をフィルタ式で使用すると、処理エラーが発生します。詳細については、「フィルタを追加する方法 (レポート デザイナ)」を参照してください。
複数値パラメータを参照する式の記述
式でパラメータを参照する場合は、グローバル コレクション パラメータを使用します。式で複数値パラメータを使用する場合は、単一値の使用方法および値の配列全体の使用方法を理解しておく必要があります。次の表は、[複数値] オプションが設定されているパラメータのパラメータ プロパティの例と説明を示しています。
使用例 | 説明 |
---|---|
|
パラメータの Variant データ型の値の配列です。 |
|
パラメータのラベルである文字列の配列です。 |
|
パラメータの [複数値] オプションが選択されているかどうかを示すブール値のプロパティです。 |
|
配列に含まれる値の数です。 |
|
複数値配列内の最初の値です。 |
|
複数値配列内の最初のラベルです。 |
|
複数値配列内の最後の値です。 |
|
複数値配列内の最後のラベルです。 |
|
String 型の複数値パラメータの配列内にあるすべての値を 1 つの文字列に連結する式です。 |
|
文字列を使用し、オブジェクトの配列を作成します。この配列を使用して、複数値パラメータが必要なサブレポートやドリルスルー レポートに渡すことができます。 |
SPLIT 関数と JOIN 関数を使用すると、すべての式で配列内の値を分離したり結合したりできます。STRING 関数と CINT 関数を使用すると、値を文字列または整数に変換できます。
単一値および複数値パラメータが含まれている式の詳細と例については、「式におけるパラメータの使用」を参照してください。
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|
参照
処理手順
レポート パラメータを追加、編集、または削除する方法 (レポート デザイナ)
概念
パブリッシュ済みレポートのパラメータ プロパティの設定
式におけるパラメータの使用
式におけるパラメータの使用
その他の技術情報
チュートリアル : 基本的な表形式レポートへのパラメータの追加
チュートリアル : パラメータを使用した高度な機能
[レポート パラメータ] (レポート デザイナ)