次の方法で共有


レッスン 3: 選択可能な値一覧が割り当てられた単一値パラメータの追加

新規 : 2006 年 7 月 17 日

選択可能な値 (有効な値) を使用すると、レポート ユーザーは、レポート パラメータの値を一覧から選択できるようになります。レポート作成者は、データ ソースから値セットを取得するためのクエリを設計し、そのクエリから有効な値を提示するか、または値セットを事前定義しておくことができます。レポート処理時にデータセット クエリを実行して可能な値のセットを取得し、その値をバインドする方法では、確実にデータベースに存在する値だけを一覧の選択肢として提示できます。

このレッスンでは、Sales Orders レポートを修正して、AdventureWorks データベースから取得した販売担当者の名前を一覧表示します。また、テーブルのプロパティを設定し、選択したパラメータ値の結果セットに行がない場合はメッセージを表示するようにします。名前を選択してレポートを表示すると、レポートにはその販売担当員のみの販売情報が表示されます。

Sales Orders レポートを開くには

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

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

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

クエリ パラメータを AdventureWorks データセット クエリに追加するには

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

  2. 新しいクエリ パラメータ @SalesPersonID をクエリに追加します。クエリの WHERE 句内に、「AND S.SalesPersonID = (@SalesPersonID)」という比較を追加します。

    既存のクエリを次の文字列で置き換えます。

    SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday,
        S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName, 
        C.ContactID
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    WHERE
        (
        S.OrderDate BETWEEN (@StartDate) AND (@EndDate) 
        AND
        S.SalesPersonID = (@SalesPersonID)
        )
    
    Aa337400.note(ja-jp,SQL.90).gifメモ :
    クエリ パラメータを囲むかっこは、クエリの構文上重要な部分です。
  3. [実行] (!) ボタンをクリックします。クエリ パラメータの入力画面が表示されたら、次の表にある値を入力します。

    @StartDate

    20010101

    @EndDate

    20030101

    @SalesPersonID

    286

  4. [OK] をクリックします。SalesPersonID = 286 の販売担当者 Ranjit Varkey Chudakatil の結果セットが表示されます。

  5. (省略可) クエリ パラメータ @SalesPersonID の値が "=Parameters!SalesPersonID.Value" であることを確認します。[選択したデータセットの編集] ([…]) ボタンをクリックして、[パラメータ] タブをクリックします。

  6. (省略可) レポート パラメータ SalesPersonID が自動的に作成されていることを確認します。[レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが表示されます。[パラメータ] ペインに "SalesPersonID" が表示されていることを確認します。このトピックの後半の手順で、このパラメータを編集します。

    次の手順では、さらに別のデータセットを作成して、レポート パラメータ SalesPersonID の選択可能な値一覧に値を取り込みます。

選択可能な値を提供する SalesPersons データセットを作成するには

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

  2. 新しいデータセットの名前を指定します。[名前] フィールドに、「SalesPersons」と入力します。このデータセットを使用して、有効な値一覧に値を取り込みます。

  3. 次の Transact-SQL クエリをクエリ ペインに貼り付けます。

    SELECT SP.SalesPersonID, C.FirstName, C.LastName
    FROM   Sales.SalesPerson AS SP INNER JOIN
         HumanResources.Employee AS E ON E.EmployeeID = SP.SalesPersonID INNER JOIN
         Person.Contact AS C ON C.ContactID = E.ContactID
    
  4. [実行] (!) ボタンをクリックします。SalesPersonID 列、FirstName 列、および LastName 列が結果セットに表示され、またデータセット SalesPersons のフィールドとしても表示されます。

    SELECT ステートメントに追加列として「LastName + N' ' + FirstName as Name」を含める方法のように、集計フィールドをクエリに追加する方法もありますが、Reporting Services には既存のデータセット フィールドから新しい集計フィールドを作成する機能が用意されています。この機能は、クエリで決まった列のセットを取得するストアド プロシージャを実行する場合に使用できます。次の手順では、データセット用の新しいフィールドを作成し、そのフィールドに 2 つの既存のフィールドを結合します。

データセット用の新しい集計フィールドを追加するには

  1. [データセット] ウィンドウで、[SalesPersons] データセットを右クリックし、[追加] をクリックします。

    [データセット] ウィンドウが表示されていない場合は、Alt キーと Ctrl キーを押しながら D キーを押します。

  2. [名前] ボックスに「Name」と入力します。

  3. [集計フィールド] オプションを選択します。

  4. テキスト ボックス内に次の式を貼り付けます。

    =Fields!LastName.Value + ", " + Fields!FirstName.Value
    
  5. [OK] をクリックします。

    データ ツール バーの [フィールドの更新] をクリックします。データセット SalesPersons 用のフィールド コレクション内に、新しいフィールド Name が表示されます。

    次の手順では、テーブルのデータ領域のプロパティ NoRows を設定します。このプロパティのテキストは、テーブルに関連するデータセット用に取得したデータに結果が含まれていないときに表示されます。

行がないときのメッセージをテーブルに追加するには

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

  2. [表示] メニューの [プロパティ ウィンドウ] をクリックします。

  3. [プロパティ] ウィンドウのオブジェクト一覧で、対象テーブルを選択します。テーブルの既定の名前は table1 です。

  4. [プロパティ] ウィンドウで、[NoRows] までスクロールします。

  5. [NoRows] の隣にあるテキスト ボックス内をクリックして、次のテキストを入力します。

    このパラメータの組み合わせに対する結果はありません。

    このメッセージは、特定のクエリ パラメータに対する結果セットに行がなかった場合に表示されます。

  6. (省略可) [プレビュー] をクリックします。SalesPersonID パラメータに「1」と入力します。テーブルのデータ領域に NoRows のメッセージが表示されます。

    次の手順では、自動的に生成されたレポート パラメータ SalesPersonID を編集します。レポートのプロパティを設定して、可能な値の一覧内にデータベース識別子ではなく販売担当者の名前を表示します。

レポート パラメータ SalesPersonID のプロパティを設定するには

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

  2. [データ型] の一覧で、[Integer] を選択します。

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

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

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

  6. [値フィールド][SalesPersonID] を選択します。

  7. [ラベル フィールド][Name] を選択します。

    これで、SalesPersonID パラメータの有効な値の一覧に、SalesPersonID ではなく各販売担当員の名前が表示されるようになりました。

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

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

  10. [値フィールド][SalesPersonID] を選択します。

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

  12. [プレビュー] タブをクリックします。レポートに、販売担当者名の一覧が表示されます。

次の手順

ここでは、単一値をとるパラメータを既存のレポートに追加しました。次は、DayoftheWeek パラメータと SalesOrderID パラメータを修正して複数値をとるようにします。「レッスン 4 : "すべて選択" を含む複数値をとるパラメータの追加」を参照してください。

参照

その他の技術情報

Reporting Services でのパラメータを使用した作業
単一値および複数値パラメータの使用
式におけるパラメータの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手