次の方法で共有


レッスン 3: 複数の値を一覧で選択するためのパラメータの追加 (レポート ビルダ 2.0)

このレッスンでは、複数の値を受け取るようにパラメータを変更する方法について説明します。これらは複数値パラメータと呼ばれます。既定では、パラメータは単一の値を受け取ります。前のレッスンで作成した BusinessPersonID と DayoftheWeek も、単一の値を受け取るパラメータです。複数の値を受け取るようにパラメータを変更するには、そのパラメータがクエリ パラメータから自動的に作成されたものか (BusinessPersonID の場合)、レポート データ ペインを使用して手動で作成されたものか (DayoftheWeek の場合) を把握している必要があります。

複数の値を受け取るようにレポート パラメータを変更するには、レポート パラメータのプロパティを 1 つ設定するだけです。レポート パラメータがクエリ パラメータに基づいている場合は、クエリを変更する必要もあります。パラメータをフィルタで使用する場合は、単一の値ではなく値のセットを指定するためにフィルタ演算子を変更する必要があります。

既存のデータセットを置き換えるには

  1. レポート データ ペインで DataSet1 データセットを右クリックし、[クエリ] をクリックします。

    テキスト ベースのクエリ デザイナが表示されます。

  2. テキスト ボックスのテキストを次のクエリで置き換えます。

    SELECT
      SH.OrderDate
      ,DATENAME(weekday, SH.OrderDate) as Weekday
      ,SH.SalesOrderNumber
      ,SD.OrderQty
      ,SD.LineTotal
      ,P.Name AS [Product]
      ,PS.Name AS [Subcategory]
    FROM Sales.SalesPerson SP 
      INNER JOIN Sales.SalesOrderHeader AS SH 
          ON SP.BusinessEntityID = SH.SalesPersonID
      INNER JOIN Sales.SalesOrderDetail AS SD 
         ON SH.SalesOrderID = SD.SalesOrderID
      INNER JOIN Production.Product AS P
       ON SD.ProductID = P.ProductID
      INNER JOIN Production.ProductSubcategory AS PS
       ON PS.ProductSubcategoryID = P.ProductSubcategoryID
      INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PS.ProductCategoryID
    WHERE PC.Name = 'Clothing' 
       AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
          AND SH.SalesPersonID IN (@BusinessPersonID)
    

    これは、次のように条件が等式 (=) から包含 (IN) に変更された他は、以前のクエリと同じです。

    AND SH.SalesPersonID IN (@BusinessPersonID)
    
  3. [実行] (!) ボタンをクリックします。クエリ パラメータの入力画面が表示されたら、次の表にある値を入力します。クエリ デザイナでは、複数値をとるパラメータを評価することはできません。

    @StartDate

    20010101

    @EndDate

    20030101

    @BusinessPersonID

    290

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

    BusinessPersonID = 290 の販売担当者 Ranjit Varkey Chudukatil の結果セットが表示されます。

BusinessPersonID レポート パラメータを複数値をとるように編集するには

  1. レポート データ ペインで、[パラメータ] を展開し、BusinessPersonID パラメータをダブルクリックします。

  2. [複数の値を許可] オプションを選択します。

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

  4. [プレビュー] をクリックします。レポートは自動的に実行されます。BusinessPersonID ボックスの一覧にすべての営業担当者名が表示されます。

注意注意

複数値をとるパラメータの可能な値の一覧には、先頭に [(すべて選択)] という値が表示されます。すべての値を選択または選択解除するにはこのチェック ボックスを使用します。

レポート パラメータの有効な値として新しいデータセットを追加するには

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

  2. レポート データ ペイン ツール バーで、[新規作成] をクリックし、[データセット] をクリックします。[データセットのプロパティ] ダイアログ ボックスが表示されます。

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

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

  5. [クエリ デザイナ] をクリックし、[テキストとして編集] をクリックします。

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

    SET DATEFIRST 1;
    SELECT DISTINCT 
       DATEPART(weekday, S.OrderDate) as WeekdayNumber,
       DATENAME(weekday, S.OrderDate) as Weekday
       FROM Sales.SalesOrderHeader S
    Order by WeekdayNumber
    
  7. クエリ デザイナのツール バーの [実行]([!]) ボタンをクリックします。結果セットに番号と曜日が表示されます。

  8. [OK] を 2 度クリックして [データベースのプロパティ] ダイアログ ボックスを閉じます。

    WeekDaysfromQuery データセットがレポート データ ペインに表示されます。

複数値、既定値、および有効な値をとるようにパラメータを編集するには

  1. レポート データ ペインで、[パラメータ] を展開し、DayoftheWeek をダブルクリックします。[レポート パラメータのプロパティ] ダイアログ ボックスが表示されます。

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

  3. [使用できる値] をクリックします。

  4. [クエリから値を取得] を選択します。

  5. [データセット] ボックスの一覧から、[WeekDaysfromQuery] を選択します。

  6. [値フィールド] ボックスの一覧から [WeekdayNumber] を選択します。

  7. [ラベル フィールド] ボックスの一覧から [Weekday] を選択します。

ユーザーがパラメータ値を選択するときにはラベルで選択しますが、レポートでは値が使用されます。このことは、既定値やフィルタを設定するときに重要になります。WeekdayNumber フィールドの値は整数値である必要があります。

  1. [既定値] をクリックします。

  2. [値の指定] を選択します。

  3. [追加] をクリックします。

  4. [値] で、Friday を 6 に置き換えます。値は、曜日の番号と曜日の名前の両方を提供するデータセットから取得されるため、既定値では曜日の番号を指定する必要があります。値 6 は "土曜日" を表します。

  5. [追加] をクリックします。

  6. [値] に「7」と入力します。この値は "日曜日" を表します。

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

    DayoftheWeek パラメータが複数値をとるようになったため、レポートをプレビューする前に、表のフィルタ式を変更し、IN 演算子を使用するよう指定する必要があります。

複数値パラメータを使用するようにフィルタを変更するには

  1. レポート データ ペインで DataSet1 を右クリックし、[データセットのプロパティ] をクリックします。

  2. [フィルタ] をクリックします。DayoftheWeek には、既にレッスン 1 で追加したフィルタがあります。

  3. [式] ボックスの一覧で、値が [Weekday] となっていることを確認します。

  4. [演算子] を、等号 (=) から [In] に変更します。

  5. [値] に「[@DayoftheWeek.Label]」と入力します。

    曜日の名前が曜日の数値フィールドではなくラベル フィールドと比較されるようにパラメータ ラベルを指定します。

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

    これで表のフィルタは、Weekday フィールドの値と DayoftheWeek パラメータのラベルが In 演算子を使って比較されるようになりました。レポート パラメータで複数の値を選択すると、フィルタ処理により表の各行が評価され、Weekday フィールドの値が DayoftheWeek コレクション内に存在するかどうかが確認されます。

  7. [実行] をクリックして、レポートをプレビューします。レポートに、DaysoftheWeek レポート パラメータが既定値 "土曜日" および "日曜日" (指定した既定値のラベル) と共に表示されます。ドロップダウン リストを使って DayoftheWeek パラメータの複数の値を選択します。

次の手順

ここでは、レポート パラメータのプロパティを変更し、単一値ではなく複数値をとるようにしました。また、クエリ、フィルタ、式に変更を加え、複数値をとるパラメータのコレクションを使用するようにしました。複数値をとるパラメータを式の中で使用する方法がわかったところで、次に、前のパラメータで選択された値に基づいて値が決まる条件依存パラメータの作成方法を学習します。「レッスン 4: カスケード型パラメータの追加 (レポート ビルダ 2.0)」を参照してください。