レッスン 3: 選択可能な値一覧が割り当てられた単一値パラメータの追加
新規 : 2006 年 7 月 17 日
選択可能な値 (有効な値) を使用すると、レポート ユーザーは、レポート パラメータの値を一覧から選択できるようになります。レポート作成者は、データ ソースから値セットを取得するためのクエリを設計し、そのクエリから有効な値を提示するか、または値セットを事前定義しておくことができます。レポート処理時にデータセット クエリを実行して可能な値のセットを取得し、その値をバインドする方法では、確実にデータベースに存在する値だけを一覧の選択肢として提示できます。
このレッスンでは、Sales Orders レポートを修正して、AdventureWorks データベースから取得した販売担当者の名前を一覧表示します。また、テーブルのプロパティを設定し、選択したパラメータ値の結果セットに行がない場合はメッセージを表示するようにします。名前を選択してレポートを表示すると、レポートにはその販売担当員のみの販売情報が表示されます。
Sales Orders レポートを開くには
SQL Server Business Intelligence Development Studio で、前のレッスンで作成した Tutorial Report Server プロジェクトを開きます。
ソリューション エクスプローラで、Sales Orders レポートをダブルクリックします。レポートが [レイアウト] ビューに表示されます。
[データ] タブをクリックします。
クエリ パラメータを AdventureWorks データセット クエリに追加するには
[データ] タブの [データセット] の一覧で、[AdventureWorks] を選択します。
新しいクエリ パラメータ @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) )
メモ : クエリ パラメータを囲むかっこは、クエリの構文上重要な部分です。 [実行] (!) ボタンをクリックします。クエリ パラメータの入力画面が表示されたら、次の表にある値を入力します。
@StartDate
20010101
@EndDate
20030101
@SalesPersonID
286
[OK] をクリックします。SalesPersonID = 286 の販売担当者 Ranjit Varkey Chudakatil の結果セットが表示されます。
(省略可) クエリ パラメータ @SalesPersonID の値が "
=Parameters!SalesPersonID.Value
" であることを確認します。[選択したデータセットの編集] ([…]) ボタンをクリックして、[パラメータ] タブをクリックします。(省略可) レポート パラメータ SalesPersonID が自動的に作成されていることを確認します。[レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが表示されます。[パラメータ] ペインに "SalesPersonID" が表示されていることを確認します。このトピックの後半の手順で、このパラメータを編集します。
次の手順では、さらに別のデータセットを作成して、レポート パラメータ SalesPersonID の選択可能な値一覧に値を取り込みます。
選択可能な値を提供する SalesPersons データセットを作成するには
[データセット] の一覧で、[<新しいデータセット>] を選択します。[データセット] ダイアログ ボックスが表示されます。
新しいデータセットの名前を指定します。[名前] フィールドに、「SalesPersons」と入力します。このデータセットを使用して、有効な値一覧に値を取り込みます。
次の 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
[実行] (!) ボタンをクリックします。SalesPersonID 列、FirstName 列、および LastName 列が結果セットに表示され、またデータセット SalesPersons のフィールドとしても表示されます。
SELECT ステートメントに追加列として「
LastName + N' ' + FirstName as Name
」を含める方法のように、集計フィールドをクエリに追加する方法もありますが、Reporting Services には既存のデータセット フィールドから新しい集計フィールドを作成する機能が用意されています。この機能は、クエリで決まった列のセットを取得するストアド プロシージャを実行する場合に使用できます。次の手順では、データセット用の新しいフィールドを作成し、そのフィールドに 2 つの既存のフィールドを結合します。
データセット用の新しい集計フィールドを追加するには
[データセット] ウィンドウで、[SalesPersons] データセットを右クリックし、[追加] をクリックします。
[データセット] ウィンドウが表示されていない場合は、Alt キーと Ctrl キーを押しながら D キーを押します。
[名前] ボックスに「Name」と入力します。
[集計フィールド] オプションを選択します。
テキスト ボックス内に次の式を貼り付けます。
=Fields!LastName.Value + ", " + Fields!FirstName.Value
[OK] をクリックします。
データ ツール バーの [フィールドの更新] をクリックします。データセット SalesPersons 用のフィールド コレクション内に、新しいフィールド Name が表示されます。
次の手順では、テーブルのデータ領域のプロパティ NoRows を設定します。このプロパティのテキストは、テーブルに関連するデータセット用に取得したデータに結果が含まれていないときに表示されます。
行がないときのメッセージをテーブルに追加するには
[レイアウト] タブをクリックして [レイアウト] ビューに切り替えます。
[表示] メニューの [プロパティ ウィンドウ] をクリックします。
[プロパティ] ウィンドウのオブジェクト一覧で、対象テーブルを選択します。テーブルの既定の名前は table1 です。
[プロパティ] ウィンドウで、[NoRows] までスクロールします。
[NoRows] の隣にあるテキスト ボックス内をクリックして、次のテキストを入力します。
このパラメータの組み合わせに対する結果はありません。
このメッセージは、特定のクエリ パラメータに対する結果セットに行がなかった場合に表示されます。
(省略可) [プレビュー] をクリックします。SalesPersonID パラメータに「1」と入力します。テーブルのデータ領域に NoRows のメッセージが表示されます。
次の手順では、自動的に生成されたレポート パラメータ SalesPersonID を編集します。レポートのプロパティを設定して、可能な値の一覧内にデータベース識別子ではなく販売担当者の名前を表示します。
レポート パラメータ SalesPersonID のプロパティを設定するには
[レポート] メニューの [レポート パラメータ] をクリックします。[レポート パラメータ] ダイアログ ボックスが表示されます。[パラメータ] ペインに SalesPersonID パラメータが表示されます。
[データ型] の一覧で、[Integer] を選択します。
[表示名] ボックスに「販売担当者を選択してください : 」と入力します。
[使用できる値] で、[クエリにより取得] を選択します。
[データセット] の一覧で、[SalesPersons] を選択します。
[値フィールド] で [SalesPersonID] を選択します。
[ラベル フィールド] で [Name] を選択します。
これで、SalesPersonID パラメータの有効な値の一覧に、SalesPersonID ではなく各販売担当員の名前が表示されるようになりました。
[既定値] で、[クエリにより取得] を選択します。
[データセット] の一覧で、[SalesPersons] を選択します。
[値フィールド] で [SalesPersonID] を選択します。
[OK] をクリックします。
[プレビュー] タブをクリックします。レポートに、販売担当者名の一覧が表示されます。
次の手順
ここでは、単一値をとるパラメータを既存のレポートに追加しました。次は、DayoftheWeek パラメータと SalesOrderID パラメータを修正して複数値をとるようにします。「レッスン 4 : "すべて選択" を含む複数値をとるパラメータの追加」を参照してください。
参照
その他の技術情報
Reporting Services でのパラメータを使用した作業
単一値および複数値パラメータの使用
式におけるパラメータの使用