チュートリアル:レポートへのパラメータの追加 (Report Builder)

このチュートリアルでは、Reporting Services のページ分割されたレポートにパラメーターを追加し、レポート閲覧者が 1 つまたは複数の値でレポート データをフィルター処理できるようにします。

Screenshot that shows you can add a parameter to a paginated report.

レポート パラメーターは、データセット クエリに追加したクエリ パラメーターごとに自動で作成されます。 パラメーターのデータ型により、パラメーターがレポート ビューアー ツール バーに表示される方法が決まります。

Note

このチュートリアルでは、ウィザードに関する複数の手順を 1 つにまとめて示します。 レポート サーバーの参照、データ ソースの選択、データセットの作成に関する詳細な手順については、このシリーズの最初のチュートリアル (「チュートリアル: 基本的な表レポートの作成 (Report Builder)」) を参照してください。

このチュートリアルの推定所要時間:25 分。

必要条件

要件の詳細については、「チュートリアルの前提条件 (Report Builder)」 を参照してください。

1. テーブルまたはマトリックスウィザードでマトリックスレポートとデータセットを作成する

マトリックス レポート、データ ソース、およびデータセットを作成します。

Note

このチュートリアルのクエリにはデータ値が含まれているため、外部データ ソースを必要としません。 このため、クエリが非常に長くなっています。 ビジネス環境では、クエリにデータは含まれません。 これは、学習に使用することのみを目的としています。

新しいマトリックス レポートを作成する

  1. コンピューター、Web ポータル、SharePoint 統合モードのいずれかから レポート ビルダーを起動します Reporting Services 。

    [新しいレポートまたはデータセット] ダイアログ ボックスが開きます。

    [新しいレポートまたはデータセット] ダイアログ ボックスが表示されない場合、[ファイル] メニュー >[新規作成] を選択します。

  2. 左ペインで、 [新しいレポート] が選択されていることを確認します。

  3. 右ペインで、 [テーブルまたはマトリックス ウィザード] をクリックします。

  4. [データセットの選択] ページで、 [データセットを作成する]>[次へ] の順に選択します。

  5. [データ ソースへの接続の選択] ページで、既存のデータ ソースを選択するか、レポート サーバーを参照して選択します。 種類が SQL Serverである任意のデータ ソースを選択します。

  6. [次へ] を選択します。

    資格情報の入力が必要な場合があります。

  7. [クエリのデザイン] ページで、[テキストとして編集] を選びます。

  8. 上部にある空のペインに次のクエリを貼り付けます。

    ;WITH CTE (StoreID, Subcategory, Quantity)   
    AS (  
    SELECT 200 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 2002 AS Quantity  
    UNION SELECT  200 AS StoreID, 'Camcorders' AS Subcategory, 1954 AS Quantity  
    UNION SELECT  200 AS StoreID, 'Accessories' AS Subcategory, 1895 AS Quantity  
    UNION SELECT  199 AS StoreID, 'Digital Cameras' AS Subcategory, 1849 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1579 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Camcorders' AS Subcategory, 1561 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Digital Cameras' AS Subcategory, 1553 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Accessories' AS Subcategory, 1534 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Accessories' AS Subcategory, 1755 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Camcorders' AS Subcategory, 1631 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1772 AS Quantity)  
    SELECT StoreID, Subcategory, Quantity  
    FROM CTE  
    

    Contoso サンプル データベースから抜粋した単純化されたカメラの販売データを使って値を指定する関係上、このクエリでは、複数の Transact-SQL SELECT ステートメントの結果が共通テーブル式の中で結合されています。 サブカテゴリは、デジタル カメラ、デジタル一眼レフ (SLR) カメラ、ビデオ カメラ、およびアクセサリです。

  9. クエリ デザイナーのツール バーで、[実行 (!)] を選択してデータを表示します。

    結果セットは、11 のデータ行で構成されており、4 ストアそれぞれの下位カテゴリに関するアイテム数量が以下の列に表示されます: StoreID、Subcategory、Quantity ストア名は結果セットの一部ではありません。 このチュートリアルで後ほど、店舗 ID に対応する店舗の名前を別のデータセットから参照します。

    このクエリには、クエリ パラメーターは存在しません。 以降、このチュートリアルの中でクエリパラメーターを追加していきます。

  10. [次へ] を選択します。

2. ウィザードでデータを整理し、レイアウトを選択する

ウィザードは、データを表示するための最初のデザインを提供します。 ウィザードのプレビュー ペインでは、テーブルやマトリックスのデザインを完了する前にデータのグループ化の結果を表示できます。

データをグループにまとめる

  1. [フィールドの配置] ページで、Subcategory を [行グループ] にドラッグします。

  2. StoreID を [列グループ] にドラッグします。

  3. Quantity を [値] にドラッグします。

    販売数量の値を、店舗ごとに 1 つの列で、サブカテゴリごとにグループ化された行に整理しました。

  4. [次へ] を選択します。

  5. [レイアウトの選択] ページの [オプション] で、 [小計と総計を表示] が選択されていることを確認します。

    レポートを実行すると、最後の列にはすべての店舗のサブカテゴリごとの合計数量が表示され、最後の行には店舗ごとのすべてのサブカテゴリの合計数量が表示されます。

  6. [次へ] を選択します。

  7. [完了] を選択します。

    マトリックスがデザイン画面に追加されます。 マトリックスは 3 行× 3 列で表示されます。 先頭行のセルの内容は、Subcategory、[StoreID]、および Total です。 2 番目の行のセルの内容は、サブカテゴリ、店舗ごとの販売品目の数量、および、すべての店舗のサブカテゴリごとの合計数量を表す式です。 最後の行のセルには、店舗ごとの総計が表示されます。

    Screenshot of the matrix with the three columns and three rows.

  8. マトリックス内を選択し、最初の列の端にカーソルを合わせてハンドルをドラッグして、列の幅を拡張します。

    Screenshot of the matrix while expanding the column width.

  9. [実行] を選択してレポートをプレビューします。

レポート サーバーでレポートが実行され、タイトルとレポートの処理時刻がレポートに表示されます。

Screenshot of the report preview run on the report server.

ここでは、列見出しに店舗 ID は表示されますが店舗名は表示されません。 後ほど、店舗 ID と店舗名のペアが格納されているデータセットで店舗名を参照する式を追加します。

3. クエリパラメーターを追加してレポートパラメーターを作成する

クエリ パラメーターをクエリに対して追加すると、名前、プロンプト、およびデータ型に既定のプロパティを持つ単一値のレポート パラメーターがレポート ビルダーによって自動的に作成されます。

クエリ パラメーターを追加する

  1. ‭デザイン ビューに切り替えるには、[デザイン] を選択します。

  2. レポート データ ペインで、[データセット] フォルダーを展開して DataSet1を右クリックし、[クエリ] を選択します。

  3. クエリの最後の行に、次の Transact-SQL WHERE 句を追加します。

    WHERE StoreID = (@StoreID)  
    

    この WHERE 句によって、取得されるデータが、クエリ パラメーター @StoreIDで指定された店舗 ID に限定されます。

  4. クエリ デザイナーのツール バーで、[実行 (!)] を選択します。 [クエリ パラメーターの定義] ダイアログ ボックスが開き、クエリ パラメーター @StoreIDの値を入力するように求められます。

  5. [パラメーター値] に「200」と入力します。

  6. [OK] を選択します。

    結果セットには、店舗 ID 200について、Accessories、Camcorders、および Digital SLR Cameras の販売数量が表示されます。

  7. [OK] を選択します。

  8. レポート データ ペインで [パラメーター] フォルダーを展開します。

@StoreID というレポート パラメーターと、レポート パラメーターをレイアウトできるパラメーター ペインが存在することがわかります。

Screenshot of the StodeID field in the Report Data pane.

パラメーター ペインが表示されない場合は、 [表示] メニューの [パラメーター] をクリックします。

4. レポート パラメーターの既定のデータ型とその他のプロパティを変更する

プロパティの既定値は、レポート パラメーターの作成後に調整することができます。

レポート パラメーターの既定のデータ型を変更する

既定では、作成したパラメーターのデータ型は [テキスト] です。 店舗 ID は整数なので、データ型を [整数] に変更します。

  1. レポート データ ペインの [パラメーター] ノードで、@StoreIDを右クリックし、[パラメーターのプロパティ]を選択します。

  2. [プロンプト] で、「Store identifier?」と入力します。レポートを実行すると、レポート ビューアーのツール バーにこのテキストが表示されます。

  3. [データ型] のドロップダウン リストから [整数] を選択します。

  4. このダイアログ ボックスのそれ以外の設定は、既定値のままにします。

  5. [OK] を選択します。

  6. [実行] を選択してレポートをプレビューします。 レポート ビューアーには、 @StoreID の入力を求めるプロンプト Store Identifier?が表示されます。

  7. レポート ビューアーのツール バーで、店舗 ID の横に「200」と入力し、[レポートの表示] を選択します。

Screenshot of the report preview for Store ID 200.

4a. 使用可能な値と表示名を持つデータセットを追加する

レポート閲覧者がパラメーターの有効な値しか入力できないようにするには、選択可能な値のドロップダウン リストを作成します。 値は、データセットまたは指定した一覧から取得できます。 使用可能な値は、パラメーターへの参照を含まないクエリが格納されているデータセットから指定する必要があります。

パラメーターの有効な値のデータセットを作成する

  1. デザイン ビューに切り替えるには、[デザイン] を選択します。

  2. レポート データ ペインで、[データセット] フォルダーを右クリックし、[データセットの追加] を選択します。

  3. [名前] に「Stores」と入力します。

  4. [レポートに埋め込まれたデータセットを使用します] を選択します。

  5. [データ ソース] のドロップダウン リストから、最初の手順で使用したデータ ソースを選択します。

  6. [クエリの種類][テキスト] が選択されていることを確認します。

  7. [クエリ] に、次のテキストを貼り付けます。

    SELECT 200 AS StoreID, 'Contoso Catalog Store' as StoreName  
    UNION SELECT 199 AS StoreID, 'Contoso North America Online Store' as StoreName  
    UNION SELECT 307 AS StoreID, 'Contoso Asia Online Store' as StoreName  
    UNION SELECT 306 AS StoreID, 'Contoso Europe Online Store' as StoreName  
    
  8. [OK] を選択します。

    レポート データ ペインの Stores データセット ノードに、StoreID フィールドと StoreName フィールドが表示されます。

4b. 一覧に表示される使用可能な値を指定する

使用できる値のソースとなるデータセットを作成したら、レポートのプロパティで、レポート ビューアー ツール バーの有効な値のドロップダウン リストに値を設定するために使用するデータセットとフィールドを指定します。

パラメーターに使用できる値をデータセットから提供する

  1. レポート データ ペインでパラメーター @StoreIDを右クリックし、[パラメーターのプロパティ]を選択します。

  2. [使用できる値] を選択し、[クエリから値を取得] を選択します。

  3. [データセット] ドロップダウン リストで [Stores] を選択します。

  4. [値フィールド] ドロップダウン リストで [StoreID] を選択します。

  5. [ラベル フィールド] ドロップダウン リストで [StoreName] を選択します。 ラベル フィールドによって値の表示名が指定されます。

  6. 全般 を選択します。

  7. [プロンプト] で、「Store Identifer?」を「Store name?」に変更します。

    これで、レポート閲覧者は、店舗 ID ではなく、店舗名の一覧から選択できるようになりました。 パラメーターは店舗名ではなく店舗 ID に基づいているので、パラメーターのデータ型は [整数] のままです。

  8. [OK] を選択します。

  9. レポートをプレビューします。

    レポート ビューアー ツール バーのパラメーター テキスト ボックスがドロップダウン リストに変わり、" 値を選択してください" と表示されるようになりました。

  10. ドロップダウン リストから Contoso Catalog Store を選択し、[レポートの表示] を選択します。

レポートには、店舗 ID 200について、Accessories、Camcorders、および Digital SLR Cameras の販売数量が表示されます。

4c. 既定値を指定する

各パラメーターの既定値を指定して、レポートが自動的に実行されるようにすることができます。

データセットから既定値を指定する

  1. デザイン ビューに切り替えます。

  2. レポート データ ペインで @StoreIDを右クリックし、[パラメーターのプロパティ]を選択します。

  3. [既定値] を選択し、[クエリから値を取得] を選択します。

  4. [データセット] ドロップダウン リストで [Stores] を選択します。

  5. [値フィールド] ドロップダウン リストで [StoreID] を選択します。

  6. [OK] を選択します。

  7. レポートをプレビューします。

レポート ビューアーに、"Contoso North America Online Store" が @StoreID の値として表示されます。この値が、データセット Storesの結果セットの最初の値であるためです。 レポートには、店舗 ID 199について、Digital Cameras の販売数量が表示されます。

カスタムの既定値を指定する

  1. デザイン ビューに切り替えます。

  2. レポート データ ペインで @StoreIDを右クリックしたら、[パラメーターのプロパティ]を選択します。

  3. [既定値]>[値を指定]>[追加] を選択します。 新しい値の行が追加されます。

  4. [値] に、「200」と入力します。

  5. [OK] を選択します。

  6. レポートをプレビューします。

レポート ビューアーに、"Contoso Catalog Store" が @StoreIDの値として表示されます。この値が、店舗 ID 200の表示名であるためです。 レポートには、店舗 ID 200について、Accessories、Camcorders、および Digital SLR Cameras の販売数量が表示されます。

4d. 名前と値の組を参照する

データセットには、ID と対応する名前フィールドの両方が含まれている場合があります。 ID しかない場合は、名前と値のペアが格納されている作成済みのデータセットで対応する名前を参照できます。

データセットから値を参照する

  1. デザイン ビューに切り替えます。

  2. デザイン サーフェイスのマトリックスの先頭行の列ヘッダーで、[StoreID] を右クリックし、[式] を選択します。

  3. 式ペインで、先頭の 等号 (=) を除くすべてのテキストを削除します。

  4. [カテゴリ] で、[共通の関数] を展開して [その他] を選択します。 アイテム ペインに関数セットが表示されます。

  5. [アイテム] で、 [参照] をダブルクリックします。 式ペインに " =Lookup(" と表示されます。 サンプル ペインに Lookup 構文の例が表示されます。

  6. 次の式を入力します。

    =Lookup(Fields!StoreID.Value,Fields!StoreID.Value,Fields!StoreName.Value,"Stores")      
    

    Lookup 関数は、StoreID の値を受け取って Stores データセットを検索して、StoreName の値を返します。

  7. [OK] を選択します。

    店舗の列見出しに、複合式の表示テキストとして次が示されます:Expr

  8. レポートをプレビューします。

各列の上部にある列ヘッダーに、店舗 ID ではなく店舗名が表示されます。

5. 選択されたパラメーターの値をレポートに表示する

レポート閲覧者がレポートの詳細を確認する場合に、選択したパラメーターの値がわかるようにすることができます。 レポートのパラメーターごとにユーザーが選択した値を保持できます。 そのための方法の 1 つとして、ページ フッターのテキスト ボックスにパラメーターを表示する方法があります。

  1. デザイン ビューに切り替えます。

  2. ページ フッターの >[挿入]>[テキスト ボックス] で右クリックします。 タイムスタンプを示すテキスト ボックスの横にテキスト ボックスをドラッグします。 テキスト ボックスの側面にあるハンドルをクリックしてドラッグすることにより、幅を拡張します。

  3. レポート データ ペインからテキスト ボックスに @StoreID パラメーターをドラッグします。 テキスト ボックスに " [@StoreID]" と表示されます。

  4. パラメーター ラベルを表示するには、挿入カーソルが既存の式の後に表示されるまで、テキスト ボックス内で選択します。 スペースを入力し、[レポート データ] ペインからテキスト ボックスにパラメーターの別のコピーをドラッグします。 テキスト ボックスに " [@StoreID] [@StoreID]" と表示されます。

  5. 1 つ目の [@StoreID] を右クリックし、[式] を選択します。 [式] ダイアログ ボックスが表示されます。 ValueLabelに置き換えます。

  6. [OK] を選択します。

    テキスト ボックスに " [@StoreID.Label] [@StoreID]" と表示されます。

  7. レポートをプレビューします。

6. フィルターにレポートパラメーターを使用する

フィルターを使用すると、外部データ ソースから取得されたデータのうちどのデータをレポートで使用するかを制御できます。 表示するデータをレポート閲覧者が制御できるようにするには、マトリックスのフィルターにレポート パラメーターを含めます。

マトリックス フィルターにパラメーターを指定する

  1. デザイン ビューに切り替えます。

  2. マトリックス上の行ヘッダーまたは列ヘッダーのハンドルを右クリックし、[Tablix のプロパティ] を選択します。

  3. [フィルター] を選択後、[追加] を選択します。 新しいフィルター行が表示されます。

  4. [式] ドロップダウン リストからデータセット フィールドの StoreID を選択します。 データ型に [整数] が表示されます。 式の値がデータセット フィールドの場合、データ型は自動的に設定されます。

  5. [演算子]等号 (=) が選択されていることを確認します。

  6. [値][@StoreID] と入力します。

    [@StoreID] は、 =Parameters!StoreID.Valueを表す単純な式の構文です。

  7. [OK] を選択します。

  8. レポートをプレビューします。

    マトリックスに、"Contoso Catalog Store" のデータのみが表示されます。

  9. レポート ビューアー ツール バーで、Store name? に対して [Contoso Asia Online Store]を選択し、[レポートの表示] を選択します。

マトリックスに、選択した店舗に対応するデータが表示されます。

7. レポートパラメーターを複数値をとるように変更する

パラメーターを単一値ではなく複数値を持つように変更するには、クエリと、フィルターなどのパラメーターへの参照を含むすべての式を変更する必要があります。 複数値パラメーターは値の配列です。 データセット クエリでは、クエリ構文で 1 つの値が一連の値に含まれているかどうかをテストする必要があります。 レポート式では、式の構文が個々の値ではなく値の配列にアクセスする必要があります。

パラメーターを単一値ではなく複数値をとるように変更する

  1. デザイン ビューに切り替えます。

  2. レポート データ ペインで @StoreIDを右クリックしたら、[パラメーターのプロパティ]を選択します。

  3. [複数の値を許可] を選択します。

  4. [OK] を選択します。

  5. レポート データ ペインで、[データセット] フォルダーを展開して DataSet1を右クリックし、[クエリ] を選択します。

  6. クエリの最後の行で、等号 (=) を Transact-SQL WHERE 句の IN に変更します。

    WHERE StoreID IN (@StoreID)  
    

    IN 演算子によって、値が一連の値に含まれているかどうかがテストされます。

  7. [OK] を選択します。

  8. マトリックス上の行ヘッダーまたは列ヘッダーのハンドルを右クリックし、[Tablix のプロパティ] を選択します。

  9. [フィルター] を選びます。

  10. [演算子][次に含まれる] を選択します。

  11. [OK] を選択します。

  12. ページ フッターのパラメーターを表示するテキスト ボックスで、すべてのテキストを削除します。

  13. テキスト ボックスを右クリックして、[式] を選択します。 式 =Join(Parameters!StoreID.Label, ", ") を入力します。

    この式は、ユーザーが選択したすべての店舗名を、コンマとスペースで区切って連結します。

  14. [OK] を選択します。

  15. 作成した式の前にあるテキスト ボックス内を選択して、以下のテキストを入力します。

    「Parameter Values Selected:」と入力します。

  16. レポートをプレビューします。

  17. "Store Name?" の横にあるドロップダウン リストを選択します。

    有効な各値がチェック ボックスの横に表示されます。

  18. [すべて選択] を選択し、[レポートの表示] を選択 します。

    レポートに、全店舗のすべてのサブカテゴリの販売数量が表示されます。

  19. ドロップダウン リストで [すべて選択] を選択して一覧を消去し、"Contoso Catalog Store" と "Contoso Asia Online Store" を選択して [レポートの表示]を選択します。

    Screenshot that shows you can multi-select parameters to add to a report.

8. 条件付き表示のためにブール値パラメーターを追加する

ブール値パラメーターを追加するには

  1. デザイン サーフェイスのレポート データ ペインで [パラメーター] を右クリックし、[パラメーターの追加] を選択します。

  2. [名前] に「ShowSelections」と入力します。

  3. [プロンプト] で、「Show selections?」と入力します。

  4. [データ型] には、ブール値を選択します。

  5. [既定値] を選択 します。

  6. [値の指定] を選択し、[追加] を選択します。

  7. [値] に、「False」と入力します。

  8. [OK] を選択します。

ブール値パラメーターに基づいて表示を設定するには

  1. デザイン サーフェイスで、ページ フッターのパラメーター値を表示するテキスト ボックスを右クリックし、[テキスト ボックスのプロパティ] を選択します。

  2. [表示] を選びます。

  3. [式を基に表示/非表示を切り替える] オプションを選択し、式ボタン ( [Fx] ) を選択します。

  4. =Not Parameters!ShowSelections.Value を入力します。

    テキスト ボックスの [表示] オプションは、[非表示] プロパティによって制御されます。 Not 演算子を適用すると、パラメーターが選択されたときに、[非表示] プロパティが false になり、テキストボックスが表示されます。

  5. [OK] を選択します。

  6. [OK] を選択します。

  7. レポートをプレビューします。

    パラメーターの選択肢を表示するテキスト ボックスがフッターに表示されません。

  8. レポート ビューアー ツール バーで、" Show selections" の横の [True]>[レポートの表示] を選択します。

    ページ フッターにテキスト ボックスが表示され、選択したすべての店舗名が示されます。

9. レポートタイトルを追加する

レポート タイトルの追加

  1. デザイン ビューに切り替えます。

  2. デザイン サーフェイスで、[選択してタイトルを追加] を選択します。

  3. 「Parameterized Product Sales」と入力し、テキスト ボックスの外側を選択します。

10. レポートを保存する

レポート サーバーにレポートを保存する

  1. レポート ビルダー ボタンで、[名前を付けて保存] を選びます。

  2. [最近使ったサイトとサーバー] を選択します。

  3. レポートを保存する権限があるレポート サーバーの名前を入力するか選択します。

    " レポート サーバーに接続しています" というメッセージが表示されます。 接続が完了すると、レポート サーバー管理者がレポートの既定の場所として指定したレポート フォルダーのコンテンツが表示されます。

  4. [名前] に表示されている既定の名前を Parameterized Sales Report に変更します。

  5. [保存] を選択します。

レポートがレポート サーバーに保存されます。 接続しているレポート サーバーがウィンドウ下部のステータス バーに表示されます。

次のステップ

レポートにパラメーターを追加する方法のチュートリアルはこれで終了です。 レポート パラメーターの詳細については、「ページ分割されたレポートのパラメーターを作成する (Report Builder)」を参照してください。