GrapeCity ActiveReports for .NET 16.0J
パラメータ
ActiveReportsユーザーガイド > 概念 > 対話的な機能 > パラメータ

ActiveReportsでは、パラメータを使用することで、レポートの実行時に表示するデータのフィルタリングや、追加をすることができます。ユーザーにパラメータの入力を要求してユーザーが出力をコントロールできるようにするか、パラメータを事前に設定することができます。

データソース別パラメータ構文の指定

クエリパラメータは、レポートパラメータのコレクション(事前に提供するか、ユーザーに入力させる値)、別のデータセット内のフィールド、または式から値を取得することができます。パラメータを作成するには、データソース別に固有の構文を指定する必要があります。

次の表は、パラメータ付きのクエリを指定する方法をデータソース別に示します。

データソースの種類 パラメータの構文
OleDB (?) SELECT * FROM Customer WHERE (CustomerID = ? AND AccountNumber = ?)
ODBC (?) SELECT * FROM Customer WHERE (CustomerID = ? AND AccountNumber = ?)
SQL Client (@ParameterName) SELECT * FROM Customer WHERE (CustomerID = @CustomerID AND AccountNumber = @AccountNumber)

ページレポート/RDLレポート

ページレポート/RDLレポートでは、[クエリデザイナ]を使用してパラメータ付きクエリを簡単に作成することができます。[データセット]ダイアログの[クエリ]ページ内にあるボタンをクリックすることで、クエリデザイナにアクセスしてSQLクエリを作成することができます。クエリデザイナを使用して対話的にクエリを作成する方法の詳細については、「クエリデザイナでクエリの作成」を参照してください。

なお、手動でパラメータ付きクエリを作成したい場合には、3か所のパラメータをそれぞれ設定する必要があります。設定が必要となるのは、[レポートパラメータ]ダイアログ、[データセット]ダイアログの[パラメータ]ページ、[データセット]ダイアログの[クエリ]ページの3か所です。

[レポート-パラメータ]ダイアログ

[レポート-パラメータ]ダイアログにアクセスする

以下のいずれかの方法で[レポート-パラメータ]ダイアログにアクセスすることができます。

[レポート-パラメータ]ダイアログには、[パラメータ]ページがあります。このページには、パラメータ一覧と、パラメータプロパティを設定するための3つのタブ([全般]、[使用できる値]、[既定値])が含まれています。パラメータを一覧に追加するには、[追加](+)アイコンをクリックし、3つのタブでパラメータのプロパティを設定します。タブの詳細については後述します。

[レポート-パラメータ]ダイアログでは、各パラメータに対してパラメータ入力ダイアログの表示を制御することができます。同ダイアログで以下のプロパティを設定してパラメータを作成します。

パラメータは、レポートパラメータコレクション内で表示されている順番で取得されます。表示順は[レポート-パラメータ]ダイアログから矢印のアイコンを使用して変更することができます。

[全般]

  • 名前: このフィールドにパラメータ名を設定します。ここで設定する値はパラメータ一覧に表示され、該当するクエリパラメータと一致する必要があります。
  • データタイプ: パラメータのデータタイプを設定します。これは、このパラメータでフィルタするフィールドのデータタイプと一致する必要があります。データタイプにより、表示されるインタフェースも異なります。
    • Boolean: 「True」「False」の2つのオプションをユーザーに提供します。
    • Date: 既定値、または利用可能な値のドロップダウン一覧を提供しない場合、日付ピッカーを表示します。
    • DateTime: 既定値、または利用可能な値のドロップダウン一覧を提供しない場合、日付ピッカー、あるいは時刻ピッカーを表示します。
    • Integer: ユーザーにテキストボックス、またはドロップダウンで利用可能な値の一覧を表示します。
    • Float: ユーザーにテキストボックス、またはドロップダウンで利用可能な値の一覧を表示します。
    • String: ユーザーにテキストボックス、またはドロップダウンで利用可能な値の一覧を表示します。
  • パラメータ入力ダイアログに表示する文字列: このフィールドにはユーザーから情報を要求するテキストを入力します。デフォルトでは、名前プロパティと同じ値になります。
  • Null値を許可する: パラメータでNull値を許可する場合はチェックボックスをONにします。デフォルトでは、OFFになっています。
  • 空白の値("")を許可する: パラメータで空白値を許可する場合はチェックボックスをONにします。デフォルトでは、OFFになっています。
  • 複数の値を許可する: 利用可能な値から複数の値が選択可能にする場合、チェックボックスをONにします。
  • 複数行表示: パラメータで複数行の値を許可する場合、チェックボックスをONにします。複数行が収まるようにコントロールは自動調整されます。
  • 非表示: パラメータ入力ダイアログをユーザーに表示せずに既定値を設定するか、サブレポート、またはドリルスルーリンクから値を渡す場合はチェックボックスをONにします。パラメータ入力ダイアログを非表示にし、既定値を提供しない場合、レポートは実行されません。

[使用できる値]

エンドユーザーが選択できる値をドロップダウン一覧として表示する場合に使用します。

  • 値を直接入力: 静的な値、または式を使用してラベル、および値を提供します。
  • クエリから値を取得: データセットを選択し、そこからラベルフィールド、および値フィールドを取得することができます。
  • 並べ替え:[条件]フィールドではNone、Label、およびValueのオプションを選択し、使用できる値の並べ替えを管理できます。Labelを選択すると、パラメータ値は[ラベル]フィールドによって並べ替えられます。Valueを選択すると、パラメータ値が[値]フィールドによって並べ替えられます。また、[条件]フィールドを設定した後、[方向]フィールドが表示されます。[方向]フィールドでは、AscendingまたはDescendingを選択し、並べ替え方向を設定できます。
    Parameters drop down list Parameters drop down list
    条件:Value、値:ProductName 条件:Label、ラベル:ProductID

[既定値]

ユーザーがパラメータを入力しない、またはパラメータ入力ダイアログを非表示にする場合、パラメータに既定値を設定します。
  • 値を直接入力: 静的な値、または式を使用して既定値を提供します。
  • クエリから値を取得: データセットを選択し、そこから値フィールドを取得することができます。
  • なし: ユーザーがパラメータ値を提供します。
メモ: [使用できる値]タブで、とはクエリパラメータに渡されるもの、ラベルとはユーザーに表示されるものを指します。例としては、値が社員IDの場合、ラベルには社員名の値を設定するとユーザーにはわかりやすくなります。

[データセット]ダイアログの[パラメータ]ページ

[データセット]ダイアログ[パラメータ]ページで、クエリのパラメータにレポートのパラメータを渡します。パラメータ一覧の一番上の[追加](+)アイコンをクリックし、パラメータ名を入力し、以下のような値を入力します。

=Parameters!MPAA.Value

[データセット]ダイアログの[クエリ]ページ

[データセット]ダイアログ[クエリ]ページで、SQLクエリにパラメータを入力します。パラメータを作成するには、データソースに特有の構文を使用します。たとえば、OleDBデータソースの場合、以下のようなクエリを入力します。

SELECT * FROM Movie WHERE (MPAA = ? AND YearReleased = ?)
       

実行時にユーザーにパラメータの入力を要求せずにレポートを実行する場合、各パラメータの既定値を設定し、[パラメータ]ダイアログの[全般]タブで[非表示]チェックボックスをONに設定する必要があります。

サブレポートのデータは、ユーザーが親レポートと容易に同期させることができるので、パラメータも非表示パラメータと認識されます。詳細については、「RDLレポートでのサブレポート」を参照してください。

ドリルスルーリンクもレポートから他のレポートへナビゲートするように使用されるので、パラメータも非表示パラメータになります。[ナビゲーション]タブで[アクション][レポートに移動]を選択することによりに、パラメータ一覧が有効になります。

セクションレポート

セクションレポートでは、パラメータコレクションを使用して実行時に値をコントロールに直接渡すか、レポートの特有のインスタンスでデータのサブセットを表示することができます。

レポートでパラメータを設定する方法

ユーザーにパラメータ値の入力を求める

パラメータ値をユーザーに入力してもらうには、以下の設定が完了している必要があります。

コレクションにパラメータが存在し、ShowParameterUIプロパティが「True」に設定されている場合、レポートを実行すると自動的にパラメータ入力ダイアログが表示されます。要求される値をユーザーが入力して[OK]ボタンをクリックすると、レポートが入力値を使用して表示されます。

[レポートエクスプローラ]から追加されたパラメータ値は、SQLクエリのパラメータに「param:」というパラメータプレフィックスを指定して適用することができます。このプレフィックスは、SQLパラメータをレポートエクスプローラのパラメータと関連付けます。

例 select * from CUSTOMERS where CustomerName = '<%param:Parameter1%>'

この例の場合、SQLクエリ内にparam:というプレフィックスを持つパラメータが、[レポートエクスプローラ]上の該当するパラメータ値で更新されます。

ヒント: 同じレポート内に、いくつかのパラメータのPromptUserプロパティを「True」に設定し、いくつかを「False」に設定してユーザーに入力を要求するかしないかを設定することができます。ただし、レポートオブジェクトのShowParameterUIプロパティがF「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つから選択することができます。

PromptUser: パラメータ入力ダイアログを表示するかどうかを指定するブール値。いくつかのパラメータに対して「True」を設定し、いくつかには「False」を設定することができます。レポートでパラメータのPromptUserプロパティの値にかかわらず、レポートのShowParameterUIプロパティが「False」に設定されている場合、パラメータ入力ダイアログは表示されません。
関連トピック