レッスン 3: 複数の値を一覧で選択するためのパラメーターの追加 (SSRS)
このレッスンでは、BusinessPersonID パラメーターと DayoftheWeek パラメーターを変更し、単一値ではなく複数値をとるようにします。複数値をとるパラメーターを使用すると、レポート パラメーターに複数の値を選択できるようになります。ここではレポート パラメーター BusinessPersonID を変更するために、AdventureWorks2008R22008 データセットに対するクエリを変更し、@BusinessPersonID を単一値に対してではなく選択された値集合の中で評価されるように、そのレポート パラメーターの複数値プロパティを設定します。さらに、DayoftheWeek レポート パラメーターを変更するため、複数値をとるプロパティを確認し、新しいデータセットから可能な値を複数取得して設定します。また、既定値を定義する式を指定します。さらに、DayoftheWeek パラメーターに可能な値を提供する新しいデータセットを作成します。最後に、レポートにテキスト ボックスを追加して、DayoftheWeek で選択したパラメーターの値が表示されるようにします。
既存のデータセットを置き換えるには
レポート データ ペインで AdventureWorksDataset というデータセットを右クリックし、[データセットのプロパティ] をクリックします。
[データ ソース] で AdventureWorks_Ref が選択されていることを確認します。
[クエリの種類] で [テキスト] が選択されていることを確認します。
[クエリ デザイナー] をクリックして、クエリ デザイナーを開きます。
テキスト ボックスのテキストを次のクエリで置き換えます。
SELECT soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND soh.SalesPersonID IN (@BusinessPersonID)
これは、次のように条件が等式から包含に変更された他は、以前のクエリと同じです。
AND soh.SalesPersonID IN (@BusinessPersonID)
[実行] (!) ボタンをクリックします。クエリ パラメーターの入力画面が表示されたら、次の表にある値を入力します。クエリ デザイナーでは、複数値をとるパラメーターを評価することはできません。
@StartDate
1/1/2001
@EndDate
1/1/2003
@BusinessPersonID
290
[OK] をクリックします。
BusinessPersonID = 290 の販売担当者 Ranjit Varkey Chudakatil の結果セットが表示されます。
BusinessPersonID レポート パラメーターを複数値をとるように編集するには
レポート データ ペインで、[パラメーター] を展開し、BusinessPersonID パラメーターをダブルクリックします。
[複数の値を許可] を選択します。
[OK] をクリックします。
[プレビュー] をクリックします。レポートは自動的に実行されます。BusinessPersonID ボックスの一覧にすべての営業担当者名が表示されます。
注 |
---|
複数値をとるパラメーターの使用できる値の一覧には、先頭に [(すべて選択)] という値が表示されます。すべての値を選択または選択解除するにはこのチェック ボックスを使用します。既定では、すべての値が選択されています。 |
レポート パラメーターの有効な値として新しいデータセットを追加するには
デザイン ビューに切り替えます。
レポート データ ペインで AdventureWorks_Ref を右クリックし、[データセットの追加] をクリックします。[データセットのプロパティ] ダイアログ ボックスが表示されます。
"名前" フィールドに、「WeekDaysfromQuery」と入力します。
[クエリの種類] で [テキスト] が選択されていることを確認します。
[クエリ] で、次のクエリ文字列を入力するか貼り付けます。
SET DATEFIRST 1; SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekDayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader S Order by WeekDayNumber
クエリ デザイナーのツール バーの [実行]([!]) ボタンをクリックします。結果セットに番号と曜日が表示されます。
[OK] を 2 度クリックして [データベースのプロパティ] ダイアログ ボックスを閉じます。
WeekDaysfromQuery データセットがレポート データ ペインに表示されます。
複数値、既定値、および有効な値をとるようにパラメーターを編集するには
レポート データ ペインで、[パラメーター] を展開し、DayoftheWeek をダブルクリックします。[レポート パラメーターのプロパティ] ダイアログ ボックスが表示されます。
[複数の値を許可] を選択します。
[使用できる値] をクリックします。
[クエリから値を取得] を選択します。
[データセット] ボックスの一覧から、[WeekDaysfromQuery] を選択します。
[値フィールド] ボックスの一覧から [Weekday] を選択します。
[ラベル フィールド] ボックスの一覧から [Weekday] を選択します。
[既定値] をクリックします。
[値の指定] を選択します。
(省略可能) 既存の値 "金曜日" を選択し、[削除] をクリックします。
[追加] をクリックします。
[値] の中で「土曜日」と入力します。
[追加] をクリックします。
[値] の中で「日曜日」と入力します。
[OK] をクリックします。
DayoftheWeek パラメーターが複数値をとるようになったため、レポートをプレビューする前に、表のデータ領域に対して定義されているフィルター式を変更し、IN 演算子を使用するよう指定する必要があります。
複数値パラメーターを使用するようにフィルターを変更するには
[デザイン] ビューで、表を右クリックし、[Tablix のプロパティ] をクリックします。[Tablix のプロパティ] ダイアログ ボックスが表示されます。
[フィルター] をクリックします。DaysoftheWeek には、既にレッスン 1 で追加したフィルターがあります。
[式] ボックスの一覧で、値が [Weekday] となっていることを確認します。
[テキスト] が選択されていることを確認します。
[演算子] を、等号 (=) から [In] 演算子に変更します。
[値] ボックスの一覧で、値が [@DayoftheWeek] となっていることを確認します。
[OK] をクリックします。
これでテーブルのフィルターは、Weekday フィールドの値と DayoftheWeek パラメーターの値が In 演算子を使って比較されるように設定されました。レポート パラメーターで複数の値を選択すると、フィルター処理によりテーブルの各行が評価され、Weekday フィールドの値が DayoftheWeek コレクション内に存在するかどうかが確認されます。
[プレビュー] をクリックします。レポートに、DaysoftheWeek レポート パラメーターが既定値の "土曜日" および "日曜日" と共に表示されます。ドロップダウン リストを使って DayoftheWeek パラメーターの複数の値を選択します。
次の手順
ここでは、レポート パラメーターのプロパティを変更し、単一値ではなく複数値をとるようにしました。また、クエリ、フィルター、式に変更を加え、複数値をとるパラメーターのコレクションを使用するようにしました。複数値をとるパラメーターを式の中で使用する方法がわかったところで、次に、前のパラメーターで選択された値に基づいて値が決まる条件依存パラメーターの作成方法を学習します。「レッスン 4: カスケード型パラメーターの追加 (SSRS)」を参照してください。