第 2 課:加入參數,依日期篩選
新增: 2006 年 7 月 17 日
在報表的查詢中加入開始和結束日期的參數之後,您就可以指定日期範圍,限制從資料來源擷取的資料。您也可以建立其他參數,用來篩選從資料來源擷取的資料。
在這一課,您將加入查詢參數 @StartDate 和 @EndDate。您會看到區分大小寫的報表參數 StartDate 和 EndDate (沒有查詢參數指標 @) 已為您自動建立。請注意,不同的資料提供者會使用不同的查詢參數指標;例如,Oracle 資料提供者會使用冒號 (:),而不使用 at (@) 符號。
您會將參數的資料類型設定為 DateTime,並且會看到日曆控制項與參數文字方塊一起出現在工具列上。您將為參數設定預設值,讓報表能夠自動執行。最後,您會建立未繫結至查詢參數的報表參數 DayofWeek,並用它來篩選從資料來源擷取的資料。
將日期參數加入至查詢
在 [資料] 檢視中,選取 [AdventureWorks] 資料集。
以下列查詢取代現有查詢:
SELECT S.OrderDate, S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName 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)) -- Accurate Enddate would be '20020228 23:59:59.997'
附註: SQL Server 儲存 DATETIME 資料的精確度可達 1/300 秒。如需詳細資訊,請參閱<日期和時間 (Transact-SQL)>。使用 DateTime 變數之後,如果沒收到所預期的篩選結果,可能就必須在查詢參數中使用更精準的時間。 在本教學課程中,您將使用近似日期時間值。
按一下工具列上的 [執行] (!)。[定義查詢參數] 對話方塊隨即開啟。
在 [參數值] 資料行中,輸入 @StartDate 的值。例如,20010101。
在 [參數值] 資料行中,輸入 @EndDate 的值。例如,20030101。
按一下 [確定]。報表參數 StartDate 和 EndDate 就會自動建立,並將資料類型預設為 String。在下列三個步驟中,您會將這些參數的資料類型設定為 DateTime。
從 [報表] 功能表中,按一下 [報表參數]。[報表參數] 對話方塊隨即開啟。
在 [參數] 清單方塊中,確認 [StartDate] 已反白顯示。從 [資料類型] 下拉式清單中,選取 [DateTime]。
在 [參數] 清單方塊中,選取 [EndDate]。從 [資料類型] 下拉式清單中,選取 [DateTime]。
按一下 [確定]。
按一下 [預覽]。StartDate 和 EndDate 參數分別會與日曆控制項一起出現在工具列上。當參數的資料類型設為 DateTime,並且您尚未定義可用的值清單時,日曆控制項會自動出現。定義可用的值清單即會建立值的下拉式清單,而不會出現日曆控制項。
在本教學課程中,您將輸入資料的值,而不使用日曆控制項。
在 [StartDate] 參數文字方塊中,輸入日期 2001-01-01。
在 [EndDate] 參數文字方塊中,輸入日期 2003-01-01。
按一下 [檢視報表]。報表只會顯示介於報表參數值之間的資料記錄。
建立報表的查詢參數之後,就可以加入這些參數的預設值。預設參數可讓報表自動執行,否則,使用者就必須輸入參數值,然後報表才能執行。
設定日期參數的預設值
在 [配置] 檢視中,從 [報表] 功能表按一下 [報表參數]。[報表參數] 對話方塊隨即開啟。
在 [參數] 清單方塊中,確認 [StartDate] 已反白顯示。
在預設值區段中,選取 [非查詢的],然後輸入 2001-01-01。按下 TAB 鍵以結束文字方塊。
在 [參數] 清單方塊中,選取 [EndDate]。
在預設值區段中,選取 [非查詢的],然後輸入 2003-01-01。按下 TAB 鍵以結束文字方塊。
按一下 [確定]。
按一下 [預覽]。報表會立即執行,因為所有參數都定義了預設值。
報表使用者執行報表時,可以用介於查詢參數範圍內的參數值來設定預設值。例如,您可以提供能將轉譯的資料限制在一個月內的報表參數值。
在查詢中加入新欄位,以用於篩選
在 [資料] 檢視中,選取 [AdventureWorks] 資料集。
在查詢中,透過在 SELECT 陳述中加入下列命令,即可定義其他導出資料行作為一週中產生銷售的一天:DATENAME(weekday, S.OrderDate) as Weekday。
以下列文字取代現有查詢:
SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday, S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName 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))
按一下 [執行] (!)。您應該會看到標示為 Weekday 的新資料行以及一週中的星期幾。
在 [資料集] 視窗中,確認 [Weekday] 是一個欄位。
附註: 如果看不到 [資料集] 視窗,請在 [檢視] 功能表上,選取 [資料集]。 現在,您已經加入其他資料集欄位 Weekday。當您手動建立報表參數並繫結至此欄位時,使用者可以依照一週中的星期幾來篩選報表資料。
加入新的報表參數
按一下 [配置] 索引標籤。
從 [報表] 功能表中,選擇 [報表參數]。[報表參數] 對話方塊隨即開啟。
按一下 [加入]。新的參數 Report_Parameter_2 隨即以預設值出現。
在 [屬性] 區段的 [名稱] 文字方塊中,以 DayoftheWeek 取代 Report_Parameter_2。確認資料類型是 String。
在 [提示] 文字方塊中,輸入 Filter on which day of the week:。
清除 [允許空白] 選項。
在 [可用的值] 區段中按一下 [非查詢的]。將項目保留為空白。
在 [預設值] 區段中按一下 [非查詢的]。在文字方塊中,輸入 Sunday。
按一下 [確定]。
使用參數運算式設定資料表篩選
在 [配置] 檢視中選取資料表。資料表隨即以灰色外框出現。
以滑鼠右鍵按一下資料表外框,並選取 [屬性]。[資料表屬性] 對話方塊隨即開啟。
按一下 [篩選] 索引標籤。
在 [運算式] 資料行中,從下拉式清單中選取 [=Fields!Weekday.Value]。
確認 [運算子] 是等號 (=)。
按一下 [值] 文字方塊,並從下拉式清單中選取 [運算式]<>。[編輯運算式] 對話方塊隨即開啟。
在全域變數窗格中,按一下 [參數]。目前的參數清單隨即出現在對面窗格中。
按兩下 [DayoftheWeek]。參數運算式隨即加入運算式文字方塊中。現在,下列運算式會出現在運算式文字方塊中:=Parameters!DayoftheWeek.Value。
按一下 [確定]。
按一下 [確定]。
資料表的篩選現在設定為比較 [Weekday] 欄位的值與 DayoftheWeek 的參數值。例如,在報表工具列中,輸入 Sunday 作為 DayoftheWeek 的值時,報表處理器將只會處理資料表中 [Weekday] 欄位的值為 Sunday 的資料列。
按一下 [預覽]。由於所有參數都有預設值,因此,報表會自動執行。資料表只顯示介於 StartDate 和 EndDate 所定義日期範圍內以及落在星期日的值。
在下一個選擇性程序中,您會將格式加入資料表頁首。
(選擇性) 設定資料表頁首資料列的背景和字型色彩
按一下 [配置] 索引標籤。
按一下資料表。資料表控點隨即出現。
按一下資料表頁首資料列。在配置工具列上按一下 [背景色彩] 按鈕。[選擇色彩] 對話方塊隨即開啟。
從 [Web] 索引標籤選擇 [DarkRed]。
按一下 [確定]。
接下來,選擇字型色彩。
在配置工具列上按一下 [前景色彩] 按鈕。[選擇色彩] 對話方塊隨即開啟。
從 [Web] 索引標籤選擇 [White]。
按一下 [確定]。
按一下 [預覽]。資料表隨即以為資料表頁首資料列所選擇的色彩呈現。
後續的步驟
您已順利定義查詢參數和報表參數、設定參數的預設值,並將報表參數繫結至導出欄位。在下一課,您將學習如何為參數建立可用值 (或稱為有效值) 清單。請參閱<第 3 課:利用可用的值清單加入單一值參數>。