共用方式為


第 3 課:利用可用的值清單加入單一值參數

新增: 2006 年 7 月 17 日

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

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

開啟銷售訂單報表

  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(zh-tw,SQL.90).gif附註:
    查詢參數兩邊的括號是查詢語法中的重要部分。
  3. 按一下 [執行] (!) 按鈕。提示輸入查詢參數時,請使用下表來輸入值。

    @StartDate

    20010101

    @EndDate

    20030101

    @SalesPersonID

    286

  4. 按一下 [確定]。結果集顯示銷售人員 Ranjit Varkey Chudakatil 的 SalesPersonID = 286。

  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. 按一下 [執行] (!) 按鈕。SalesPersonIDFirstNameLastName 資料行會出現在結果集中,並作為資料集 SalesPersons 中的欄位。

    您可以在查詢中加入導出欄位 (例如,在 SELECT 陳述式中加入 LastName + N' ' + FirstName as Name 作為其他資料行),不過,Reporting Services 提供一種方式,可以從現有的資料集欄位建立新的導出欄位。當查詢使用預存程序來擷取一組預先定義的資料行時,您就可以使用這個功能。在下一個程序中,您將建立新的資料集欄位來結合兩個現有欄位。

加入新的導出資料集欄位

  1. 在 [資料集] 視窗中,以滑鼠右鍵按一下 SalesPersons 資料集,然後選取 [加入]

    如果 [資料集] 視窗尚未開啟,請按 ALT+CTRL+D。

  2. [名稱] 文字方塊中,輸入 Name

  3. 選取 [導出欄位] 選項。

  4. 將下列運算式貼入文字方塊中:

    =Fields!LastName.Value + ", " + Fields!FirstName.Value
    
  5. 按一下 [確定]

    從資料工具列中,按一下 [重新整理欄位]。新欄位 Name 隨即出現在資料集 SalesPersons 的欄位集合中。

    在下一個程序中,您將設定資料表資料區域屬性 NoRows。當為資料表相關的資料集所擷取的資料沒有包含結果時,就會顯示此屬性中的文字。

在資料表中加入 NoRows 訊息

  1. 按一下 [配置] 索引標籤,以切換到 [配置] 檢視。

  2. [檢視] 功能表中,選取 [屬性] 視窗。

  3. 從 [屬性] 視窗的物件下拉式清單中,選取資料表。依預設,資料表名稱為 table1

  4. 在 [屬性] 視窗中捲動至 [NoRows]

  5. 按一下 [NoRows] 旁邊的文字方塊,然後輸入下列文字:

    此參數組合沒有可用的結果。

    當特定查詢參數的結果集沒有產生任何資料列時,就會顯示這個訊息。

  6. (選擇性) 按一下 [預覽]。在 SalesPersonID 參數中,輸入 1[NoRows] 訊息會顯示在資料表資料區域的位置。

    在下一個程序中,您將編輯自動產生的報表參數 SalesPersonID。您將會設定報表參數,以顯示可用的值下拉式清單中的銷售人員姓名,而不是資料庫識別碼。

設定報表參數 SalesPersonID 的屬性

  1. [報表] 功能表上,選取 [報表參數][報表參數] 對話方塊隨即開啟。SalesPersonID 參數會出現在 [參數] 窗格中。

  2. [資料類型] 下拉式清單中,選取 [整數]

  3. [提示] 文字方塊中,輸入 Select Sales Person:

  4. [可用的值] 區段中,選取 [從查詢]

  5. [資料集] 下拉式清單中,選取 [SalesPersons]

  6. [值] 欄位,選取 [SalesPersonID]

  7. [標籤] 欄位,選取 [姓名]

    SalesPersonID 參數有效值的下拉式清單現在將會顯示每個銷售人員的姓名,而不是 SalesPersonID

  8. [預設值] 區段中,選取 [從查詢]

  9. [資料集] 下拉式清單中,選取 [SalesPersons]

  10. [值] 欄位,選取 [SalesPersonID]

  11. 按一下 [確定]

  12. 按一下 [預覽] 索引標籤。報表會顯示列有銷售人員姓名的下拉式清單。

後續的步驟

您已順利在現有報表中加入單一值參數。下一步,您會將 DayoftheWeekSalesOrderID 參數修改成多重值。請參閱<第 4 課:加入具有全選的多重值參數>。

請參閱

其他資源

在 Reporting Services 中使用參數
使用單一值和多重值參數
在運算式中使用參數

說明及資訊

取得 SQL Server 2005 協助