共用方式為


第 2 課:加入參數以建立可用值的清單 (報表產生器 2.0)

可用值 (或有效值) 提供使用者一份報表參數的可能值清單。您可以從特別設計來擷取資料來源中一組值的查詢提供有效值,也可以提供一組預先定義的值。透過將一組可用的值繫結至報表處理時所執行的資料集查詢,您就可以確保使用者只能選擇存在基礎資料來源中的值。

在這一課,您將修改「銷售訂單」報表,以便從 AdventureWorks2008 資料庫提供一份可用銷售人員名稱的下拉式清單。您將會設定資料表屬性,在所選參數值的結果集中沒有資料列時顯示訊息。當您選擇名稱並檢視報表時,報表只會顯示該銷售人員的銷售額。

若要取代現有的資料集查詢

  1. 在 [報表資料] 窗格中,以滑鼠右鍵按一下 DataSet1,然後按一下 [查詢]。查詢設計工具隨即開啟。

    在 [查詢] 窗格中,以下列查詢來取代現有的查詢文字:

    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 = (@BusinessPersonID)
    

    這個查詢包含負責這筆銷售訂單之銷售人員的查詢參數:

    AND SH.SalesPersonID = (@BusinessPersonID)

  2. 按一下 [執行] (!) 按鈕。提示輸入查詢參數時,請使用下表來輸入值。

    @StartDate

    20010101

    @EndDate

    20030101

    @BusinessPersonID

    290

  3. 按一下 [確定]。 結果集顯示 SalesPersonID = 290 的銷售人員 Ranjit Varkey Chudukatil。 

    下一步,您將建立新的資料集,以便列出銷售人員的名稱。

若要擴展報表參數的有效值清單

  1. 在 [報表資料] 窗格的工具列中,按一下 [新增],然後按一下 [資料集][資料集屬性] 對話方塊隨即開啟。

  2. [名稱] 欄位中,輸入 SalesPersons。此資料集將用於擴展 SalesPersonID 報表參數的有效值清單。

  3. 確認資料來源為 AdventureWorks2008。

  4. 按一下 [查詢設計工具],然後按一下 [當成文字編輯]

  5. 將下列 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
    
  6. 按兩次 [確定]。在 [報表資料] 窗格中,新的資料集會顯示三個欄位:BusinessEntityID、FirstName 和 LastName。此資料集將用於提供 BusinessPersonID 參數的有效值。

    下一步,您將建立額外的資料集欄位,以便將 FirstName 和 LastName 串連成名為 Name 的單一欄位。您所定義的欄位稱為導出欄位。

若要在報表資料窗格中定義導出欄位

  1. 在 [報表資料] 窗格的工具列中,以滑鼠右鍵按一下 SalesPersons 資料集,然後按一下 [加入導出欄位][資料集屬性] 對話方塊的 [欄位] 頁面會開啟,並在方格中加入一個新的資料列。

  2. 在最後一個 [欄位名稱] 文字方塊中,輸入 Name。

  3. [欄位來源] 文字方塊中,貼上下列運算式:

    =Fields!LastName.Value & ", " & Fields!FirstName.Value

  4. 按一下 [確定]。

  5. 在 [報表資料] 窗格的 SalesPersons 資料集下,新的 Name 欄位會出現在資料集的欄位集合中。

    下一步,您會將報表參數 BusinessPersonID 指向使用這個資料集,以便取得有效的值。

若要利用可用值的清單擴展報表參數

  1. 在 [報表資料] 窗格中,展開 [參數] 節點,並以滑鼠右鍵按一下 BusinessPersonID,然後按一下 [參數屬性]

  2. [提示] 中,輸入 Select sales person:。

  3. [資料類型] 中選取 [整數]

  4. 按一下 [可用的值]

  5. 選取 [從查詢取得值] 選項。

  6. [資料集] 下拉式清單中,選取 [BusinessPersons]

  7. [值欄位] 下拉式清單中,選取 [BusinessEntityID]

  8. [標籤欄位] 下拉式清單中,選取 [Name]

    透過選取標籤的名稱,BusinessEntityID 參數的有效值下拉式清單現在將會顯示每個銷售人員的名稱,而不是商務識別碼。

  9. 按一下 [預設值]

  10. 選取 [從查詢取得值] 選項。

  11. [資料集] 下拉式清單中,選取 [BusinessPersons]

  12. [值欄位] 下拉式清單中,選取 [BusinessEntityID]

  13. 按一下 [確定]。 

  14. 按一下 [執行],報表會顯示包含商務人員名稱的下拉式清單。

  15. 按一下 [檢視報表]

    報表就會針對符合報表參數所指定之限制的選取銷售人員,顯示銷售訂單。某些日期、當週日期和銷售人員的組合可能沒有任何結果。

後續步驟

您已順利在現有的報表中加入參數的可用值清單。下一步,您會將 DayoftheWeek 和 BusinessPersonID 參數修改成接受多重值。請參閱<第 3 課:加入參數以選取清單中的多個值 (報表產生器 2.0)>。