在運算式中使用內建欄位參考 (報表產生器 2.0)
內建欄位集合包含 Globals 和 User 集合,代表在處理報表時 Reporting Services 所提供的全域值。Globals 集合提供的值包括報表名稱、開始處理報表的時間,以及報表頁首及頁尾的目前頁碼。User 集合則提供使用者識別碼和語言設定。您可以在運算式中使用這些值以在報表中篩選結果。
使用 Globals 集合
Globals 集合包含報表的全域變數。這些變數在設計介面上會顯示為具有前置的 & (連字號),例如 [&ReportName]。下表描述 Globals 集合的成員。
成員 |
類型 |
描述 |
---|---|---|
ExecutionTime |
DateTime |
報表開始執行的日期和時間。 |
PageNumber |
Integer |
只能用於頁首和頁尾的目前頁碼。 |
ReportFolder |
String |
報表所在之資料夾的完整路徑。這不包括報表伺服器 URL。 |
ReportName |
String |
報表存放在報表伺服器資料庫的名稱。 |
ReportServerUrl |
String |
執行報表之報表伺服器的 URL。 |
TotalPages |
Integer |
只能用於頁首和頁尾的報表總頁數。 |
Globals 集合的成員會傳回變數。如果要在需要特定資料類型的運算式中使用這個集合的成員,必須先轉換變數。例如,若要將執行時間變數轉換成日期格式,請使用 =CDate(Globals!ExecutionTime)。如需詳細資訊,請參閱<在運算式中使用資料類型 (報表產生器 2.0)>。
範例
下列範例說明如何在運算式中使用 Globals 集合的參考。
這個放在報表頁尾之文字方塊中的運算式,會提供報表的頁碼與總頁數:
=Globals.PageNumber & " of " & Globals.TotalPages
這個運算式提供報表的名稱及其執行時間。時間格式採用 Microsoft.NET Framework 的簡短日期格式字串:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
使用 User 集合
User 集合包含正在執行報表之使用者的相關資料。您可以利用此集合來篩選出現在報表中的資料 (例如,只顯示目前使用者的資料),或是在報表標題中顯示 UserID 或其他項目。這些變數在設計介面上會顯示為具有前置的 & (連字號),例如 [&UserID]。
下表描述 User 集合的成員。
成員 |
類型 |
描述 |
---|---|---|
Language |
String |
執行報表之使用者的語言。例如,en-US。 |
UserID |
String |
執行報表之使用者的識別碼。如果您是使用 Windows 驗證,此值為目前使用者的網域帳戶。這個值是由 Reporting Services 安全性延伸模組所決定,此延伸模組可使用 Windows 驗證或自訂驗證。 |
如需有關在報表中支援多國語言的詳細資訊,請參閱《SQL Server 線上叢書》中 Reporting Services 文件集的<適用於多語言或全域部署的解決方案設計考量>。
使用地區設定
若要決定對使用者顯示報表的方式,您可以利用運算式,透過 User.Language 值來參考用戶端電腦上的本機設定。例如,您可以建立報表來使用以本機值為基礎的不同查詢運算式。查詢可能會根據傳回的語言,從不同的資料行擷取當地語系化的資訊。您也可以在報表的語言設定或根據此變數的報表項目中使用運算式。
[!附註]
變更報表的語言設定時,您必須注意可能會造成的顯示問題。例如,變更報表的地區設定可能會變更報表中的日期格式,也可能會變更貨幣格式。除非有貨幣轉換程序,否則這可能會造成不正確的貨幣符號在報表中顯示。若要避免這種狀況,請您為每個要變更的項目個別設定其語言資訊,或將項目的貨幣資料設定為特定的語言。
識別快照集或歷程記錄報表的 UserID
在某些情況下,包含 User!UserID 變數的報表將無法顯示正在檢視報表之目前使用者特定的報表資料。如需詳細資訊,請參閱《SQL Server 線上叢書》中 Reporting Services 文件集的<報表處理問題的疑難排解>。