通過調用SQL 2005的Web service訪問SQL 2005報表服務
這種方法適合建立自己的報表解決方案,如改善報表參數的UI界面,提供漂亮的報表導航界面界面等。
使用 Add Web Reference 將一個 Web 服務引用添加到應用程序中。指定到 Web 服務的路徑,如下所示:
http://MyServer/ReportServer/ReportService.asmx
如果報表服務就在本機可以直接點擊”Web services on the local machine”進行選擇。
在添加引用後,就可以創建 ReportingService 代理類的一個實例,並調用該服務上的方法。
//獲取已存在報表服務引用實例
ReportService2005.ReportingService2005 reportingService = new ReportingService2005();
//設定驗證關係
reportingService.Credentials = System.Net.CredentialCache.DefaultCredentials;
//從報表服務器獲取報表數據
ReportService2005.CatalogItem[] reportItems = reportingService.ListChildren("/ReportProjectDemo", true);
//遍歷報表數組中的WebReference.CatalogItem實例,然後放置到前臺的DropDownList中去
foreach (ReportService2005.CatalogItem item in reportItems)
{
if(item.Type == ItemTypeEnum.Report)
{
DropDownList1.Items.Add(new ListItem(item.Name, item.Path));
}
}
如果您正在一個 Intranet 環境中部署應用程序,要通過將添加到應用程序的 web.config 文件中來啓用模擬。您還要將客戶端登錄憑據傳遞到該服務,如前面的示例所示。
ListChildren 方法返回 CatalogItem 對象的數組,該數組表示用戶有權查看的項,包括報表、文件夾和數據源。Path 屬性提供了到項的唯一路徑,例如,/SampleReports/Sales Order Detail,Type 屬性使您可以區別報表和其他類型的項。
既然我已經將報表名稱加載到了下拉列表中,我必須決定怎麼樣在儀表板應用程序內顯示報表。我決定擴展我早期編寫的 ReportViewer 代碼並且只要用戶選擇某個報表並點擊“Go”按鈕就更改 ReportPath 屬性。您還可以使用 IFRAME 並將 SRC 設置爲適當的 URL(併爲報表的名稱加上前綴“http://MyServer/ReportServer?”)。
除了報表管理功能外,Web 服務提供的其他主要功能就是報表呈現。大多數應用程序(包括報表管理器應用程序)都使用 Web 服務功能來列出報表或更改設置,並使用URL 方法來顯示報表。但是,如果想要完全控制報表內容在應用程序中處理的方式,可以使用 ReportingService 類的 Render 方法。該方法返回一個可以在以後保存到輸出文件的字節數組,取決於請求的格式,輸出文件可以是圖形文件或 Excel 電子表格。如果要以 HTML 格式呈現報表,可能會更加複雜一些,因爲您將需要使用 RenderStream 方法來分別呈現圖像或其他資源。
具體可以參考下文
http://www.codeproject.com/KB/reporting-services/SQLRSViewer.aspx