靈活的報表功能是大多數業務應用程序的一個要求
這些報表功能在集成到 Web 應用程序中之後用途更加廣泛
利用 SQL Server®
Reporting Services 的最新版本
您可以輕松地具有來自各種數據源的報表生成功能
在本文中
我將介紹使用 Visual Studio® 和 Reporting Services 來編寫報表
並演示如何將報表集成到 Web 應用程序中
Reporting Services 是基於服務器的報表生成平台
該平台構建在
NET Framework 上並與 SQL Server
集成在一起
因此您可以使用一個擴展的基於 Web 服務的 API 將豐富的報表生成功能集成到應用程序中
盡管報表服務器使用 SQL Server 作為報表的儲存庫
但利用 OLE DB
ODBC 或 ADO
NET 提供程序的任何數據源都可以用來為報表提供數據
這就使得 Reporting Services 成為在各種企業環境中生成報表的極佳工具
Reporting Services 是作為 SQL Server
的一部分而授權的
因此如果您有已授權的 SQL Server 的副本
則可以在同一服務器上運行 Reporting Services 而無需支付額外的許可證費用
如果您決定在獨立的
尚未經 SQL Server 授權的計算機(例如
Web 服務器)上運行 Reporting Services
您將需要購買額外的 SQL Server 許可證
要開始使用 Reporting Services
您可以下載位於 SQL Server
Reporting Services 的
天試用版軟件
它還包括有關如何獲得該產品的安裝媒體的說明
在安裝該產品時
請確保選中包括示例報表的選項
因為我要將這些報表集成到本文的 Web 應用程序中
Reporting Services 概述
Reporting Services 報表設計使用新的 Visual Studio
NET
報表設計器
在安裝有 Visual Studio 的同一計算機上安裝了 Reporting Services 後
該設計器就可以使用
設計器以新的基於 XML 報表定義語言 (RDL) 輸出報表布局和數據訪問的說明
而 RDL 文件會發布到報表服務器
如果您希望為用戶提供創作功能
也可以使用第三方的報表設計器
管理員可以使用基於 Web 的報表管理器來管理已發布的報表
並且可以執行一些任務
例如
保證某些用戶組報表的安全或更改已部署報表的數據源連接字符串
用戶也可以使用報表管理器來浏覽和查看報表
但是很多公司傾向於使用 URL 請求或 Reporting Services Web 服務
將報表查看直接集成到它們現有的內部 Web 站點或應用程序中
可以將報表參數化
這樣用戶可以在查看報表時從選擇列表中進行挑選
它們還可以導出為多種格式
例如
Microsoft®Excel
PDF 和 XML
盡管實時報表提供最新的數據
也可以將報表緩存一段時間以提高性能並減少數據源上的負載
對於商務智能應用程序
報表可以訪問 Analysis Services OLAP 多維數據集
而且 Reporting Services 甚至可以導入現有的 Microsoft Access 報表
盡管由於這兩種技術間存在差異
它並不能支持所有的 Access 功能
有關 Reporting Services 體系結構的詳細情況
請參見圖
設計第一個報表 盡管我介紹的重點在於將報表集成到應用程序中而不是創作報表
但熟悉 Reporting Services 的最好辦法就是立即著手創建一個新的報表項目
為此
請打開 Visual Studio 並使用 Report Project Wizard 創建一個新的項目
該向導位於 Business Intelligence Projects 部分
為您的項目指定一個名稱
單擊
OK
然後將顯示報表向導對話框
在您選擇數據源的這一步驟中
單擊
Edit
按鈕
以便指定連接到您數據庫服務器上的 AdventureWorks
單擊
OK
然後選中使其成為共享數據源的選項
單擊
Next
進入到
Design the Query
步驟
指定簡單的 SQL 語句(例如
SELECT * FROM Product
)
然後單擊
Next
Reporting Services 支持顯示一組固定列的標准表格式 (Tabular) 報表
也支持使用帶有動態列的交叉表樣式視圖的矩陣式 (Matrix) 報表
因此為該報表選擇 Tabular
然後單擊
Next
將某些列(例如
ProductID 和 Name)拖到 Details 部分並單擊
Next
選擇默認的 Bold 樣式
單擊
Next
然後指定您的報表服務器的虛擬目錄的 URL
例如//MyServer/ReportServer
現在
單擊
Next
最後一步
您可以為您的第一個報表指定名稱
例如
Products Report
然後單擊
Finish
該向導將會創建該項目
同時還創建一個可以由多個報表共享 AdventureWorks
數據源
以及一個在設計器中打開的有關 Products 數據的報表(請參見圖
)
默認情況下
顯示使您可以修改報表設計的 Layout 選項卡
Data 選項卡用於指定報表的查詢
包括設置參數以便在執行報表時提示用戶提供值
單擊
Preview
選項卡來測試報表顯示給用戶的方式
現在
您可以將附加的報表添加到該項目
或者通過添加附加列
將數據分組
添加匯總
甚至是添加能夠顯示來自其他查詢的數據的附加表來修改 Products 報表
與很多報表設計器不同
Reporting Services 使用帶外設計
這使得它可以輕松地創建將各種源的數據集中在同一個位置的報表
您剛剛創建的報表項目由當前駐留在您的開發計算機上的一組文件組成
為了將這些報表發布給用戶
您需要將該項目部署到報表服務器
部署和測試 在部署報表項目之前
需要指定將項目部署到哪一個服務器
如果您最初使用該向導創建了報表項目
那麼您可能已經指定了目標服務器
要檢查該設置或指定一個新服務器
請選擇
Project | Properties
來顯示 Project Properties 對話框
進行該設置使您可以指定項目的文件夾名和 Reporting Services Web 服務的 URL
在菜單上選擇
Build | Deploy Solution
將構建報表項目
然後將其部署到服務器
在部署報表項目後
您就可以進行測試了
已部署到服務器的每個報表都具有唯一的路徑
該路徑可以用於在浏覽器中顯示報表
例如
要顯示您創建的第一個報表
請打開浏覽器並導航到//MyServer/ReportServer?/Report+Project
/Products+Report
這會以 HTML 格式呈現報表並在頁面的頂端顯示一個工具欄
以便使您可以對報表進行翻頁
更改縮放比例
甚至以各種其他格式(例如
PDF)查看報表
您還可以通過導航到服務器上的以下 URL
來浏覽已部署到服務器的所有報表項目的列表//MyServer/ReportServer
報表服務器提供使您可以查看已部署的報表類型和查看報表的最小的用戶界面
報表管理器是一個更加友好
功能更豐富的工具
可以通過簡單地導航到本地服務器上的以下 URL 來訪問該工具//MyServer/Reports
將報表添加到 Web 應用程序 既然您知道如何設計
部署和測試報表
就讓我們將這些報表集成到應用程序中吧!很多 Web 應用程序都包括針對每個用戶的自定義主頁
通常稱為
儀表板
這個頁面通常提供針對用戶量身定做的摘要式信息並作為跳轉點來訪問應用程序的其他功能
我將使用 Reporting Services 附帶的示例報表構建一個儀表板來演示報表集成
如圖
所示
如果您在安裝過程中安裝了示例報表
您可以打開該報表項目(安裝到 \Reporting Services\Samples\Reports)並將其部署到測試服務器
您可以使用報表管理器工具通過浏覽到 SampleReports 文件夾來測試示例報表
為用戶提供從應用程序訪問報表的權限的最簡單方法就是使用超級鏈接
如您已經看到的那樣
每個報表都具有唯一的
用於在浏覽器中顯示報表的路徑
對於儀表板應用程序
報表應該在單獨的窗口中打開
因此我將為該超級鏈接指定一個目標
到目前為止
這是非常簡單的
但是對於具有參數報表的報表(例如
Employee Sales Summary 報表)來說
情況又如何呢?要真正地將報表集成到應用程序中
您通常需要為參數指定某些值
以便用戶不會被經常提示
Reporting Services 使這項任務非常簡單
報表參數的值可以指定為 URL 的一部分
例如
Employee Sales Summary 報表具有 ReportYear
ReportMonth 和 EmpID 參數
因此顯示編號為
的員工在
月份的銷售額的超級鏈接可以是
Summary&ReportMonth=
&EmpID=
target=
_blank
>November Sales Summary
不具有在 URL 中指定的值的參數將使用在報表設計器中設置的默認值
因此剛才展示的示例銷售匯總報表使用的 ReportYear 值是
Reporting Services 還有一組用於控制報表顯示方式的內置參數
這些參數通過加上前綴
rs:
來區別您自己的報表參數
其中最有用的一個參數就是 rs:Format 參數
它用於指定呈現報表的格式
這使您可以包括不需要顯示在 HTML 中的報表
還可以使用諸如 PDF 甚至是 XML 的格式
其他常用參數是 rs:Command
指示出要應用到您所指定的路徑的操作
例如
rs:Command=Render 將呈現一個報表
而 rs:Command=ListChildren 將列出文件夾中所有項
如果您沒有指定命令
Reporting Services 將查看您指定的路徑並計算出要采取的適當操作
例如
呈現報表
圖
顯示了 rs:parameters 的列表
另一組內置參數控制各種輸出格式的行為並使用 rc:prefix
每個報表格式都具有其自己特定的一組參數
例如
要以沒有標題行的逗號分隔值 (CSV) 格式呈現報表
您應該使
From:http://tw.wingwit.com/Article/program/SQLServer/201311/21969.html