レッスン 4: カスケード型パラメーターの追加 (SSRS)
カスケード型パラメーターを使用すると、大量のレポート データの管理が可能になります。カスケード型パラメーターでは、1 つのパラメーターの値のリストが、前のパラメーターで選択した値によって決まります。リストの後半にあるパラメーターのデータセット クエリにはリストの前半にあるパラメーターへの参照が含まれているため、カスケード型パラメーターでは順序が重要な意味を持ちます。
このレッスンでは、カテゴリ、サブカテゴリ、製品の 3 つのクエリ パラメーターを定義するメイン データセット クエリのあるレポートを作成します。各カスケード型パラメーターについて、3 つの追加データ セットを定義して、使用可能な値を提供します。
開いているレポート サーバー プロジェクトに新しいレポートを追加するには
ソリューション エクスプローラーで [レポート] を右クリックし、[追加] をポイントして、[新しい項目] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[テンプレート] の [レポート] をクリックします。
[名前] に「CascadingParameters.rdl」と入力して、[追加] をクリックします。
レポート デザイナーが開き、デザイン ビューに新しい .rdl ファイルが表示されます。
共有データ ソースの参照を作成するには
レポート データ ペインで、[新規作成] をクリックし、[データ ソース] をクリックします。
[名前] に、「AdventureWorks_Ref」と入力します。
[共有データ ソース参照を使用する] を選択します。
ボックスの一覧から [AdventureWorks] を選択します。
[OK] をクリックします。
クエリとクエリ パラメーターを含むメイン データセットを作成するには
レポート データ ペインでデータ ソース AdventureWorks_Ref を右クリックし、[データセットの追加] をクリックします。
[名前] に、「SalesbyCategory」と入力します。
[データ ソース] で、[AdventureWorks_Ref] が選択されていることを確認します。
[クエリの種類] で [テキスト] が選択されていることを確認します。
クエリ ペインの下の [クエリ デザイナー] をクリックします。
[テキストとして編集] をクリックして、テキスト ベースのクエリ デザイナーに切り替えます。
次のクエリを貼り付けます。
SELECT PC.Name AS Category, PSC.Name AS Subcategory, P.Name AS Product, SOH.[OrderDate], SOH.SalesOrderNumber, SD.OrderQty, SD.LineTotal FROM [Sales].[SalesPerson] SP INNER JOIN [Sales].[SalesOrderHeader] SOH ON SP.[BusinessEntityID] = SOH.[SalesPersonID] INNER JOIN Sales.SalesOrderDetail SD ON SD.SalesOrderID = SOH.SalesOrderID INNER JOIN Production.Product P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory PSC ON P.ProductSubcategoryID = PSC.ProductSubcategoryID INNER JOIN Production.ProductCategory PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE (PC.Name = (@Category) AND PSC.Name = (@Subcategory) AND P.Name = (@Product))
これで、クエリ パラメーターの @Category、@Subcategory、および @Product がクエリに含まれます。
[実行] ([!]) をクリックして、結果セットを表示します。[クエリ パラメーターの定義] ダイアログ ボックスが表示されます。
次の表を参照して、[パラメーター値] 列に各クエリ パラメーターの値を入力します。
パラメーター名
パラメーター値
@Category
Components
@Subcategory
Brakes
@Product
Front Brakes
[OK] をクリックします。
front brakes の場合、結果セットには日付で分類された販売注文番号が含まれます。
クエリを実行したとき、各クエリ パラメーターは対応するレポート パラメーターを生成しました。[OK] を 2 度クリックして、クエリ デザイナーとダイアログ ボックスを終了します。
(省略可) レポート データ ペインでパラメーター ノードを展開し、レポート パラメーターの Category、Subcategory、および Product が表示されていることを確認します。
(省略可) 各データセット クエリ パラメーターの値は、同じ名前のレポート パラメーターにバインドされます。これを確認するには、レポート データ ペインで [SalesbyCategory] を右クリックし、[データセットのプロパティ] をクリックします。
[パラメーター] をクリックします。
[パラメーター名] で、パラメーターが @Category、@Subcategory、および @Product であることを確認します。
[パラメーター値] で、値が [@Category]、[@Subcategory]、および [@Product] であることを確認します。
これらの単純型の式は、レポート データ ペインに表示されるレポート パラメーターを参照します。
次に、各レポート パラメーターの値を実行時に提供するデータセットを作成します。この値は使用可能な値を表示し、既定値も提供して、レポートが自動的に実行されるようにします。
レポート パラメーターの有効な値データセットを定義するには
レポート データ ペインで、AdventureWorks_Ref を右クリックし、[データセットの追加] をクリックします。
[名前] に、「CategoryValues」と入力します。
[データ ソース] で、[AdventureWorks_Ref] が選択されていることを確認します。
[クエリの種類] で [テキスト] が設定されていることを確認します。
[クエリ] ペインの下の [クエリ デザイナー] をクリックします。
[テキストとして編集] をクリックして、テキスト ベースのクエリ デザイナーに切り替えます。
[クエリ] ペインに、次のクエリ テキストを貼り付けます。
SELECT DISTINCT Name AS Category FROM Production.ProductCategory
SELECT DISTINCT コマンドは列から一意の値のみを取得します。
[実行] ([!]) をクリックして、結果セットを表示します。[Category] 列に [Accessories]、[Bikes]、[Clothing]、および [Components] の 4 個の値が表示されます。
[OK] をクリックします。
次に、レポート パラメーター Category のプロパティを設定して、このクエリの値を使用可能な値とその既定値の両方に使用します。
レポート パラメーターに使用可能な値と既定値を設定するには
レポート データ ペインの Parameters フォルダーで、Category パラメーターを右クリックし、[パラメーターのプロパティ] をクリックします。
[名前] で、名前が「Category」であることを確認します。
[使用できる値] をクリックします。
[クエリから値を取得] をクリックします。次の 3 つのフィールドが表示されます。
[データセット] のボックスの一覧から、[CategoryValues] を選択します。
[値] フィールドで [Category] をクリックします。
[ラベル] フィールドで [Category] をクリックします。
[既定値] をクリックします。
[クエリから値を取得] をクリックします。
[データセット] のボックスの一覧から、[CategoryValues] を選択します。
[値] フィールドで [Category] を選択します。
[OK] をクリックします。
次に、@Category に選択した値に基づいて @Subcategory パラメーターを変更します。
レポート パラメーター Subcategory に値データセットを追加するには
レポート データ ペインで、[AdventureWorks_Ref] を右クリックし、[データセットの追加] をクリックします。
[名前] に、「SubcategoryValues」と入力します。
クエリ ペインに、次のクエリ テキストを貼り付けます。
SELECT DISTINCT PSC.Name AS Subcategory FROM Production.ProductSubcategory AS PSC INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE PC.Name = (@Category)
[OK] をクリックします。
レポート データ ペインにデータセット SubcategoryValues が表示されます。クエリ デザイナーを開いてクエリを実行し、カテゴリとして「Components」と入力すると、結果セットに 14 行が表示されます。
次に、レポート パラメーター @Subcategory のプロパティを設定して、このクエリの値を使用可能な値とその既定値の両方に使用します。
レポート パラメーター Subcategory に使用可能な値と既定値を設定するには
レポート データ ペインの Parameters フォルダーで、Subcategory を右クリックし、[パラメーターのプロパティ] をクリックします。
[使用できる値] をクリックします。
[クエリから値を取得] をクリックします。
[データセット] のボックスの一覧から、[SubcategoryValues] をクリックします。
[値] フィールドで [Subcategory] をクリックします。
[ラベル] フィールドで [Subcategory] をクリックします。
[既定値] をクリックします。
[クエリから値を取得] をクリックします。
[データセット] のボックスの一覧から、[SubcategoryValues] をクリックします。
[値] フィールドで [Subcategory] をクリックします。
[OK] をクリックします。
次に、@Category の値と @Subcategory の値に基づくパラメーター @Product を作成します。
レポート パラメーター Product に値データセットを追加するには
レポート データ ペインで AdventureWorks_Ref を右クリックし、[データセットの追加] をクリックします。
[名前] に「ProductValues」と入力します。
クエリ ペインに、次のクエリ テキストを貼り付けます。
SELECT DISTINCT P.Name AS Product FROM Production.Product P INNER JOIN Production.ProductSubcategory AS PSC ON P.ProductSubcategoryID = PSC.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE (PC.Name = (@Category) AND PSC.Name = (@Subcategory))
[OK] をクリックします。
Product というフィールドが 1 つある ProductValues という名前のデータセットがレポート データ ペインに追加されます。
次に、パラメーター @Product のプロパティを設定して、このクエリの値を使用可能な値とその既定値の両方に使用します。
レポート パラメーター Product に使用可能な値と既定値を設定するには
レポート データ ペインの Parameters フォルダーで、[Product] を右クリックし、[パラメーターのプロパティ] をクリックします。
[使用できる値] をクリックします。
[クエリから値を取得] をクリックします。
[データセット] のボックスの一覧から、[ProductValues] をクリックします。
[値] フィールドで [Product] をクリックします。
[ラベル] フィールドで [Product] をクリックします。
[既定値] をクリックします。
[クエリから値を取得] をクリックします。
[データセット] のボックスの一覧から、ProductValues をクリックします。
[値] フィールドで [Product] をクリックします。
[OK] をクリックします。
次に、各カスケード型パラメーターの値を選択した効果を確認できるように、テーブルを追加します。
結果を表示するテーブルを追加するには
[デザイン] ビューでテーブルを追加します。
レポート データ ペインで、SalesbyCategory データセットからテーブルの詳細行の 3 つのセルに、SalesOrderNumber、OrderQty、および LineTotal の各フィールドをドラッグします。
SalesbyCategory データセットから行グループ ペインに Category をドラッグし、[詳細] の上にドロップします。
SalesbyCategory データセットから行グループ ペインに Subcategory をドラッグし、Category の下にドロップします。
SalesbyCategory データセットから行グループ ペインに Product をドラッグし、Subcategory の下にドロップします。
SalesbyCategory データセットから行グループ ペインに OrderDate をドラッグし、Product の下にドロップします。
(省略可能) 次の各セルの書式を設定します。[LineTotal] を通貨、[OrderDate] を日付とします。
カスケード型パラメーターをテストするには
[プレビュー] をクリックします。
各レポート パラメーターに既定値を指定したので、レポートは自動的に実行されます。
[Category] ボックスの一覧から [Components] を選択します。
[Subcategory] ボックスの一覧から [Brakes] を選択します。
[Product] ボックスの一覧から [Front Brakes] を選択します。
パラメーターを順に選択しながら、前の選択に基づく有効な値だけが次のパラメーターのボックスの一覧に表示されることを確認してください。
レポート ビューアー ツール バーの [レポートの表示] をクリックします。
レポートに、販売注文番号と、注文数量および "front brakes" 製品を含む注文行の合計が表示されます。テーブルには、カテゴリ、サブカテゴリ、製品、および注文日別に分類された販売注文が表示されます。
次の手順
製品のカテゴリ、サブカテゴリ、製品名でフィルターするカスケード型パラメーターを使用して、特定の製品が含まれた販売注文を表示するレポートを作成できました。次のレッスンでは、ドリルスルー レポートにパラメーターを渡す方法を学習します。「レッスン 5: ドリルスルー レポートに渡すパラメーターの追加 (SSRS)」を参照してください。