第 1 課:建立共用資料集並設定報表參數

在這一課,您將建立共用資料集並根據 Employee_Sales_Summary_2008R2 報表的資料集查詢參數設定報表參數。

學習內容

在本教學課程中,您將學習如何執行下列作業:

  • 建立基底報表的複本以開始進行。

  • 在專案和報表中,加入多個共用資料集。

  • 設定針對每個資料集查詢參數自動建立的報表參數。

  • 加入案例描述,以便向報表使用者說明報表的用途。

  • 加入條件式隱藏文字,以便顯示資料來源和資料集查詢資訊。

  • 加入條件式隱藏文字,以便顯示報表使用者所選擇的參數值。

  • 加入條件式隱藏文字,以便顯示報表描述。

  • 加入報表標題。

  • 預覽及驗證報表。

  • 部署報表。

完成本教學課程的估計時間:15 分鐘。

需求

如需有關需求的詳細資訊,請參閱<AdventureWorks 2008R2 範例報表的必要條件>。

本課程假設您已經完成<建立報表伺服器專案及 AdventureWorks2008R2_Base 報表>。

提示

如需一般提示的清單,請參閱<報表設計提示 (報表產生器 3.0 和 SSRS)>。

若要開啟專案並建立報表的複本

  1. 在 Business Intelligence Development Studio 中,開啟報表伺服器專案 AdventureWorks 2008R2 範例報表。

  2. 在 [方案總管] 中,進行下列動作:

    1. 以滑鼠右鍵按一下報表 AdventureWorks2008R2_Base.rdl,然後按一下 [複製]

    2. 以滑鼠右鍵按一下專案節點,然後按一下 [貼上]

    3. 將複製的報表重新命名為 Employee_Sales_Summary_2008R2.rdl。

建立共用資料集

這個報表專案會使用四個以共用資料來源 AdventureWorks2008R2 為基礎的共用資料集。

建立 EmployeeSalesYearOverYear2008R2

若要加入逐年銷售的共用資料集

  1. 在 [方案總管] 中,加入名為 EmployeeSalesYearOverYear2008R2 的共用資料集。

    資料會幫助解答問題:比較每一年的季銷售情況會得到什麼結果?

    在報表中,折線圖和走勢圖將會顯示這項資料。

  2. 指向 AdventureWorks2008R2 共用資料來源並加入下列查詢:

    SELECT   P.FirstName + ' ' + P.LastName AS Employee, 
       DATEPART(Year, SOH.OrderDate) AS [Year], 
       DATEPART(Month, SOH.OrderDate) AS MonthNumber, 
       DATENAME(Month, SOH.OrderDate) AS [Month], 
       SUM(DET.LineTotal) AS Sales
    FROM [Sales].[SalesPerson] SP 
       INNER JOIN [Sales].[SalesOrderHeader] SOH ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
       INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID
       INNER JOIN [Sales].[SalesTerritory] ST ON SP.[TerritoryID] = ST.[TerritoryID] 
       INNER JOIN [HumanResources].[Employee] E ON SOH.[SalesPersonID] = E.[BusinessEntityID] 
       INNER JOIN [Person].[Person] P ON P.[BusinessEntityID] = SP.[BusinessEntityID]
    WHERE (DATEPART(Year, SOH.OrderDate) <= @ReportYear - 1 OR
       DATEPART(Year, SOH.OrderDate) = @ReportYear AND DATEPART(Month, SOH.OrderDate) <= @ReportMonth) AND 
       (SOH.SalesPersonID = (@EmployeeID))
    GROUP BY P.FirstName + ' ' + P.LastName, SOH.SalesPersonID, 
       DATEPART(Year, SOH.OrderDate), DATEPART(Month, SOH.OrderDate), 
       DATENAME(Month, SOH.OrderDate)
    

    共用資料集會出現在 [方案總管] 中。

  3. 在 [報表資料] 窗格中,建立名為 EmployeeSalesYearOverYear2008R2 的資料集。

  4. [資料集屬性] 對話方塊中,選取 [使用共用資料集],然後按一下您剛才在 [方案總管] 中建立的資料集。

    資料集查詢包含查詢變數 @ReportMonth、@ReportYear@EmployeeID。

  5. [資料集屬性] 中,確認已針對每一個查詢變數建立資料集參數。

  6. 在 [報表資料] 窗格中,確認已針對每一個資料集參數建立報表參數。

[報表資料] 窗格內的資料集是 [方案總管] 中共用資料集的參考。在發行報表之後,此參考會指向報表伺服器或 SharePoint 網站上的共用資料集。

建立 EmployeeSalesDetail2008R2

若要加入包含每一個銷售訂單資料的共用資料集

  1. 在 [方案總管] 中,加入名為 EmployeeSalesDetail2008R2 的共用資料集。

    這份資料會幫助解答問題:對於整月份和每一個類別目錄而言,我是否達到我的銷售配額?

    在報表中,矩陣和內嵌指標將會顯示這項資料。

  2. 使用 AdventureWorks2008R2 共用資料來源和下列查詢:

    SELECT PER.FirstName + ' ' + PER.LastName AS Employee,
       PS.Name AS Subcategory, SUM(DET.LineTotal) AS Sales, 
       SOH.SalesOrderID,  SOH.SalesOrderNumber, 
       P.Name AS Product, 
       SUM(DET.OrderQty) AS OrderQty, DET.UnitPrice, 
       PC.Name AS Category
    FROM Sales.SalesOrderHeader SOH 
       INNER JOIN [Sales].[SalesPerson] SP ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
       INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID
       INNER JOIN [HumanResources].[Employee] E ON SOH.[SalesPersonID] = E.[BusinessEntityID] 
       INNER JOIN [Person].[Person] PER ON PER.[BusinessEntityID] = SP.[BusinessEntityID]
       INNER JOIN Production.Product P ON DET.ProductID = P.ProductID 
       INNER JOIN Production.ProductSubcategory PS ON P.ProductSubcategoryID = PS.ProductSubcategoryID 
       INNER JOIN Production.ProductCategory PC ON PS.ProductCategoryID = PC.ProductCategoryID
    WHERE (DATEPART(Year, SOH.OrderDate) = @ReportYear) AND 
       (DATEPART(Month, SOH.OrderDate) = @ReportMonth) AND 
        (SOH.SalesPersonID = @EmployeeID)
    GROUP BY PER.FirstName + ' ' + PER.LastName, 
       DATEPART(Month, SOH.OrderDate), SOH.SalesOrderID, SOH.SalesOrderNumber, 
       P.Name, PS.Name, DET.UnitPrice, PC.Name
    

    共用資料集會出現在 [方案總管] 中。

  3. 在 [報表資料] 窗格中,建立名為 EmployeeSalesDetail2008R2 的資料集。

  4. [資料集屬性] 對話方塊中,選取 [使用共用資料集],然後按一下您剛才在 [方案總管] 中建立的資料集。

建立 EmpSalesMonth2008R2

若要加入逐月銷售的共用資料集

  1. 在 [方案總管] 中,加入名為 EmpSalesMonth2008R2 的共用資料集。

    這份資料會幫助解答問題:比較這個月類別目錄銷售的情況與之前年度相同月份的銷售情況時,會得到什麼結果?

    在報表中,直條圖和資料橫條圖將會顯示這項資料。

  2. 使用 AdventureWorks2008R2 共用資料來源和下列查詢:

    SELECT PER.FirstName + ' ' + PER.LastName AS Employee, 
       DATEPART(Year, SOH.OrderDate) AS [Year], 
       DATEPART(Month, SOH.OrderDate) AS [MonthNumber], 
       DATENAME(Month, SOH.OrderDate) AS [Month], 
       PC.Name AS Category, SUM(DET.LineTotal) AS Sales
    FROM Sales.SalesOrderHeader SOH 
       INNER JOIN [Sales].[SalesPerson] SP ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
       INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID
       INNER JOIN [HumanResources].[Employee] E ON SOH.[SalesPersonID] = E.[BusinessEntityID] 
       INNER JOIN [Person].[Person] PER ON PER.[BusinessEntityID] = SP.[BusinessEntityID]
       INNER JOIN Production.Product P ON DET.ProductID = P.ProductID 
       INNER JOIN Production.ProductSubcategory PS ON P.ProductSubcategoryID = PS.ProductSubcategoryID 
       INNER JOIN Production.ProductCategory PC ON PS.ProductCategoryID = PC.ProductCategoryID
    WHERE
       (DATEPART(Year, SOH.OrderDate) <= @ReportYear) 
       AND (DATEPART(Month, SOH.OrderDate) = @ReportMonth)  
       AND (SOH.SalesPersonID = @EmployeeID)
    GROUP BY PER.FirstName + ' ' + PER.LastName, 
       DATEPART(Year, SOH.OrderDate), DATEPART(Month, SOH.OrderDate), 
       DATENAME(Month, SOH.OrderDate), PC.Name
    

    共用資料集會出現在 [方案總管] 中。

  3. 在 [報表資料] 窗格中,建立名為 EmpSalesMonth2008R2 的資料集。

  4. [資料集屬性] 對話方塊中,選取 [使用共用資料集],然後按一下您剛才在 [方案總管] 中建立的資料集。

建立 SalesEmployees2008R2

若要建立可用員工值清單的資料集

  1. 在 [方案總管] 中,加入名為 SalesEmployees2008R2 的共用資料集。

    這份資料會提供 @EmployeeID 參數的有效值。

  2. 使用 AdventureWorks2008R2 共用資料來源和下列查詢:

    SELECT s.[BusinessEntityID], p.[FirstName] + N' ' + p.LastName AS Employee, e.[JobTitle]
    FROM [Sales].[SalesPerson] s
       INNER JOIN [HumanResources].[Employee] e ON e.[BusinessEntityID] = s.[BusinessEntityID]
       INNER JOIN [Person].[Person] p ON p.[BusinessEntityID] = s.[BusinessEntityID]
    

    共用資料集會出現在 [方案總管] 中。

  3. 在 [報表資料] 窗格中,建立名為 SalesEmployees2008R2 的資料集。

  4. [資料集屬性] 對話方塊中,選取 [使用共用資料集],然後按一下您剛才在 [方案總管] 中建立的資料集。

設定報表參數

共用資料集包含資料集查詢,其中具有 ReportYear、ReportMonth 和 EmployeeID 的查詢變數。系統會針對每個查詢變數自動建立對應的報表參數。根據預設,若為資料類型 String、單一值以及無預設值或有效值清單,就會設定每個報表參數的屬性。您必須視需要手動設定每個參數。

變更參數的順序

若要在報表檢視器工具列上變更參數的順序

  1. 在 [報表資料] 窗格中,按一下 ShowAll。

  2. 在 [報表資料] 窗格工具列上,按一下 [下移] 直到此參數成為清單中的最後一個參數為止。

  3. 按一下 ReportMonth。

  4. 按一下 [上移] 直到此參數成為清單中的第一個參數為止。

設定 ReportMonth

@ReportMonth 設定為只接受來自您個別指定之一組值中的值。預設值必須是其中一個值,否則報表將不會自動執行。

若要設定報表參數 @ReportMonth

  1. 在 [報表資料] 窗格中,展開 [參數]

  2. 開啟 @ReportMonth[參數屬性]

  3. [一般] 頁面上,將 [資料類型] 變更為 [整數]

  4. [可用的值] 頁面上,選取 [指定值]

  5. 每 12 個月加入一個項目。將 [標籤] 設定為月份名稱,並將 [值] 設定為該月的序數值。例如,第一個項目是一月和 1。最後一個項目是十二月和 12。填入所有的 12 個值。

  6. [預設值] 頁面上,選取 [指定值]。在 [值] 中,輸入 7。

這樣會將預設值設定為七月。如果每個報表參數都有預設值,則報表會在第一次檢視時自動執行。

設定 ReportYear

若要設定報表參數 @ReportYear

  1. 開啟 @ReportYear[參數屬性]

  2. [一般] 頁面上,將 [資料類型] 變更為 [整數]

  3. [預設值] 頁面上,選取 [指定值]

  4. 加入值。在 [值] 中,輸入 2007。

設定 EmployeeID

若要設定報表參數 @EmployeeID

  1. 開啟 @EmployeeID[參數屬性]

  2. [一般] 頁面上,將 [提示] 變更為員工。

  3. [資料類型] 變更為 [整數]

  4. [可用的值] 頁面上,選取 [從查詢取得值]

  5. [資料集] 中,選取 SalesEmployees2008R2。

  6. [值] 中,選取 BusinessEntityID。

  7. [標籤] 中,選取 Employee。

  8. [預設值] 頁面上,選取 [指定值]。在 [值] 中,輸入 283。這個值是 David Campbell 的員工識別碼。

加入案例描述

若要加入案例描述

  • 在案例描述文字方塊中,將現有的文字取代成下列文字:

    我身為 AdventureWorks 的銷售人員,我想要知道我的銷售情況與之前年份的季銷售相較之下的結果如何。

    折線圖和走勢圖會顯示所有類別目錄的逐年銷售。

    具有指標的矩陣會顯示與配額相較之下的目前銷售。在報表檢視器工具列上變更配額值。

    直條圖和資料橫條圖會顯示每一個類別目錄的銷售。

在之後的課程中,您會從這些文字連結到相關的資料區。

顯示資料來源、資料集和參數值

您可以顯示資料集查詢命令文字以及使用者針對每個報表參數所選擇的值。為減少報表中混亂的情形,請將文字方塊中的這項資訊放在最後一頁上的條件式隱藏矩形容器中。

若要加入矩形

  1. 在報表底部的頁尾上方加入矩形。

  2. [矩形屬性] 中,執行下列動作:

    1. [一般] 頁面上,選取 [在前方加入分頁符號]

    2. [可見性] 頁面上,選取 [依據運算式顯示或隱藏],然後輸入:=NOT Parameters!ShowAll.Value

在下列步驟中,當您完成該步驟時,請將每個文字方塊加入至矩形。請視需要擴展矩形。只要將矩形當做容器使用,您就可以輕鬆地將所有文字方塊當做一個單元移動。

若要加入顯示參數值的文字方塊

  1. 在報表主體中,加入在個別行上包含下列文字的文字方塊:

    1. 報表月份:[@ReportMonth] [@ReportMonth.Label]

    2. 報表年份:[@ReportYear]

    3. 員工識別碼:[@EmployeeID] [@EmployeeID.Label]

  2. 將文字方塊拖曳至矩形並視需要調整大小。

若要加入顯示資料來源和資料集資訊的文字方塊

  1. 在報表主體中,加入名為 DataSourceandDatasets 而且包含下列文字的文字方塊:

    1. 資料來源 AdventureWorks2008R2:

    2. 建立名為 AdventureWorks2008R2 而且包含下列值的預留位置:=DataSources!AdventureWorks2008R2.DataSourceReference。

    3. 資料集 EmployeeSalesYearOverYear2008R2:

    4. 建立名為 EmployeeSalesYearOverYear2008R2 而且包含下列值的預留位置:=DataSets!EmployeeSalesYearOverYear2008R2.CommandText。

    5. 資料集 EmployeeSalesDetail2008R2:

    6. 建立名為 EmployeeSalesDetail2008R2 而且包含下列值的預留位置:=DataSets! EmployeeSalesDetail2008R2.CommandText。

    7. 資料集 EmpSalesMonth2008R2:

    8. 建立名為 EmpSalesMonth2008R2 而且包含下列值的預留位置:=DataSets! EmpSalesMonth2008R2.CommandText。

  2. 視需要設定文字格式。例如,您可以為資料集名稱加上底線。

  3. 將文字方塊拖曳至矩形並視需要調整大小。

加入描述

若要加入描述

  1. 在頁尾中,將描述文字方塊中的文字取代成下列文字:

    用途:摘要報表。顯示所有類別目錄、個別類別目錄和配額的逐年銷售。包含圖表 (折線圖、走勢圖、具有刻度中斷線的直條圖、資料橫條)、Tablix (切換資料列、資料列群組、資料表和群組層級的指標)、群組和報表變數、矩形容器、共用資料集、共用資料來源、圖表線條色彩的自訂程式碼、書籤、鑽研動作、多值參數,以及控制文字方塊和切換資料列之條件式可見性的參數。

  2. 按一下報表背景,在屬性窗格中顯示 [報表屬性]

  3. [描述] 中,貼上描述文字。

加入報表標題

若要加入報表標題

  1. 在頁首加入文字方塊,其中包含兩行下列文字:

    Sales Report for [@EmployeeID.Label]

    [@ReportMonth.Label], [@ReportYear]

  2. 視需要設定格式。

預覽報表

若要預覽及驗證報表

  1. 預覽報表。

  2. 驗證報表會自動執行。

  3. 在報表檢視器工具列上,驗證以下項目:

    1. 報表月份具有所有月份的下拉式清單。根據預設,此值為七月。

    2. 報表年份的預設值是 2007。

    3. 員工具有所有員工名稱的下拉式清單。根據預設,此值為 David Campbell。

  4. 標誌、報表名稱和報表標題都會出現在頁首。

  5. 當您按一下切換符號時,就會出現案例文字。

  6. 當您將 ShowAll 設定為 True,然後執行報表時,參數值、資料來源和資料集資訊,以及描述就會出現在報表的最後一頁。

部署報表

若要部署報表

  1. 在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [部署]。在 BI Development Studio 的狀態行或是 [輸出] 窗格中檢查是否有錯誤。

    [!附註]

    因為此報表相依於共用資料集,所以當您首次部署報表時,必須部署整個專案。

  2. 在瀏覽器中,導覽至報表伺服器或 SharePoint 網站,並確認共用資料來源、共用資料集和報表都出現在正確的資料夾,而且您也可以檢視報表。

後續步驟

您已完成報表專案和基底報表的建立工作。您現在可以建立範例報表。如需詳細資訊,請參閱<教學課程:建立 AdventureWorks 2008R2 範例報表>。