使用 URL Access 的優點:
- 可自行客製化瀏覽報表介面,並與網頁程式整合
- 語法直覺易懂
- 屬性設定比傳統報表管理員介面更加豐富
- 最節省開發人力成本的整合報表方案
但還是有其缺點:
- 參數透過 URL 傳遞,若未透過 HTTPS 傳遞,可能有安全性的疑慮
- 參數過多、使用複選或是中文值作為參數時,會因 URL 超過預設長度 ( 一般是 256 字元 ),而造成失敗。目前新版的報表檢視器已經有所改良,畫面上只呈現首次登入時的 URL,因此發生失敗的機會已大幅減少。
URL Access 的句型結構
http://報表伺服器/虛擬目錄?[/路徑資訊]&prefix:param=value[&prefix:param=value]...n]
URL Access 的通訊協定可以是 HTTP 或 HTTPS。
報表伺服器
報表伺服器所在電腦主機名稱,可以是 IP 位置、主機名稱、或包含完整網域的主機名稱,需視網路架構以及報表伺服器設定值而定。
虛擬目錄
報表伺服器下的虛擬目錄名稱。
?
放在虛擬目錄名稱之後,標示報表物件屬性宣告的開始。
[/路徑資訊]
存取報表伺服器資料庫的完整路徑名稱。
&
分開各個參數名稱及值的符號。
Prefix
參數前置詞,為選擇性項目,用來指示報表伺服器執行特定的動作,假如語法中的參數前面沒有包括參數前置詞,會被認為是報表參數。
- rc:指定報表轉譯模組所需的設定資訊,以及控制報表服務 HTML 瀏覽器的功能設定。
- rs:指定執行報表伺服器命令的所需條件。
- dsu:指定存取資料來源的使用者名稱。
- dsp:指定存取資料來源的密碼。
Param
報表參數名稱。
Value
報表參數值。
例如:
http://10.50.12.119/ReportServer?/Reports/Report3
不帶入任何參數,沒有指定數值,若原報表有設定預設值,則會自動帶入預設值。而 URL 會自動轉換為 http://10.50.12.119/ReportServer/Pages/ReportViewer.aspx?/Reports/Report3
所以使用轉換後的 URL 也可以組合出 URL Access 的網址
http://10.50.12.119/ReportServer?/Reports/Report3&YEAR=2010
帶入YEAR參數,參數值為 2010
對 SSRS 而言,參數大小寫是有差異的。
錯誤訊息會如下
Reporting Services 錯誤
- 嘗試設定未於此報表中定義的報表參數 'year'。 (rsUnknownReportParameter)
SQL Server Reporting Services
在使用 URL Access 傳遞參數時,有幾點注意事項:
- 如果要傳遞的參數為空值,需使用「參數名:isnull=true」的句型結構,例如:YEAR:isnull=true。
- 傳遞報表參數前方需要加入「&」。
- 對 SSRS 而言,參數大小寫是有差異的。
- 參數值不論是字串或數值,都不用加上單引號或雙引號。
- 如果參數複選時,則是需要將選項一再重複,如:http://10.50.12.119/ReportServer?/Reports/Report3&YEAR=2010&YEAR=2011&YEAR=2012
- 傳遞報表參數的數量必須與原本報表的參數數量一致,如原本報表有三個參數,用 URL 傳遞時也必須有三個參數,除非參數已經有預設值且提示屬性 ( Prompt Property ) 為 False,才能在 URL 省略放置此報表參數。
- 傳遞參數時要注意參數的型別,如日期型別、整數型別或者字串型別,例如,客戶 ID 原本設定為整數型別,若傳遞時放入英文字母,則執行時會傳回錯誤訊息。
※傳遞報表參數時,如果直接輸入中文參數值或參數是中文或路徑資訊有中文,都會造成 URL 無法解析而回傳錯誤結果。
因此,建議在設計表時,參數的顯示內容可以使用中文,但是實際傳遞的參數值則用數字或是英文字母。如果不得已參數必須使用中文時,可在前端系統組成 URL Access 的階段中,使用 System.Web.HttpUtility.Urlencode ( 中文參數值 ) 的方式將中文參數值轉換為 UNICOD,如此就能正常傳遞參數內容。
報表物件存取
除了瀏覽報表外,URL Access 還可以用來存取報表伺服器中的各項物件,包括
- 目錄 ( Folders )
- 資料來源 ( Data Sources )
- 資源 ( Resources )
- 報表 ( Reports )
存取物件的種類由指定傳遞命令參數 ( Command Parameter ) 的方式來達成。基本語法為 rs:Command=<命令參數>,命令參數可用值如下:
- GetDataSourceContents:檢視資料來源內容,會以 XML 格式顯示。
- GetResourceContents:檢視資源物件內容。
- ListChildren:列出目錄下的物件清單,每一項物件都有超連結可再點擊檢視其內容。
- Render:在瀏覽器上顯示報表。
http://msdn.microsoft.com/zh-tw/library/ms152835.aspx
沒有留言:
張貼留言