チュートリアル:レポートへのパラメーターの追加 (レポート ビルダー)
パラメーターをレポートに追加して、ユーザーがデータ ソースまたはレポートのレポート データをフィルター処理できるようにします。 レポート パラメーターは、データセット クエリに追加したクエリ パラメーターごとに自動で作成されます。 パラメーターのデータ型により、パラメーターがレポート ビューアー ツール バーに表示される方法が決まります。
学習する内容
このチュートリアルでは、次の方法を学習します。
Note
このチュートリアルでは、ウィザードに関する複数の手順を 1 つにまとめて示します。 レポート サーバーの参照、データ ソースの選択、データセットの作成に関する詳細な手順については、このシリーズの最初のチュートリアル (「チュートリアル: 基本的な表レポートの作成 (レポート ビルダー)」) を参照してください。
このチュートリアルの推定所要時間:25 分。
必要条件
要件の詳細については、「チュートリアルの前提条件 (レポート ビルダー)」 を参照してください。
1. テーブルまたはマトリックス ウィザードからマトリックス レポートとデータセットを作成する
マトリックス レポート、データ ソース、およびデータセットを作成します。
Note
このチュートリアルのクエリにはデータ値が含まれているため、外部のデータ ソースを必要としません。 このため、クエリが非常に長くなっています。 ビジネス環境でクエリにデータを含めることはありません。 これは、学習に使用することのみを目的としています。
新しいマトリックス レポートを作成するには
[スタート] ボタンをクリックし、[プログラム] をポイントし、[Microsoft SQL Server 2014Report Builder] をポイントして、[Report Builder] をクリックします。
[作業の開始] ダイアログ ボックスが表示されます。
Note
[はじめに] ダイアログ ボックスが表示されない場合は、[Report Builder] ボタンから [新規] をクリックします。
左側のウィンドウで、[ レポート ] が選択されていることを確認します。
右ペインで、 [テーブルまたはマトリックス ウィザード] をクリックします。
Create をクリックしてください。
[データセットの選択] ページで、 [データセットを作成する] をクリックします。
[次へ] をクリックします。
[データ ソースへの接続の選択] ページで、種類が [SQL Server] のデータ ソースを選択します。 一覧からデータ ソースを選択するか、レポート サーバーを参照してデータ ソースを選択します。
[次へ] をクリックします。
[クエリのデザイン] ページで、 [テキストとして編集] をクリックします。
次のクエリをクエリ ペインに貼り付けます。
;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
このクエリでは、共通テーブル式内のいくつかの Transact-SQL SELECT ステートメントの結果を組み合わせて、Contoso サンプル データベースの簡略化されたデータに基づく値を指定します。 Contoso 売上データは、消費者向け商品の各国の売上データを表します。 このチュートリアルでは、カメラの売上データを使用します。 サブカテゴリは、デジタル カメラ、デジタル一眼レフ (SLR) カメラ、ビデオ カメラ、およびアクセサリを表します。
クエリには、3 つの店舗の販売注文に関して、店舗 ID (StoreID)、商品のサブカテゴリ (Subcategory)、および注文数 (Quantity) を格納している列の名前が指定されています。 このクエリでは、店舗名は結果セットに含まれません。 このチュートリアルで後ほど、店舗 ID に対応する店舗の名前を別のデータセットから参照します。
クエリ パラメーターは存在しません。 以降、このチュートリアルの中でクエリ パラメーターを追加していきます。
クエリ デザイナーのツール バーで、 [実行] ( ! ) をクリックします。 結果セットは StoreID 列、Subcategory 列、Quantity 列で構成され、4 店舗のサブカテゴリごとの販売済み商品数量を示す 11 行のデータが表示されます。
[次へ] をクリックします。
2. テーブルまたはマトリックス ウィザードでデータの整理、レイアウトの選択、スタイルを選択する
ウィザードを使用して、データを表示する最初のデザインを作成します。 ウィザードのプレビュー ペインでは、テーブルやマトリックスのデザインを完了する前にデータのグループ化の結果を表示できます。
データをグループにまとめるには
[フィールドの配置] ページで、Subcategory を [行グループ] にドラッグします。
StoreID を [列グループ] にドラッグします。
Quantity を [値] にドラッグします。
販売数量の値をサブカテゴリごとにグループ化された行に整理しました。 店舗ごとに 1 列のデータが存在します。
[次へ] をクリックします。
[ レイアウトの選択 ] ページの [オプション] で、[ 小計と総計を表示 する] が選択されていることを確認します。
レポートを実行すると、最後の列にはすべての店舗のサブカテゴリごとの合計数量が表示され、最後の行には店舗ごとのすべてのサブカテゴリの合計数量が表示されます。
[次へ] をクリックします。
[ スタイルの選択 ] ページの [スタイル] ウィンドウで、スタイルを選択します。
[完了] をクリックします。
マトリックスがデザイン画面に追加されます。 マトリックスは 3 行× 3 列で表示されます。 先頭行のセルの内容は、Subcategory、[StoreID]、および Total です。 2 番目の行のセルの内容は、サブカテゴリ、店舗ごとの販売品目の数量、および、すべての店舗のサブカテゴリごとの合計数量を表す式です。 最後の行のセルには、店舗ごとの総計が表示されます。
マトリックス内をクリックし、最初の列の端にカーソルを合わせてハンドルをドラッグして、列の幅を拡張します。
[実行] をクリックして、レポートをプレビューします。
レポート サーバーでレポートが実行され、タイトルとレポートの処理時刻がレポートに表示されます。
このシナリオでは、列見出しに店舗 ID は表示されますが店舗名は表示されません。 後ほど、店舗 ID と店舗名のペアが格納されているデータセットで店舗名を参照する式を追加します。
3.クエリ パラメーターを追加してレポート パラメーターを作成する
クエリ パラメーターをクエリに対して追加すると、名前、プロンプト、およびデータ型に既定のプロパティを持つ単一値のレポート パラメーターがレポート ビルダーによって自動的に作成されます。
クエリ パラメーターを追加するには
デザイン ビューに切り替えます。
レポート データ ペインで、 [データセット] フォルダーを展開して DataSet1を右クリックし、 [クエリ] をクリックします。
クエリの最後の行として、次の Transact-SQL
WHERE
句を追加します。WHERE StoreID = (@StoreID)
句は
WHERE
、取得したデータを、クエリ パラメーター @StoreIDで指定されたストア識別子に制限します。クエリ デザイナーのツール バーで、 [実行] ( ! ) をクリックします。 [クエリ パラメーターの定義] ダイアログ ボックスが開き、クエリ パラメーター @StoreIDの値を入力するように求められます。
[パラメーター値] に「 200」と入力します。
[OK] をクリックします。
結果セットには、店舗 ID 200について、Accessories、Camcorders、および Digital SLR Cameras の販売数量が表示されます。
[OK] をクリックします。
レポート データ ペインで [パラメーター] フォルダーを展開します。
@StoreID という名前のレポート パラメーターがあることに注意 してください。 既定では、 パラメーターのデータ型は Text です。 店舗 ID は整数なので、次の手順でデータ型を [整数] に変更します。
4.レポート パラメーターの既定のデータ型とその他のプロパティを変更する
プロパティの既定値は、レポート パラメーターの作成後に調整することができます。
レポート パラメーターの既定のデータ型を変更するには
[レポート データ] ウィンドウの [ パラメーター ] ノードで、[ @StoreID] を右クリックし、[ パラメーターのプロパティ] をクリックします。
[プロンプト] に「 ストア識別子」と入力します。 このテキストは、レポートを実行するとレポート ビューアーのツール バーに表示されます。
[データ型] のドロップダウン リストから [整数] を選択します。
このダイアログ ボックスのそれ以外の設定は、既定値のままにします。
[OK] をクリックします。
レポートをプレビューします。 レポート ビューアーには、 @StoreIDのプロンプトが表示されます。
レポート ビューアー ツール バーで、店舗 ID の横に「 200」と入力し、 [レポートの表示] をクリックします。
4a. 使用可能な値と表示名を提供するデータセットを追加する
ユーザーがパラメーターの有効な値しか入力できないようにするには、選択可能な値のドロップダウン リストを作成します。 値は、データセットまたは指定した一覧から取得できます。 使用可能な値は、パラメーターへの参照を含まないクエリが格納されているデータセットから指定する必要があります。
パラメーターの有効な値のデータセットを作成するには
デザイン ビューに切り替えます。
レポート データ ペインで、 [データセット] フォルダーを右クリックし、 [データセットの追加] をクリックします。
[名前] に、「 Stores」と入力します。
[ レポートに埋め込まれたデータセットを使用 する] オプションを選択します。
[ データ ソース] のドロップダウン リストから、最初の手順で作成したデータ ソースを選択します。
[クエリの種類] で [テキスト] が選択されていることを確認します。
[クエリ] に、次のテキストを貼り付けます。
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
[OK] をクリックします。
レポート データ ペインの Stores データセット ノードに、StoreID フィールドと StoreName フィールドが表示されます。
4b. 使用可能な値を指定して値のドロップダウン リストを作成する
使用できる値のソースとなるデータセットを作成したら、レポートのプロパティで、レポート ビューアー ツール バーの有効な値のドロップダウン リストに値を設定するために使用するデータセットとフィールドを指定する必要があります。
パラメーターに使用できる値をデータセットから提供するには
[レポート データ] ウィンドウで、パラメーター @StoreIDを右クリックし、[ パラメーターのプロパティ] をクリックします。
[使用できる値] をクリックし、 [クエリから値を取得] をクリックします。
[データセット] ドロップダウン リストで [Stores] をクリックします。
[値フィールド] ドロップダウン リストで [StoreID] をクリックします。
[ラベル フィールド] ドロップダウン リストで [StoreName] をクリックします。 ラベル フィールドによって値の表示名が指定されます。
[全般] をクリックします。
[プロンプト] に「 ストア名」と入力します。
これで、店舗 ID ではなく、店舗名の一覧からの選択ができるようになりました。 ただし、パラメーターは店舗名ではなく店舗 ID に基づいているので、パラメーターのデータ型は [整数] のままです。
[OK] をクリックします。
レポートをプレビューします。
レポート ビューアーのツール バーで、パラメーター テキスト ボックスが [値>の選択] と表示<されるドロップダウン リストになりました。
ドロップダウン リストから [Contoso Catalog Store] を選択し、[ レポートの表示] をクリックします。
レポートには、店舗 ID 200について、Accessories、Camcorders、および Digital SLR Cameras の販売数量が表示されます。
4c. 既定値を指定してレポートが自動的に実行されるようにする
各パラメーターの既定値を指定して、レポートが自動的に実行されるようにすることができます。
データセットから既定値を指定するには
デザイン ビューに切り替えます。
レポート データ ペインで @StoreIDを右クリックし、 [パラメーターのプロパティ]をクリックします。
[ 既定値] をクリックし、[ クエリから値を取得する] をクリックします。
[データセット] ドロップダウン リストで [Stores] をクリックします。
[値フィールド] ドロップダウン リストで [StoreID] をクリックします。
[OK] をクリックします。
レポートをプレビューします。
@StoreIDの場合、レポート ビューアーには "Contoso 北米 Online Store" という値が表示されます。 これは、データセット ストアの結果セットの最初の値 です。 レポートには、店舗 ID 199について、Digital Cameras の販売数量が表示されます。
カスタムの既定値を指定するには
デザイン ビューに切り替えます。
レポート データ ペインで @StoreIDを右クリックし、 [パラメーターのプロパティ]をクリックします。
[ 既定値] をクリックし、[ 値の指定] をクリックし、[ 追加] をクリックします。 新しい値の行が追加されます。
[値] に「 200」と入力します。
[OK] をクリックします。
レポートをプレビューします。
@StoreIDの場合、レポート ビューアーに "Contoso Catalog Store" という値が表示されます。 これは、ストア識別子 200 の表示名です。 レポートには、店舗 ID 200について、Accessories、Camcorders、および Digital SLR Cameras の販売数量が表示されます。
4d. 名前と値のペアを持つデータセットから値を参照する
データセットには、ID と対応する名前フィールドの両方が含まれている場合があります。 ID しかない場合は、名前と値のペアが格納されている作成済みのデータセットで対応する名前を参照できます。
データセットから値を参照するには
デザイン ビューに切り替えます。
デザイン画面のマトリックスの先頭行の列見出しで、
[StoreID]
を右クリックし、 [式] をクリックします。式ペインで、先頭の
equals
(=) を除くすべてのテキストを削除します。[カテゴリ] で、 [共通の関数] を展開して [その他] をクリックします。 アイテム ペインに関数セットが表示されます。
[アイテム] で、 [参照] をダブルクリックします。 式ペインに "
=Lookup(
" と表示されます。 サンプル ペインに Lookup 構文の例が表示されます。次の式を入力します。
=Lookup(Fields!StoreID.Value,Fields!StoreID.Value,Fields!StoreName.Value,"Stores")
Lookup 関数は、StoreID の値を受け取って Stores データセットを検索して、StoreName の値を返します。
[OK] をクリックします。
ストア列ヘッダーには、複合式 <<Expr>> の表示テキストが含まれています。
レポートをプレビューします。
各ページの上部にあるテキスト ボックスに、店舗 ID ではなく店舗名が表示されます。
5.選択されたパラメーターの値をレポートに表示する
ユーザーがレポートの詳細を確認する場合に、選択したパラメーターの値がわかるようにすることができます。 レポートのパラメーターごとにユーザーが選択した値を保持できます。 そのための方法の 1 つとして、ページ フッターのテキスト ボックスにパラメーターを表示する方法があります。
選択されたパラメーターの値とラベルをページ フッターに表示するには
デザイン ビューに切り替えます。
ページ フッターを右クリックし、[ 挿入] をポイントして、[ テキスト ボックス] をクリックします。 タイムスタンプを示すテキスト ボックスの横にテキスト ボックスをドラッグします。 テキスト ボックスの側面にあるハンドルをクリックしてドラッグすることにより、幅を拡張します。
レポート データ ペインからテキスト ボックスに @StoreID パラメーターをドラッグします。 テキスト ボックスに "
[@StoreID]
" と表示されます。パラメーターのラベルを表示するには、既存の式の後ろに挿入カーソルが表示されるまでテキスト ボックスをクリックし、空白を入力した後、レポート データ ペインからテキスト ボックスにもう一度パラメーターをドラッグします。 テキスト ボックスに "
[@StoreID] [@StoreID]
" と表示されます。最初の式を右クリック し、[式] をクリックします。 [式] ダイアログ ボックスが表示されます。 「
Value
」を「Label
」に置き換えます。[OK] をクリックします。
テキスト ボックスに "
[@StoreID.Label] [@StoreID]
" と表示されます。レポートをプレビューします。
6.フィルターにレポート パラメーターを使用する
フィルターを使用すると、外部データ ソースから取得されたデータのうちどのデータをレポートで使用するかを制御できます。 表示するデータをユーザーが制御できるようにするには、マトリックスのフィルターにレポート パラメーターを含めます。
マトリックス フィルターにパラメーターを指定するには
デザイン ビューに切り替えます。
マトリックス上の行ヘッダーまたは列ヘッダーのハンドルを右クリックし、 [Tablix のプロパティ] をクリックします。
[フィルター] をクリックして、 [追加] をクリックします。 新しいフィルター行が表示されます。
[式] ドロップダウン リストからデータセット フィールドの StoreID を選択します。 データ型に [整数] が表示されます。 式の値がデータセット フィールドの場合、データ型は自動的に設定されます。
[演算子] で、(=) が選択されていることを
equals
確認します。[値] に「
[@StoreID]
」と入力します。[@StoreID]
は、=Parameters!StoreID.Value
を表す単純な式の構文です。[OK] をクリックします。
レポートをプレビューします。
マトリックスに、"Contoso Catalog Store" のデータのみが表示されます。
レポート ビューアー ツール バーで、" Store name? " に対して Contoso Asia Online Storeを選択し、 [レポートの表示] をクリックします。
マトリックスに、選択した店舗に対応するデータが表示されます。
7.レポート パラメーターを複数値をとるように変更する
パラメーターを単一値ではなく複数値をとるように変更するには、クエリと、フィルターなどのパラメーターへの参照を含むすべての式を変更する必要があります。 複数値パラメーターは値の配列です。 データセット クエリでは、クエリ構文で 1 つの値が一連の値に含まれているかどうかをテストする必要があります。 レポート式では、式の構文が個々の値ではなく値の配列にアクセスする必要があります。
パラメーターを単一値ではなく複数値をとるように変更するには
デザイン ビューに切り替えます。
レポート データ ペインで @StoreIDを右クリックし、 [パラメーターのプロパティ]をクリックします。
[複数の値を許可] を選択します。
[OK] をクリックします。
レポート データ ペインで、 [データセット] フォルダーを展開して DataSet1を右クリックし、 [クエリ] をクリックします。
クエリの最後の行の Transact-SQL
WHERE
句で (=) を にIN
変更equals
します。WHERE StoreID IN (@StoreID)
IN
演算子によって、値が一連の値に含まれているかどうかがテストされます。[OK] をクリックします。
マトリックス上の行ヘッダーまたは列ヘッダーのハンドルを右クリックし、 [Tablix のプロパティ] をクリックします。
[フィルター] をクリックします。
[演算子] で [次に含まれる] を選択します。
[OK] をクリックします。
ページ フッターのパラメーターを表示するテキスト ボックスで、すべてのテキストを削除します。
テキスト ボックスを右クリックして、 [式] をクリックします。 次の式を入力します。
=Join(Parameters!StoreID.Label, ", ")
この式は、ユーザーが選択したすべての店舗名を連結します。
[OK] をクリックします。
作成した式の前にあるテキスト ボックス内をクリックして、「Parameter Values Selected:」と入力します。
レポートをプレビューします。
"Store Name?" の横にあるドロップダウン リストをクリックします。
有効な各値がチェック ボックスの横に表示されます。
[すべて選択] をクリックして、 [レポートの表示] をクリックします。
レポートに、全店舗のすべてのサブカテゴリの販売数量が表示されます。
ドロップダウン リストで [すべて選択] をクリックして一覧を消去し、"Contoso Catalog Store" と "Contoso Asia Online Store" をクリックして [レポートの表示]をクリックします。
8.条件付き表示のためにブール型パラメーターを追加する
ブール型パラメーターを追加するには
デザイン画面のレポート データ ペインで [パラメーター] を右クリックし、 [パラメーターの追加] をクリックします。
[名前] に「ShowSelections」と入力します。
[プロンプト] に「Show selections?」と入力します。
[ データ型] で、ドロップダウン リストから [ ブール値] をクリックします。
[既定値] をクリックします。
[値の指定] をクリックして、 [追加] をクリックします。
[値] に「 False」と入力します。
[OK] をクリックします。
ブール型パラメーターに基づいて表示を設定するには
デザイン画面で、ページ フッターのパラメーター値を表示するテキスト ボックスを右クリックし、 [テキスト ボックスのプロパティ] をクリックします。
[表示] をクリックします。
[式を基に表示/非表示を切り替える] オプションを選択し、式ボタン ( [Fx] ) をクリックします。
次の式を入力します。
=Not Parameters!ShowSelections.Value
テキスト ボックスの [表示] オプションは、[非表示] プロパティによって制御されます。
Not
演算子を適用すると、パラメーターが選択されたときに、[非表示] プロパティが false になり、テキスト ボックスが表示されます。[OK] をクリックします。
[OK] をクリックします。
レポートをプレビューします。
パラメーターの選択肢を表示するテキスト ボックスが表示されません。
レポート ビューアーのツール バーの [ 選択項目の表示] の横にある をクリックします
True
。レポートをプレビューします。
ページ フッターのテキスト ボックスに、選択したすべての店舗名が表示されます。
9.レポート タイトルを追加する
レポート タイトルを追加するには
デザイン画面で、 [クリックしてタイトルを追加] をクリックします。
「Parameterized Product Sales」と入力し、テキスト ボックスの外側をクリックします。
10.レポートを保存する
レポート サーバーにレポートを保存するには
レポート ビルダー のボタンの [名前を付けて保存] をクリックします。
[最近使ったサイトとサーバー] をクリックします。
レポートを保存する権限があるレポート サーバーの名前を入力するか選択します。
" レポート サーバーに接続しています" というメッセージが表示されます。 接続が完了すると、レポート サーバー管理者がレポートの既定の場所として指定したレポート フォルダーのコンテンツが表示されます。
[名前] に表示されている既定の名前を Parameterized Sales Report に変更します。
[保存] をクリックします。
レポートがレポート サーバーに保存されます。 接続しているレポート サーバーがウィンドウ下部のステータス バーに表示されます。
次の手順
これで、レポートにパラメーターを追加する方法のチュートリアルは終了です。 パラメーターの詳細については、「レポート パラメーター (レポート ビルダーおよびレポート デザイナー)」を参照してください。