PowerTools ActiveReports for .NET 9.0J > ActiveReportsユーザーガイド > 概念 > 対話的な機能 > パラメータ |
ActiveReportsを使用して、レポートの実行時にデータを表示するデータをフィルタ、追加できるパラメータを使用できます。ユーザーが出力をコントロールするために、パラメータをユーザーに要求したり、パラメータを事前に設定することができます。
クエリパラメータは、レポートパラメータのコレクション(ユーザによって入力されるまたは提供する値)、別のデータセット内のフィールド、または式から値を取得することができます。パラメータを作成するには、データソースに特有の構文を指定する必要があります。
次は、さまざまなデータソースにパラメータ付きのクエリを指定する方法について示します。
データソースの種類 | パラメータの構文 | 例 |
---|---|---|
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レポートでは、クエリデザイナを使用して簡単にパラメータ付きクエリを作成できます。[データセット]ダイアログ内の、ボタンをクリックすることで、クエリデザイナをアクセスしてSQLクエリを作成することができます。クエリデザイナを使用して対話的にクエリを作成する方法の詳細については、「クエリデザイナでクエリの作成」を参照してください。
なお、手動でパラメータ付きクエリを作成したい場合には、3箇所のパラメータをそれぞれ設定する必要があります。設定が必要となるのは、[レポートパラメータダイアログ]、[データセット]ダイアログの[パラメータ]ページ、[データセット]ダイアログの[クエリ]ページの3箇所です。
レポート-パラメータダイアログ
以下のいずれかの方法でレポートパラメータダイアログにアクセスできます。
[レポートパラメータ]ダイアログには、パラメータの一覧を持つパラメータページがあり、パラメータプロパティを設定できる3つのタブがあります。パラメータを一覧に追加するには、[追加](+)アイコンをクリックし、後述の3つのタブでパラメータのプロパティを設定します。
[レポート-パラメータ]ダイアログで、各パラメータに対してパラメータ入力ダイアログをどのように表示するかを管理できます。ダイアログで以下のプロパティを設定してパラメータを作成します。
パラメータは、レポートパラメータコレクション内で、パラメータが表示されている順番で取得されます。レポートパラメータダイアログから矢印のアイコンを使用して、表示順を変更することができます。
全般タブ
使用できる値
エンドユーザが値を選択できるドロップダウン一覧を埋め込む場合に使用します。
既定値
メモ : 使用できる値タブでは、値はクエリパラメータに渡され、ラベルがユーザに表示されます。例としては、値が社員IDである場合、ラベルに社員名の値を設定するとわかりやすくなります。 |
データセットダイアログのパラメータページ
[データセット]ダイアログの[パラメータ]ページで、クエリのパラメータにレポートのパラメータを渡します。パラメータ一覧の一番上の[追加](+)アイコンをクリックし、パラメータ名を入力し、以下のような値を入力します。
=Parameters!MPAA.Value
データセットダイアログのクエリページ
[データセット]ダイアログの[クエリ]ページで、SQLクエリにパラメータを入力します。パラメータを作成するには、データソースに特有の構文を使用します。例えば、OleDBデータソースの場合、以下のようなクエリを入力します。
SELECT * FROM Movie WHERE (MPAA = ? AND YearReleased = ?)
実行時にユーザより入力を要求せずにレポートを実行する場合、各パラメータの既定値を設定し、パラメータダイアログの[全般]タブで[非表示]チェックボックスをONに設定する必要があります。
サブレポートのデータを容易にユーザが親レポートと同期できるので、パラメータも非表示パラメータと認識されます。詳細については、「RDLレポートでのサブレポート」を参照してください。
ドリルスルーリンクもレポートから他のレポートへナビゲートするように使用されるので、パラメータも非表示パラメータになります。 [ナビゲーション]タブで[アクション]の[レポートに移動]を選択することによりに、パラメータ一覧が有効になります。
セクションレポートでは、Parametersコレクションを使用して実行時にコントロールへ直接値を渡すか、レポートの特有のインスタンスでデータのサブセットを表示できます。
レポートでパラメータを設定する様々な方法
<%Name | PromptString | DefaultValue | DataType | PromptUser%>
パラメータ値をユーザより入力する
パラメータ値をユーザに入力してもらうには、以下の設定がされている必要があります。
コレクションにパラメータが存在し、ShowParameterUIプロパティがTrueに設定されている場合、レポートを実行する際に自動的にパラメータ入力ダイアログが表示されます。要求されている値をユーザーが入力して、OKボタンをクリックすると、レポートが入力値を使用して表示されます。
ReportExplorerより追加されたパラメータ値は、SQLクエリのパラメータへ次の「param:」という
SQLクエリのパラメータのプレフィックスを指定して適用できます。このプレフィックスは、現在のパラメータをReportExplorerのパラメータと関連付けます。
例えば、 select * from CUSTOMERS where CustomerName = '<%param:Parameter1%>'
。この場合、 SQLクエリ内にparam:
というプレフィックスがあるパラメータが、[レポートエクスプローラ]上の該当するパラメータ値で更新されます。
ヒント: 同じレポート内に、いくつかのパラメータのPromptUserプロパティをTrueに設定し、いくつかをFalseに設定してユーザに入力を要求するかしないかを設定できます。ただし、レポートオブジェクトのShowParameterUIプロパティがFalseに設定されている場合、PromptUserの値にかかわらず、ユーザへの入力ダイアログが表示されません。 |
SQLクエリを使用してParametersコレクションへパラメータを追加する
SQLクエリを使用して、レポートのParametersコレクションへ単一のパラメータを追加する場合、クエリは以下のようになります。
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: パラメータのデフォルト値を設定します。たとえば、日付パラメータの場合、フィールドのDefaultValueを現在の日付にしておくと、別の日付に基づくレポートを生成する場合を除いて、[Enter]キーを押すだけで済みます。
DataType: 既定値がS(文字列)で、この値がパラメータが示すデータ型についてActiveReportsに通知します。ユーザプロンプトで使用されるコントロールの種類についても決定されます。タイプは以下の3つから選択できます。
'<%MyStringParameter%>'
<%MyStringParameter||"既定値"|S|False%>
#<%日付パラメータ%>#