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