レッスン 7 : ドリルスルー レポートの作成
新規 : 2006 年 7 月 17 日
パラメータの用途の 1 つに、他のレポートへのドリルスルーがあります。このレッスンでは、AdventureWorks のサンプル レポート "Territory Sales Drilldown" にパラメータを追加し、販売区域グループを条件にレポート データをフィルタ選択できるようにします。また、パラメータに可能な値を設定するため TerritoryGroup というデータセットを作成し、AdventureWorks データベースから販売区域グループ名を 1 種類ずつ取得するようにします。
次のレッスンでは、このレポートを数種類のナビゲーション アクションの対象として使用します。
Advanced Parameters Tutorial レポート サーバー プロジェクトを開くには
SQL Server Business Intelligence Development Studio で、前のレッスンで作成した Advanced Parameters Tutorial レポート サーバー プロジェクトを開きます。
ソリューション エクスプローラで、Resellers Worldwide レポートをダブルクリックします。レポートが [レイアウト] ビューに表示されます。
[データ] タブをクリックします。
AdventureWorks のサンプル レポート Territory Sales Drilldown をインポートするには
ソリューション エクスプローラで [レポート] フォルダを右クリックし、[追加]、[既存の項目] の順にクリックします。[既存項目の追加] ダイアログ ボックスが表示されます。
メモ : [レポートのインポート] は、既存の Reporting Services レポートではなく、既存の Microsoft Access レポートをインポートするコマンドです。 AdventureWorks Sample Reports フォルダまで移動します。このフォルダの既定の場所は、*<drive>:\*Program Files\Microsoft SQL Server\90\Samples\Reporting Services\Report Samples\AdventureWorks Sample Reports です。Territory Sales Drilldown.rdl レポートをダブルクリックして、Advanced Parameter Tutorial プロジェクトに追加します。
ソリューション エクスプローラで、Territory Sales Drilldown.rdl を右クリックして [名前の変更] をクリックします。「Parameterized Territory Sales Drilldown.rdl」と入力して、Enter キーを押します。
Parameterized Territory Sales Drilldown レポートをダブルクリックします。レポートが [レイアウト] ビューに表示されます。
次は、このレポートのデータ ソースを変更し、レッスン 1 で作成した共有データ ソースを使うようにする必要があります。
データセットを別のデータ ソースにバインドするには
[データ] タブをクリックして [データ] ビューに切り替えます。"データベースに接続できません。接続文字列を設定およびテストしてください。" というエラーが表示されます。
Parameterized Territory Sales Drilldown レポートでは "AdventureWorks" というデータ ソースが使用されていますが、これを共有データ ソース "Resellers" に変更する必要があります。
[データセット] の一覧で [TerritorySales] データセットを選択し、[選択したデータセットの編集] をクリックします。
[クエリ] タブの [データ ソース] の一覧で、[Resellers] を選択します。
[OK] をクリックします。
[実行] ([!]) をクリックして、結果セットを表示します。
6 つの列 (Name、SalesPersonID、FirstName、LastName、SalesOrderNumber、TotalDue) に値が入力された多数の行が表示されます。
次は、このレポートをパラメータ化します。有効な値を格納する新しいデータセットを作成した後、新しいレポート パラメータ SalesTerritoryGroup を作成し、このデータセットから有効な値を取得するようにします。
可能な値を格納するデータセットを作成するには
[データセット] の一覧で、[<新しいデータセット>] をクリックします。[データセット] ダイアログ ボックスが表示されます。
[クエリ] タブで、[名前] ボックスに「ValidValuesforTerritoryGroup」と入力します。
[データソース] が [Resellers] になっていることを確認します。
[コマンドの種類] が [Text] になっていることを確認します。
次のクエリをクエリ ペインに貼り付けます。
SELECT DISTINCT [Group] AS SalesTerritoryList FROM [AdventureWorks].[Sales].[SalesTerritory]
AdventureWorks データベースの Sales.SalesTerritory テーブルにある Group 列には、販売区域を表す値が含まれています。
[実行] ([!]) をクリックして、結果セットを表示します。
SalesTerritoryList 列に、Europe、North America、Pacific の 3 つの行が表示されます。この 3 つの値が、次の手順で作成する複数値パラメータ SalesTerritoryGroup での選択対象となります。
新しい複数値レポート パラメータを追加するには
[レイアウト] タブをクリックします。
[レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが表示されます。
[追加] をクリックします。新しいレポート パラメータが既定値で生成されます。
[プロパティ] セクションの [名前] ボックスに「SalesTerritoryGroup」と入力し、データ型が String であることを確認します。
[複数値] チェック ボックスをオンにします。
[表示名] ボックスに「販売区域グループ : 」と入力します。
[空白の値を許可] チェック ボックスをオフにします。
[使用できる値] セクションで、[クエリにより取得] をクリックします。
[データセット] の一覧で [TerritoryGroup] を選択します。
[値フィールド] の一覧で [SalesTerritory] を選択します。
[ラベル フィールド] の一覧で、[SalesTerritory] を選択します。
[既定値] セクションで [クエリにより取得] をクリックします。
[データセット] の一覧で [TerritoryGroup] を選択します。
[値フィールド] の一覧で [SalesTerritory] を選択します。
これで、SalesTerritoryGroup の既定値は、データセット ValidValuesforTerritoryGroup から取得したすべての値になります。
[OK] をクリックします。
これで、レポート パラメータとその可能な値のセットを定義できました。次の手順では、TerritorySales データセット クエリを修正し、この有効な値のセットの基になっている販売区域グループ用の列を含めます。その後さらにクエリを修正し、パラメータ SalesTerritoryGroup に選択した値のデータだけを抽出できるようにします。
データセット クエリにレポート パラメータをバインドするには
[データ] タブをクリックします。
[データセット] の一覧で、[TerritorySales] を選択します。クエリ ペインに TerritorySales クエリが表示されます。
有効な値のクエリを修正したときと同様に、既存のクエリに販売区域グループを追加し、また制限句
HAVING (ST.[Group] IN (@SalesTerritoryGroup))
を追加して、選択した販売区域のデータだけが結果に表示されるようにします。既存のクエリを次のクエリで置き換えます。
SELECT ST.[Group] AS SalesTerritory, ST.Name, SP.SalesPersonID, C.FirstName, C.LastName, SOH.SalesOrderNumber, SOH.TotalDue FROM Sales.SalesTerritory ST INNER JOIN Sales.SalesPerson SP ON ST.TerritoryID = SP.TerritoryID INNER JOIN HumanResources.Employee E ON SP.SalesPersonID = E.EmployeeID INNER JOIN Person.Contact C ON E.ContactID = C.ContactID INNER JOIN Sales.SalesOrderHeader SOH ON SP.SalesPersonID = SOH.SalesPersonID GROUP BY ST.[Group],ST.Name, SP.SalesPersonID, C.FirstName, C.LastName, SOH.SalesOrderNumber, SOH.TotalDue HAVING (ST.[Group] IN (@SalesTerritoryGroup)) ORDER BY ST.Name
(省略可) クエリ パラメータがレポート パラメータにバインドされていることを確認します。[選択したデータセットの編集] をクリックし、[パラメータ] タブをクリックして、パラメータ @SalesTerritoryGroup に
=Parameters!SalesTerritoryGroup.Value
という式が設定されていることを確認します。[実行] ([!]) をクリックして、結果セットを表示します。[クエリ パラメータの定義] ダイアログ ボックスが表示されるので、「Europe」と入力します。
結果セットに、Europe の値だけが表示されます。
メモ : クエリ デザイナでは、複数値をとるパラメータを評価することはできません。
Parameterized Territory Sales Drilldown レポートでは、SalesOrderNumber ボックスに、同じレポート フォルダ内のドリルスルー レポートを指すハイパーリンク アクションがあらかじめ定義されています。次の手順では、このハイパーリンクを変更して、既定のサンプル フォルダを指定します。
Sales Order Number ドリルスルーにサンプル レポート フォルダを指定するには
[レイアウト] タブをクリックします。
[SalesOrderNumber] ボックスを右クリックし、[プロパティ] をクリックします。[テキスト ボックスのプロパティ] ダイアログ ボックスが表示されます。
[ナビゲーション] タブをクリックします。
[ハイパーリンクのアクション] で、[レポートに移動] オプションに示されているレポート名を次の完全修飾レポート アドレスに置き換えます。
/AdventureWorks Sample Reports/Sales Order Detail
[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
レポートの説明を修正するには
[レポート] メニューの [レポートのプロパティ] をクリックします。[レポートのプロパティ] ダイアログ ボックスが表示されます。
[説明] ボックスの内容を「Adventure Works の区域別売上高 (販売区域パラメータ使用)」と書き換えます。
[OK] をクリックします。
メモ : レポートをレポート サーバーに配置しても、レポート サーバー上のパブリッシュされた説明は、レポート デザイナで変更した説明に置き換えられません。パブリッシュされた説明を置き換えるには、レポート マネージャを使って説明を削除した後、レポート デザイナからレポートを再配置する必要があります。レポート マネージャで説明を削除するには、レポートを指定して [プロパティ] タブをクリックし、[説明] テキストを選択して削除した後、[適用] をクリックします。
次の手順
ここでは、レポート アイテム テキスト ボックスにハイパーリンクを追加しました。次のレッスンでは、パブリッシュされた Resellers Worldwide を基にリンクされたレポートを作成し、レポート パラメータの値をあらかじめ設定して、対象読者に応じたレポートを提供できるようにします。「レッスン 8 : カスタマイズされたパラメータ値を使ったリンク レポートの追加」を参照してください。
参照
その他の技術情報
Reporting Services でのパラメータを使用した作業
パラメータを使用した他のレポートへの接続