レッスン 2 : レポートへのカスケード型パラメータの追加

新規 : 2006 年 7 月 17 日

カスケード型パラメータを使用すると、自然階層リレーションシップにあるパラメータのセットの中で、パラメータごとに可能な値をフィルタ選択できます。たとえば AdventureWorks データベースの場合、各販売代理店には、都市内のある場所の住所 (City フィールド) が割り当てられています。これらの都市は都道府県 (StateProvince フィールド) としてグループ化され、都道府県は国または地域 (CountryRegion フィールド) としてグループ化されます。さらに、国または地域は販売区域 (TerritoryGroup フィールド) としてグループ化されます。これらのフィールドに対して、依存関係の順に一番広範なカテゴリ TerritoryGroup から一番限定的なカテゴリ City まで、4 つのカスケード型パラメータを作成できます。

レポート ツール バーにカスケード型パラメータが表示されている場合、レポート ユーザーが最初のパラメータに値を指定すると、その値に応じて次のパラメータの可能な値が決まります。このようにすると、それぞれのカスケード型パラメータで、何千もの選択肢を対応できる数まで絞り込むことができます。

カスケード型パラメータは順序が決まっており、レポート デザイナでレポート パラメータを表示すると、パラメータ ペインにはパラメータの一覧が順序に従って表示されます。一覧の先頭のパラメータは、他のどのパラメータにも依存しません。一覧の次のパラメータは、カスケード型パラメータとして指定されている場合、その前のパラメータに依存します。レポート パラメータのダイアログ ボックスで上下方向の矢印ボタンを使用すると、パラメータの順序を変更できます。

このレッスンでは、前のチュートリアルで作成した Sales Orders レポートに、4 つのカスケード型パラメータ (TerritoryGroup、CountryRegion、StateProvince、City) を追加します。各パラメータにはデータセットを作成して、可能な値の一覧を定義します。クエリ パラメータを使って、可能な値のデータセットを取得するクエリを作成すると、レポート パラメータが自動的に生成されます。ここでは、最も広範な TerritoryGroup フィールドから最も限定的な Cities フィールドまでを基に有効値一覧のデータセットを作成するので、作成するレポート パラメータは正しい依存関係の順序に従ったものとなります。有効な値の最後のデータセット (Cities) については、手動でレポート パラメータを生成し、対応するクエリ パラメータに関連付ける方法を学習します。

データセットをすべて作成したら、各レポート パラメータの既定のプロパティを変更し、有効な値と既定値に適切なデータセットとフィールドが含まれるようにします。

最後に、元のデータセット クエリを変更し、各レポート パラメータに対応するクエリ パラメータを含めます。レポートの実行時には、各カスケード型パラメータの値を順番に選択します。最初のパラメータで値を選択すると、そのパラメータ値に対して有効な値のみがその次のパラメータ一覧に表示されます。

手順

ResellersWorldwide レポートを開くには

  1. SQL Server Business Intelligence Development Studio で、前のレッスンで作成した AdvancedParametersTutorial レポート サーバー プロジェクトを開きます。

  2. ソリューション エクスプローラで、Resellers Worldwide レポートをダブルクリックします。レポートが [レイアウト] ビューに表示されます。

  3. [データ] タブをクリックします。

TerritoryGroup パラメータの有効値のデータセットを追加するには

  1. [データセット] の一覧で、[<新しいデータセット>] をクリックします。[データセット] ダイアログ ボックスが表示されます。

  2. [クエリ] タブで、[名前] ボックスに「ValidValuesforTerritoryGroup」と入力します。

  3. [データソース][Resellers] になっていることを確認します。

  4. [コマンドの種類][Text] になっていることを確認します。

  5. 次のクエリをクエリ ペインに貼り付けます。

    SELECT distinct [Group] as SalesTerritory
       FROM [AdventureWorks].[Sales].[SalesTerritory]
    
  6. [実行] (!) をクリックして、結果セットを表示します。列 SalesTerritory に、Europe、North America、Pacific の 3 つの行が表示されます。

CountryRegion パラメータの有効値のデータセットを追加するには

  1. [データセット] の一覧で、[<新しいデータセット>] をクリックします。[データセット] ダイアログ ボックスが表示されます。

  2. [クエリ] タブで、[名前] ボックスに「ValidValuesforCountryRegion」と入力します。

  3. [データソース][Resellers] になっていることを確認します。

  4. [コマンドの種類][Text] になっていることを確認します。

  5. 次のクエリをクエリ ペインに貼り付けます。

    SELECT Distinct CR.Name AS CountryRegion
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE (T.[Group] = (@TerritoryGroup))
    Order by CR.Name
    
  6. [実行] (!) をクリックします。[クエリ パラメータの定義] ダイアログ ボックスが表示されます。

  7. Pacific」と入力します。

    結果セットでは、列 CountryRegion に Australia という 1 行が表示されます。

    @TerritoryGroup というクエリ パラメータを定義すると、TerritoryGroup という新しいレポート パラメータが作成されます。

  8. (省略可) [データセット] の一覧の横にある [選択したデータセットの編集] ([…]) ボタンをクリックし、[パラメータ] タブをクリックします。クエリ パラメータ @TerritoryGroup がレポート パラメータ TerritoryGroup の値 (=Parameters!TerritoryGroup.Value) にバインドされていることを確認します。

StateProvince パラメータの有効値のデータセットを追加するには

  1. [データセット] の一覧で、[<新しいデータセット>] をクリックします。[データセット] ダイアログ ボックスが表示されます。

  2. [クエリ] タブで、[名前] ボックスに「ValidValuesforStateProvince」と入力します。

  3. [データソース][Resellers] になっていることを確認します。

  4. [コマンドの種類][Text] になっていることを確認します。

  5. 次のクエリをクエリ ペインに貼り付けます。

    SELECT Distinct SP.Name AS StateProvince
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
    WHERE (CR.Name = @CountryRegion)
    Order by SP.Name
    
  6. [実行] (!) をクリックして、結果セットを表示します。[クエリ パラメータの定義] ダイアログ ボックスが表示されます。

  7. [パラメータ値] ボックスに「Australia」と入力し、[OK] をクリックします。

    StateProvince 列に、New South Wales、Queensland、South Australia、Victoria の 4 つの行が表示されます。

City パラメータの有効値のデータセットを追加するには

  1. [データセット] の一覧で、[<新しいデータセット>] をクリックします。[データセット] ダイアログ ボックスが表示されます。

  2. [クエリ] タブで、[名前] ボックスに「ValidValuesforCity」と入力します。

  3. [データソース][Resellers] になっていることを確認します。

  4. [コマンドの種類][Text] になっていることを確認します。

  5. 次のクエリをクエリ ペインに貼り付けます。

    SELECT Distinct A.City 
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE (
        T.[Group] = (@TerritoryGroup) AND
        CR.[Name] = (@CountryRegion) AND
        SP.[Name] = (@StateProvince)
        )
    Order by A.City
    
  6. [実行] (!) をクリックして、結果セットを表示します。[クエリ パラメータの定義] ダイアログ ボックスが表示されます。

  7. 次の表を参照して、[パラメータ値] ボックスに各クエリ パラメータの値を入力します。

パラメータ名 パラメータ値

@TerritoryGroup

Pacific

@CountryRegion

Australia

@StateProvince

Victoria

  1. [OK] をクリックします。
    City 列に、Melbourne、Seaford、South Melbourne の 3 つの行が表示されます。

これで、4 つのカスケード型パラメータを作成できました。次は、クエリ パラメータに対応して作成されたレポート パラメータのプロパティを編集します。ここでは、適切なデータセットを使用して有効値セットを取得するように各パラメータを設定します。

TerritoryGroup レポート パラメータの有効値を設定するには

  1. [レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが開きます。このダイアログ ボックスの [パラメータ] ペインでは TerritoryGroup が選択されています。

  2. [データ型]String であることを確認します。

  3. [表示名] ボックスに「販売区域を選択してください : 」と入力します。

  4. チェック ボックスがすべてオフになっていることを確認します。

  5. [使用できる値] で、[クエリにより取得] を選択します。

  6. [データセット] の一覧で、[ValidValuesforTerritoryGroup] を選択します。

  7. [値フィールド] の一覧で、[SalesTerritory] を選択します。

  8. [ラベル フィールド] の一覧で、[SalesTerritory] を選択します。

  9. [既定値][クエリなし] を選択し、

  10. テキスト ボックスに「North America」と入力します。

    既定値は、特定の値またはデータセット フィールドの既定値に設定できます。このパラメータのデータ型は String なので、テキスト ボックスに値を直接入力できます。他のデータ型の場合は、等号 (=) で始まる式を入力します。

  11. [OK] をクリックします。

  12. (省略可) [プレビュー] タブをクリックします。TerritoryGroup パラメータが表示され、既定値 Europe と、ValidValuesforTerritoryGroup データセットで取得した SalesTerritory フィールドの有効な値が表示されます。

    レポート データは、このレッスンの最後に Resellers データセット クエリを変更するまで変わりません。

CountryRegion レポート パラメータの有効値を設定するには

  1. [レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが表示されます。

  2. [パラメータ] ペインで、[CountryRegion] を選択します。

  3. [データ型]String であることを確認します。

  4. [表示名] ボックスに「国または地域を選択してください : 」と入力します。

  5. チェック ボックスがすべてオフになっていることを確認します。

  6. [使用できる値] で、[クエリにより取得] を選択します。

  7. [データセット] の一覧で、[ValidValuesforCountryRegion] を選択します。

  8. [値フィールド] の一覧で、[CountryRegion] を選択します。

  9. [ラベル フィールド] の一覧で、[CountryRegion] を選択します。

  10. [既定値] で、[クエリにより取得] を選択します。

  11. [データセット] の一覧で、[ValidValuesforCountryRegion] を選択します。

  12. [値フィールド] の一覧で、[CountryRegion] を選択します。

  13. [OK] をクリックします。

  14. (省略可) [プレビュー] タブをクリックします。TerritoryGroup の値を選択し、CountryRegion パラメータの値を選択します。CountryRegion に表示される値が、選択した販売区域グループに有効な値であることを確認します。

StateProvince レポート パラメータの有効値を設定するには

  1. [レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが表示されます。

  2. [パラメータ] ペインで [StateProvince] を選択します。

  3. [データ型]String であることを確認します。

  4. [表示名] ボックスに「都道府県を選択してください : 」と入力します。

  5. チェック ボックスがすべてオフになっていることを確認します。

  6. [使用できる値] で、[クエリにより取得] を選択します。

  7. [データセット] の一覧で、[ValidValuesforStateProvince] を選択します。

  8. [値フィールド] の一覧で、[StateProvince] を選択します。

  9. [ラベル フィールド] の一覧で、[StateProvince] を選択します。

  10. [既定値] で、[クエリにより取得] を選択します。

  11. [データセット] の一覧で、[ValidValuesforStateProvince] を選択します。

  12. [値フィールド] の一覧で、[StateProvince] を選択します。

  13. [OK] をクリックします。

  14. (省略可) [プレビュー] タブをクリックします。TerritoryGroup の値を選択し、CountryRegion パラメータの値を選択して、StateProvince パラメータの値を選択します。StateProvince に表示される値が、選択した TerritoryGroupCountryRegion に有効な値であることを確認します。

City レポート パラメータを作成し、そのプロパティを設定するには

  1. [レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが表示されます。

  2. [パラメータ] ペインに、City という名前のレポート パラメータは表示されません。

    レポート パラメータは、パラメータを含むクエリをデータセットに対して定義したときに自動的に作成されますが、これまで作成したデータセット クエリはいずれも @City クエリ パラメータを含んでいません。City という名前のレポート パラメータを作成しておくこともできます。@City クエリ パラメータを含むクエリを定義すると、このクエリ パラメータの名前からクエリ パラメータ識別子 "@" を除いた名前のレポート パラメータがあれば、クエリ パラメータとレポート パラメータは自動的にバインドされます。

  3. [追加] をクリックします。レポート パラメータが作成され、既定のプロパティが設定されます。

  4. [プロパティ][名前] ボックスに、「City」と入力します。

  5. [データ型]String であることを確認します。

  6. [表示名] ボックスに「都市を選択してください : 」と入力します。

  7. チェック ボックスがすべてオフになっていることを確認します。

  8. [使用できる値] で、[クエリにより取得] を選択します。

  9. [データセット] の一覧で、[ValidValuesforCity] を選択します。

  10. [値フィールド] の一覧で、[City] を選択します。

  11. [ラベル フィールド] の一覧で、[City] を選択します。

  12. [既定値] セクションで [クエリにより取得] を選択します。

  13. [データセット] の一覧で、[ValidValuesforCity] を選択します。

  14. [値フィールド] の一覧で、[City] を選択します。

  15. [OK] をクリックします。

  16. (省略可) [プレビュー] タブをクリックし、TerritoryGroupCountryRegionStateProvince の各パラメータに値を選択します。City に表示されるパラメータ値が、選択した他の値に対して有効であることを確認します。

ここまでで、カスケード型パラメータの値を作成できました。次は、これらの値をテーブル データ領域に対するデータセット クエリに含める必要があります。こうすると、選択したパラメータを含むクエリによってテーブル データが取得されるようになります。

reseller salesorders データセットのクエリを変更して、既存のクエリ パラメータを含めるには

  1. [データ] ビューで、[データセット] の一覧から [Resellers] を選択します。クエリ ペインに、前のレッスンで作成したクエリ文字列が表示されます。

  2. クエリ ペインの文字列を次のクエリに置き換えます。

    SELECT S.CustomerID, SO.SalesOrderNumber, SO.OrderDate, SO.TotalDue,
        S.Name AS Store, A.City, SP.Name AS State, CR.Name
        AS CountryRegion, 
        SC.ContactID As StoreContactID, T.[Group] As TerritoryGroup
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.SalesOrderHeader AS SO ON 
        S.CustomerID = SO.CustomerID
        JOIN Sales.StoreContact SC ON  S.CustomerID = SC.CustomerID
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE(
        (T.[Group] = (@TerritoryGroup))
        AND
        (CR.Name = (@CountryRegion))
         AND
         (SP.Name = (@StateProvince))
        AND
        (A.City = (@City))
       )
    ORDER BY S.CustomerID 
    

    これで、レポート パラメータの値を使用するクエリ パラメータがクエリに追加されました。

  3. [実行] (!) をクリックして、結果セットを表示します。[クエリ パラメータの定義] ダイアログ ボックスが表示されます。

  4. 次の表を参照して、[パラメータ値] 列に各クエリ パラメータの値を入力します。

パラメータ名 パラメータ値

@TerritoryGroup

Pacific

@CountryRegion

Australia

@StateProvince

Victoria

@City

Melbourne

  1. [OK] をクリックします。
    結果セットには、メルボルンにある販売代理店の販売データが表示されます。
    Resellers データセット用のクエリ定義にクエリ パラメータを追加すると、そのクエリ パラメータの値には対応するレポート パラメータの値が自動的に設定されます。
  2. (省略可) [データセット] の一覧の横にある [選択したデータセットの編集] ([…]) ボタンをクリックし、[パラメータ] タブをクリックします。クエリ パラメータ @TerritoryGroup@CountryRegion@StateProvince@City が、それぞれ対応するレポート パラメータの値にバインドされていることを確認します。

NoRows の値を設定するには

  1. [レイアウト] タブをクリックして [レイアウト] ビューに切り替えます。

  2. テーブル内をクリックして、テーブル ハンドルを表示します。テーブルのコーナー ハンドルをクリックしてテーブルを選択します。テーブルの外枠がグレー表示になります。

  3. [プロパティ] ウィンドウで [NoRows] プロパティを探し、横にあるテキスト ボックスに次のテキストを貼り付けます。

    この地域に販売代理店はありません

メイン レポート タイトルとパラメータ値のテキスト ボックスを作成するには

  1. [レイアウト] タブをクリックして [レイアウト] ビューに切り替えます。

  2. レポート処理のタイムスタンプを含むテキスト ボックスを右クリックし、[式] をクリックします。

  3. [値] ボックスの横にある [Fx] (式) ボタンをクリックします。[式の編集] ダイアログ ボックスが表示されるので、タイムスタンプの式を次の式に置き換えます。

    ="Report Processed Date: " & 
      Globals!ExecutionTime.ToShortDateString() & " " & 
      Globals!ExecutionTime.ToShortTimeString() & vbCrLf & 
      "Sales Territory for: " 
    & Parameters!TerritoryGroup.Value & ", " 
    & Parameters!CountryRegion.Value & ", "
    & Parameters!StateProvince.Value & ", "
    & Parameters!City.Value
    
  4. [プレビュー] をクリックし、さまざまなパラメータ値を選択してみます。パラメータを順に選択し、前のパラメータで選択した値に対して可能な値だけが、次のパラメータの値一覧に表示されることを確認してください。新しいパラメータを選択しても、レポート データは変わりません。新しく選択したパラメータでレポートを再実行するには、[レポートの表示] をクリックします。

次の手順

ここでは、カスケード型パラメータを使って、販売代理店の販売データを地域ごとに表示するレポートを作成しました。次のレッスンでは、テーブルの詳細行とテーブル グループのソート方法を変更するパラメータの使用について学習します。「レッスン 3 : パラメータを使った、初期の並べ替え方法と対話型の並べ替え方法の変更」を参照してください。

参照

その他の技術情報

Reporting Services でのパラメータを使用した作業
パラメータを使用したレポート データの制御

ヘルプおよび情報

SQL Server 2005 の参考資料の入手