レッスン 2: 使用可能な値の一覧を作成するパラメーターの追加 (SSRS)
使用可能な値 (有効な値) を使用すると、ユーザーは、レポート パラメーターの値を一覧から選択できるようになります。レポート作成者は、データ ソースから特定の値セットを取得するためのクエリを作成して、そのクエリから有効な値を提示することも、値セットを事前定義しておくこともできます。レポート処理時にデータセット クエリを実行して可能な値のセットを取得し、その値をバインドする方法では、確実にデータベースに存在する値だけを一覧の選択肢として提示できます。
このレッスンでは、販売注文レポートを修正し、SQL Server AdventureWorks2008R2 データベースから取得した販売担当者の名前がドロップダウン リストに表示されるようにします。また、選択したパラメーター値の結果セットに行がない場合はメッセージが表示されるように表のプロパティを設定します。名前を選択してレポートを表示すると、レポートにはその販売担当者のみの販売情報が表示されます。
既存のデータセットを置き換えるには
レポート データ ペインで 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 = (@BusinessPersonID)
これは、結果セットに一人の販売担当者のみが表示されるように制限する次の条件が追加されている他は、以前のクエリと同じです。
AND soh.SalesPersonID = (@BusinessPersonID)
[実行] (!) ボタンをクリックします。クエリ パラメーターの入力画面が表示されたら、次の表にある値を入力します。
@StartDate
1/31/2001
@EndDate
1/31/2003
@BusinessPersonID
290
[OK] をクリックします。 SalesPersonID = 290 の販売担当者 Ranjit Varkey Chudukatil の結果セットが表示されます。
レポート パラメーターの有効な値の一覧を表示するには
レポート データ ペインで、[新規作成] をクリックし、[データセット] をクリックします。[データセットのプロパティ] ダイアログ ボックスが表示されます。
"名前" フィールドに、「BusinessPersons」と入力します。SalesPersonID レポート パラメーターの有効な値の一覧にはこのデータセットが使用されます。
データ ソースが AdventureWorks_Ref であることを確認します。
次の Transact-SQL クエリをクエリ ペインに貼り付けます。
SELECT SP.BusinessEntityID, C.FirstName, C.LastName FROM Sales.SalesPerson AS SP INNER JOIN HumanResources.Employee AS E ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityID ORDER BY SP.BusinessEntityID
[OK] を 2 回クリックします。BusinessPersons データセットのフィールド一覧が作成されます。BusinessPersonID レポート パラメーターの有効な値の一覧にはこのデータセットが使用されます。
BusinessPersons データセットには、FirstName と LastName というフィールドがあります。次に、これらのフィールドを連結して "名前" という 1 つのフィールドにします。
レポート データ ペインで計算フィールドを定義するには
レポート データ ペイン ツール バーで BusinessPersons データセットを右クリックし、[計算フィールドの追加] をクリックします。[データセットのプロパティ] ダイアログ ボックスの [フィールド] ページで、新しい行が追加されたグリッドが表示されます。
最後の [フィールド名] ボックスで、「名前」と入力します。
[フィールド ソース] ボックスに、次の式を貼り付けます。
=Fields!LastName.Value & ", " & Fields!FirstName.Value
[OK] をクリックします。
レポート データ ペインの BusinessPersons データセットのフィールド コレクションに、新しい "名前" フィールドが表示されます。
レポート パラメーターに使用可能な値の一覧を挿入するには
レポート データ ペインで [パラメーター] ノードを展開して BusinessPersonID を右クリックし、[パラメーターのプロパティ] をクリックします。
[プロンプト] で「営業担当者の選択 : 」と入力します。
[データ型] として [Integer] を選択します。
[使用できる値] をクリックします。
[クエリから値を取得] オプションを選択します。
[データセット] ボックスの一覧から、[BusinessPersons] を選択します。
[値フィールド] ボックスの一覧から [BusinessEntityID] を選択します。
[ラベル フィールド] ボックスの一覧から [名前] を選択します。
ラベルの名前を選択することによって、今度は BusinessEntityID パラメーターの有効な値の一覧に、販売担当者の ID 番号ではなく名前が表示されます。
[既定値] をクリックします。
[クエリから値を取得] オプションを選択します。
[データセット] ボックスの一覧から、[BusinessPersons] を選択します。
[値フィールド] ボックスの一覧から [BusinessEntityID] を選択します。
[OK] をクリックします。
[プレビュー] タブをクリックします。レポートに、営業担当者名のドロップダウン リストが表示されます。
[レポートの表示] をクリックします。他のパラメーター値を選択して結果を確認します。
次の手順
これで、既存レポートのパラメーターに使用可能な値の一覧を追加できました。次は、DayoftheWeek パラメーターと SalesPersonID パラメーターが複数の値をとるように修正します。「レッスン 3: 複数の値を一覧で選択するためのパラメーターの追加 (SSRS)」を参照してください。