在SQL Server報表服務中使用報表參數
當你在使用報表時,你需要添加參數來縮小報表范圍進行更好的分析。你將經??吹侥阈枰恢挂粋€的參數,第二個參數可能取決于第一個參數,通常要求你基于第一個參數更新第二個參數。
此外,你可能需要添加具有多個和/或默認值的參數。這篇文章講述怎樣在SQL Server 2005報表服務(SSRS)中創建參數。
前提要求
要理解本篇文章的內容,你應該對在SSRS中創建報表有所了解,因為這篇文章會詳細地回顧怎樣在SSRS中創建報表。然而,我將在講述SSRS報表的創建時盡可能多地介紹。還有,你將需要知道怎么編寫連接兩個或更多表的基本T-SQL 查詢。
為了達到有效地利用資源,你需要將SQL Server 2005和SQL Server商業智能開發套件安裝在一起。因為我將使用AdventureWorks 示例數據庫中的數據,如果你在你的SQL Server 版本中安裝了AdventureWorks 數據庫,那將會簡單得多。
示例
因為通過示例對讀者進行解釋總是很有幫助的,所以讓我們假設我們想要根據雇員的國家、州/省和城市列出雇員。用戶應該有一個選擇國家的選項。根據選出的國家,我們要列出所選國家的州/省。在選擇了一個州后,我們應該列出相關的城市,并且用戶應該具有能從列表中選擇一個或多個城市的選項。根據選擇的一個或多個城市,最后用戶應該就可以得到一個符合標準的雇員列表。
實現
首先,你必須從SQL Server商業智能中創建一個報表服務項目,然后添加一個報表到這個項目中。接下來是創建一個指向AdventureWorks數據庫的共享數據源。我們現在需要為國家添加一個數據集。你可以通過在數據集列表框中選擇‘選項’從數據庫標簽添加這個數據集。然后如下圖所示的配置dsCountry數據集。
下一個工作是將這個dsCountry 分配給一個報表參數。從報表菜單中選擇‘Report Parameters’選項。
#p#下面是你應該看到的一個截屏。
上面對話框中的選項有:
Name – 參數的名稱。當你選擇了一個值后,這個值會存儲在這個參數中。因為這是一個變量名稱,所以你不能在這個字段中包含有特殊字符(*,!或空格等等)。
Data Type – 參數的數據類型。這個選項的選擇包括:Boolean、Datetime、Integer、Float 和String。在這個例子中,我們將選擇‘String’用于國家參數。
Prompt – 提示就是你在報表中將看到的。因為它是一個標簽,所以你可以在提示中使用任何字符。
下面的屬性如它們的名稱所顯示的一樣簡單。Hidden和Internal 的不同之處是Hidden變量可以改變而internal 變量則不能。
下一步是給參數賦值。
當參數具有固定值如是/否、男/女等時,應該使用非詢問選項。詢問選項是從一個數據集給參數賦值。在這個示例中,數據集是dscountry,我們需要添加兩個值:值字段和標簽字段。標簽字段是用戶將會看到的,而值字段是將要存儲在參數中的。在這個示例中,如果用戶選擇了United Status,那么在國家參數中將存儲的值是US。
下一步是賦予缺省值。一個缺省值使得用戶可以更容易地使用報表,因為缺省值是用戶最可能選擇的值。例如,在這個報表中用戶選擇United States,所以將United States 作為缺省值使得用戶可以更容易地填寫表格。
使用另一個參數的參數
下一個工作是創建州/省參數。如同我前面所說的,州/省參數取決于在第一個詢問中用戶所選擇的國家,所以在我們的州/省數據集中,我們應該編寫詢問來達到這個標準。
你從上面的圖片中可以看到包含了‘@Country’用于詢問。這個@Country 變量將獲得用戶選擇的國家參數的值。
接下來是創建一個叫做Province的報表參數,并將它附加到dsProvience數據集中。這個的做法和Country 參數的做法一樣。Province 報表參數屏幕如下圖所示。
因為我們已經做了接近一半的報表工作,所以我們該做個簡單測試了,點擊“preview”標簽。你可以看到當你改變國家時省份列表也跟著改變了。例如,當國家是Australia和Germany時會看到下面兩個圖片。
多值參數
在配置了國家和省參數之后,現在我們要配置城市參數。城市數據沒有主表。我們將使用Person.[Address]表來獲得一個城市列表作為工作區。因為城市取決于所選的省,所以我們需要使用@Province 參數來獲得城市列表。下面是城市數據集dsCity的截屏。
【編輯推薦】