パラメータを使用することで、レポートの実行時に表示するデータをフィルタリングすることができます。ユーザーにパラメータの入力を要求してユーザーが出力をコントロールできるようにするか、パラメータを事前に設定することができます。
クエリパラメータの値は、レポートパラメータのコレクション(事前に提供するか、ユーザーに入力させる値)、別のデータセットのフィールド、または式から取得することができます。パラメータを作成するには、データソース別に固有の構文を指定する必要があります。
| データソースの種類 | パラメータの構文 | 例 |
|---|---|---|
| OleDB | ? | SELECT * FROM Customer WHERE (CustomerID = ? AND AccountNumber = ?) |
| ODBC | @ParameterName | SELECT * FROM Customer WHERE (CustomerID = @CustomerID AND AccountNumber = @AccountNumber) |
| SQL Client | @ParameterName | SELECT * FROM Customer WHERE (CustomerID = @CustomerID AND AccountNumber = @AccountNumber) |
| OracleDB | :ParameterName | SELECT * FROM Customer WHERE CustomerID = :CustomerID AND AccountNumber = :AccountNumber |
ページレポート/RDLレポートでは、クエリデザイナを使用してパラメータ付きクエリを簡単に作成することができます。[データセット]ダイアログの[クエリ]ページで
ボタンをクリックすることで、[クエリデザイナ]にアクセスすることができます。
なお、手動でパラメータ付きクエリを作成したい場合には、3か所のパラメータをそれぞれ設定する必要があります。設定が必要となるのは、[レポート−パラメータ]ダイアログ、[データセット]ダイアログの[パラメータ]ページ、[データセット]ダイアログの[クエリ]ページの3か所です。
[レポート−パラメータ]ダイアログ
以下のいずれかの方法で[レポート−パラメータ]ダイアログにアクセスできます。
[レポート−パラメータ]ダイアログには、[パラメータ]ページがあります。このページには、パラメータ一覧と、パラメータプロパティを設定するための3つのタブ([全般]、[使用できる値]、[既定値])が含まれています。パラメータを一覧に追加するには、[追加](+)アイコンをクリックし、3つのタブでパラメータのプロパティを設定します。タブの詳細については後述します。
[レポート−パラメータ]ダイアログでは、ユーザーにパラメータの入力を要求するか、パラメータを事前に設定することができます。
パラメータは、レポートパラメータコレクション内で表示されている順番で取得されます。表示順は[レポート−パラメータ]ダイアログ内の矢印のアイコンを使用して変更することができます。
[全般]
![]() |
メモ:パラメータ入力ダイアログを非表示にし、既定値を提供しない場合、レポートは実行されません。 |
[使用できる値]
エンドユーザーが選択できる値をドロップダウン一覧として表示する場合に使用します。
[既定値]
![]() |
メモ: [使用できる値]タブでは、値とはクエリパラメータに渡されるもの、ラベルとはユーザーに表示されるものにあたります。例として、値が社員IDの場合、ラベルには社員名の値を設定するとユーザーにはわかりやすくなります。 |
[データセット]ダイアログの[パラメータ]ページ
[データセット]ダイアログの[パラメータ]ページで、クエリのパラメータにレポートのパラメータを渡します。パラメータ一覧の一番上の[追加](+)アイコンをクリックし、パラメータ名を入力し、以下のような値を入力します。
=Parameters!CustomerID.Value
[データセット]ダイアログの[クエリ]ページ
SELECT * FROM Movie WHERE (MPAA = ? AND YearReleased = ?)
[レポートエクスプローラ]からパラメータを直接レポートにドラッグすることで、実行時にパラメータの値がTextBoxコントロールに表示されます。
実行時にユーザーより入力を要求せずにレポートを実行する場合、各パラメータの既定値を設定し、[パラメータ]ダイアログの[全般]タブで[非表示]チェックボックスをONに設定する必要があります。
使用できる値と同様に、既定値は[値を直接入力]と[クエリから値を取得]として使用されます。[値を直接入力]オプションでは、静的な値、または式を使用してラベル、および値が提供されます。[クエリから値を取得]オプションでは、データセットを選択し、そこから値フィールドを取得することができます。クエリを使用するときに最初に返された行の値がパラメーター値として使用されます。
サブレポートのデータは、親レポートと容易に同期させることができるので、パラメータも非表示パラメータと認識されます。親レポートに設定しているパラメータと同様にサブレポートのパラメータのプロパティを設定し、親レポートのフィールドまたは他のオブジェクトをポイントする式に値を設定します。
ドリルスルーリンクもレポートから他のレポートへナビゲートするように使用されるので、パラメータも非表示パラメータになります。[ナビゲーション]タブで[アクション]の[レポートに移動]を選択することによりに、パラメータ一覧が有効になります。入力したパラメータは大文字と小文字を区別し、リンクされたレポートで使用されるパラメータと同じである必要があります。パラメータの値を現在のレポートから[値]フィールドに渡すことができます。リンクされたレポートでパラメータの値を渡さない、またはパラメータの値が一致しない場合はリンクされたレポートが実行されません。
セクションレポートでは、パラメータコレクションを使用して実行時にコントロールへ値を直接渡すか、レポートのデータのサブセットを表示することができます。
セクションレポートでパラメータを設定する方法
<%Name | PromptString | DefaultValue | DataType | PromptUser%>ユーザーにパラメータ値の入力を求める
ユーザーにパラメータ値の入力を求めるには、以下の設定が完了している必要があります。
コレクションにパラメータが存在し、ShowParameterUIプロパティが「True」に設定されている場合、レポートを実行すると自動的にパラメータ入力ダイアログが表示されます。要求される値をユーザーが入力して、[OK]ボタンをクリックすると、レポートが入力値を使用して表示されます。
[レポートエクスプローラ]のパラメータ値は、SQLクエリのパラメータに「param:」というプレフィックスを指定して適用することができます。このプレフィックスは、SQLクエリのパラメータを[レポートエクスプローラ]のパラメータと関連付けます。
例 select * from CUSTOMERS where CustomerName = '<%param:Parameter1%>'
この例の場合、SQLクエリ内にparam:というプレフィックスを持つパラメータが、[レポートエクスプローラ]上の該当するパラメータ値で更新されます。
![]() |
ヒント: 同じレポート内に、いくつかのパラメータのPromptUserプロパティを「True」に設定し、いくつかを「False」に設定してユーザーに入力を要求するかしないかを設定することができます。ただし、レポートオブジェクトのShowParameterUIプロパティが「False」に設定されている場合は、PromptUserの値にかかわらず、ユーザーへの入力ダイアログは表示されません。 |
SQLクエリの実行時にパラメータを追加する
SQLクエリの実行時にパラメータを追加する場合、クエリは以下のようになります。
| SQLクエリ |
コードのコピー
|
|---|---|
| SELECT * FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID WHERE Products.SupplierID = <%SupplierID|Enter a Supplier ID|1|S|True%> |
|
または
[レポートデータソース]ダイアログ内の
ボタンをクリックして[クエリデザイナ]を開き、パラメータ付きクエリを作成することも可能です。
パラメータの構文にパイプ区切りで5つの値を指定します。
<%Name | PromptString | DefaultValue | DataType | PromptUser%>
最初の値(Name)が必須となりますが、3番目の値(DefaultValue)を指定しない場合、フィールド一覧はデザイン時に埋め込まれません。Name値のみを指定し、パイプなしで渡すこともできます。いくつかの値を指定する場合、パイプは追加しますが、指定しない値に対して空白を指定する必要はありません。
例 <%ProductID||||False%>
Name: パラメータの一意の名前で、コードで入力されたパラメータのKeyプロパティに該当します。
PromptString: パラメータ入力ダイアログに表示する文字列で、ユーザーに入力してほしいデータに関する情報を表示します。
DefaultValue: パラメータのデフォルト値を設定します。たとえば、日付パラメータの場合、フィールドのデフォルト値を現在の日付にしておくと、別の日付に基づくレポートを生成する場合を除いて、[Enter]キーを押すだけで設定が済みます。
DataType: 既定値がS(文字列)で、この値はパラメータが示すデータ型をActiveReportsに通知します。ユーザープロンプトで使用されるコントロールの種類についても決定されます。タイプは以下の3つから選択することができます。
'<%MyStringParameter%>'<%MyStringParameter||"既定値"|S|False%>#<%日付パラメータ%>#![]() |
メモ: 「True」か「False」、または「0」か「1」の既定値を指定した場合、ActiveReportsはSQLへ同じ形式で転送します。 |