ページレポート/RDLレポートでは、「複数の値を許可する」というオプションを選択することで、複数値を取るパラメータを追加することができます。複数値を取るパラメータでは、リストから複数のオプションを任意で選ぶか、「すべて選択」を選んですべてのオプションを選択することができます。
選択するオプションが多数にのぼる場合に「すべて選択」を選択すると、長大なSQLクエリが作成され、SQLコマンドを実行できないことがあります。そのような場合、["すべて選択"を選択したときの値]オプションで、複数値を取るように値を指定することができます。
以下の手順では、複数値を値に取るパラメータを作成し、リストにあるすべてのオプションを選択するために値を指定する方法について、順を追って説明します。ここでは、Visual Studioのプロジェクトにページレポート、またはRDLレポートのテンプレートを追加し、レポートがデータソースに接続されていることを前提としています。それぞれの詳細については「クイックスタート」、「データソースとの接続」を参照してください。
メモ: 以下の手順は、NorthWindデータベース(NWind.mdb)のProductsテーブルを使用しています。データの使用にはNorthWindデータベース(..\ActiveReportsNET18\Samples\Data\NWind.mdb)へのアクセス権限が必要です。
パラメータ値を設定するためにデータセットを作成するには
- レポートエクスプローラで、[パラメータ]ノードを右クリックし、[パラメータの追加]を選択します。
- [レポート - パラメータ]ダイアログが表示されます。[クエリ]ページを選択します。
- [クエリ]テキストボックスに、次のようにSQLクエリを入力します。
select distinct productName from Products
- [クエリ]テキストボックスの上部にある[クエリの検証]アイコンをクリックして、クエリを検証します。
- [OK]をクリックしてダイアログを閉じます。[レポートエクスプローラ]の[データセット]ノードの下に、「DataSet1」が新たなノードとして表示されています。これを開くとproductNameフィールドが追加されています。
レポートパラメータを追加するには
- レポートエクスプローラで、[パラメータ]ノードを右クリックし、[パラメータの追加]を選択します。
- [レポート - パラメータ]ダイアログが表示されます。パラメータの名前はデフォルトの「ReportParameter1」のままにします。
- フィールドのものと同じデータタイプを[データタイプ]に選択します(ここでは、ProductNameのデータタイプの「String」を選択)。
- [パラメータ入力ダイアログに表示する文字列]フィールドに適切な文字列を入力します(ここでは、「製品名を選択します」と入力)。
- [複数の値を許可する]のチェックボックスをオンにして、ユーザーがリストから複数のアイテムを選択できるようにします。
- ["すべて選択"を選択したときの値]に「1」と入力します。
[レポートパラメータ]の値のリストを作成するには
- [レポート - パラメータ]ダイアログで、[使用できる値]タブへと移動し、ラジオボタンで[クエリから値を取得]を選択します。
- [データセット]フィールドで、前述の手順で追加したデータセット(ここでは「DataSet1」)を選択します。
- [値]フィールド、[ラベル]フィールドで、productNameフィールドを選択します。
- [OK]をクリックしてダイアログを閉じ、コレクションにパラメータを追加します。
パラメータを使ってデータセットを追加するには
- レポートエクスプローラで、[データソース]ノードの下にある[DataSource1]を右クリックし、[データセットの追加]を選択します。
- 表示される[データセット]ダイアログで、[パラメータ]ページを開き、パラメータリストの上部にある[追加](+)アイコンをクリックして、次の2つをデータセットに追加します。これにより、次の手順3のクエリに追加するパラメータに値が提供されます。
名前: ReportParameter1; 値: =Parameters!ReportParameter1.Value
名前: Parameter1; 値: =Parameters!ReportParameter1.Value
- [クエリ]ページで、[クエリ]テキストボックスに、次のようにSQLクエリを入力します。
SELECT * FROM products where ProductName in (?) OR '1' in (?)
このクエリは実行時に選択された製品名に対応するデータを取得します。(この手順では「1」を指定しましたが、)ユーザーが「すべて選択」を選んだ場合は、「OR」に続くクエリが計算されて、全製品のデータが取得されます。
- [データセットの検証]アイコンをクリックしてクエリを検証し、「フィールド」リストに追加します。
- [OK]ボタンをクリックしてダイアログを閉じます。DataSet2と各フィールドが[レポートエクスプローラ]に追加されます。
レポートを表示するには
- デザイナ面にコントロール(例 Table)を配置して、このコントロールにフィールドを追加します。
- [プレビュー]タブをクリックします。各パラメータがサイドバーにリスト表示され、いちばん上に「すべて選択」が表示されています。
- レポートに表示する製品名をチェックボックスで選択し、[レポートの表示]をクリックします。
メモ: パラメータの「使用できる値([値を直接入力]または[クエリから値を取得])」には対象となるデータの一部の値のみが含まれている状態で、[すべて選択]チェックボックスを選択してレポートをプレビューした場合、パラメータ欄に表示されている値に該当するレコードだけではなくて、データベース内のすべてのレコードが表示されます。例えば、レポートデータソース内のパラメータの対象となるフィールドには4つの値が存在するのに対し、パラメータとして選択できる値は2つ([すべて選択]チェックボックスを含めると3つ)しか存在しないとします。この状態で[すべて選択]チェックボックスを選択して、レポートをプレビューした場合、パラメータとして選択できる2つの値に一致するレコードのみが表示されるのではなく、データベース内のすべてのレコードが表示されます。