基于SQLServerReportingServices的報表平臺分析與設計
摘要:描述了基于SQLServerReportingServices的報表平臺的分析和設計方法。主要分析了其特點,然后設計了一個基于ReportingServices的集成報表平臺。并給出了最后的集成效果。
關鍵詞:報表;ReportingServices;平臺分析
0引言
MicrosoftSQLServerReportingServices是一種基于服務器的新型報表平臺,可用于創(chuàng)建和管理包含來自關系數(shù)據(jù)源和多維數(shù)據(jù)源的數(shù)據(jù)表格報表、矩陣報表、圖形報表和自由格式報表。同時可以通過基于Web的連接來查看和管理創(chuàng)建的報表。
SQLServerReportingServices的特點
SQLServerReportingServices主要有兩個特點。第一是ReportingServices具備完善的訪問異種數(shù)據(jù)庫系統(tǒng)的功能。報表平臺需要從不同的系統(tǒng)平臺中抽取數(shù)據(jù),而SQLServerReportingServices可通過OLEDB訪問其它類別的數(shù)據(jù)庫,對于報表平臺來說,這是最基本、也是最重要的一個功能需求。通過它可以方便的從各個不同的應用平臺進行數(shù)據(jù)的抽取,而不用再單獨購買其它的數(shù)據(jù)轉換工具;第二是其報表格式、查看方式多樣,符合日常報表使用習慣。報表除了打印的需求外,也需要轉換為Excel電子表格、HTML、XML、Word、PDF等不同的格式電子文檔,以方便傳遞、保存、存檔。SQLServerReportingServices可以通過SOAP、Web、特定終端等多種方式訪問,同時報表格式的兼容性方面SQLServerReportingServices非常完善,可以解決目前報表提取工作所面臨的困難。
ReportingServices報表平臺的設計
2.1總體設計
圖1所示是本設計的報表體系架構的結構圖。
報表體系架構的設計主要從兩方面考慮:一方面是應當支持遠程ReportServer服務器的報表文件和項目內(nèi)嵌的報表文件,同時支持兩種方式的發(fā)布;另一方面,從靈活性上面考慮,通過報表配置,支持在應用程序中加載擴展的報表,也支持只加載部分已定義的報表。所以報表體系架構應分為三個部分。
第一部分是報表配置,支持開發(fā)人員和實施人員通過可視化的界面,配置系統(tǒng)的各個模塊的報表,可以動態(tài)定義使用和不使用標準的報表,支持實施人員可以動態(tài)加載新報表。
第二部分是報表引擎,也是報表體系架構的核心,主要完成以下四個功能:
(1)通過配置的報表的編碼,獲取配置的報表信息;
(2)從配置的報表信息中獲取報表的文件,支持本地項目的報表文件和遠程ReportServer的報表文件;
(3)通過配置報表的參數(shù),與應用程序的上下文獲取參數(shù)的值;
(4)主要針對本地項目的報表文件,初始化報表的數(shù)據(jù)源,支持從數(shù)據(jù)庫、程序集和Web服務中獲取數(shù)據(jù),并與報表模板結合展現(xiàn)數(shù)據(jù)。
第三部分是報表界面組件,支持與界面集成,展現(xiàn)數(shù)據(jù)。并支持報表的打印和導出。
2.2詳細設計
詳細設計主要是完成報表控制器的設計,建立報表頁面與報表服務器之間的橋梁,本文主要介紹通過ASP.NETMVC
來設計報表引擎。
首先需要在Web.config文件中添加配置節(jié),以配置報表服務器路徑。
在<appSettings>配置節(jié)添加下列配置:
<!--報表服務器路徑-->
<addkey="ReportServerUrl"value="http://127.0.0.1/
reportserver"/>
在<httpHandlers>配置節(jié)添加下列配置
<addpath="Reserved.ReportViewerWebControl.
axd"verb="*"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms,Version=10.0.0.0,
Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
validate="false"/>
在<system.webServer>配置節(jié)添加下列配置
<handlers>
<addname="ReportViewerWebControlHandler"
preCondition="integratedMode"verb="*"
path="Reserved.ReportViewerWebControl.axd"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms,Version=10.0.0.0,
Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>
</handlers>
第二,則是在Shared目錄中,新建ReportViewer.aspx頁
面源代碼:
<%@PageLanguage=”C#”
Inherits=”System.Web.
Mvc.ViewPage<dynamic>”
%>
<%@ImportNamespace=”O(jiān)T.Core”
%>
<%@ImportNamespace=”O(jiān)T.HCS.Common.Report”
%>
<%@RegisterAssembly=”Microsoft.ReportViewer.
WebForms,
Version=10.0.0.0,
Culture=neutral,
PublicKey
Token=b03f5f7f11d50a3a”
Namespace=”Microsoft.Reporting.WebForms”
TagPrefix=”rsweb”
%>
<!DOCTYPEhtml>
<html>
<headid=”Head1”
runat=”server”>
<title>Index</title>
</head>
<body>
<scriptrunat=”server”>
publicReportEngineEngine{get;
set;
}
privatevoidPage_Load(
objectsender,
System.
EventArgse)
{
Engine=(ReportEngine)Session[“Report.
ReportEngine”];
if(Engine==null)
{
thrownewException(“報表引擎未實例化,請
聯(lián)系管理員或重新登陸");
}
reportViewer.ProcessingMode=Engine.
ProcessingMode;
switch(
reportViewer.ProcessingMode)
{
caseProcessingMode.Local:
break;
caseProcessingMode.Remote:
reportViewer.ServerReport.ReportServerUrl=
Engine.ReportServer;
reportViewer.ServerReport.ReportPath=
Engine.ReportPath;
if(Engine.Parames!=null)
{
foreach(
variteminEngine.Parames)
{
reportViewer.ServerReport.SetParameters
(
item);
}
}
break;
default:
break;
}
}
</script>
<formid=”form1”
runat=”server”>
<div>
<asp:ScriptManagerID=”ScriptManager1”
runat=”server”>
</asp:ScriptManager>
<rsweb:ReportViewerID=”reportViewer”
runat=”server”
AsyncRendering=”false”
Width=”100%”
Height=”100%”>
</rsweb:ReportViewer>
</div>
33
</form>
</body>
</html>
最后,在Controller文件、View頁面新建報表。
Controller文件如下:
stringcode=“HCM_01_01”;
//報表分類
List<ReportSetting>result=newList<ReportSetting>
();
//設置頁面選擇框
result=ReportService.GetReports(code);
//從HCI
中獲取報表分類中的報表
SelectListreports=newSelectList(result,“Id”,“ReportName”);
ReportEngineEngine=newReportEngin(eresult[0]);
//實例化報表引擎
//Engine.Parames[0].Values.Add(“2006”);
//給
報表設置參數(shù)
ViewData[“Reports”]=reports;
Session[“Report.ReportEngine”]=Engine;
//將
報表引擎?zhèn)鹘o報表的展示頁面。
returnView();
View頁面如下:
<scripttype=”text/javascript”>
$(document).ready(function()
{
InitEvent();
ReLocation();
});
functionInitEvent()
{
($“#Reports”)
.chang(efunction()
{ReViewRepo(rt);
});
}
functionReLocation()
{
varurl=‘@Url.Content(“~/Common/common/
ReportViewer?Id=”)’
+$(“#Reports”).val();
;
$(“#ReportFrame”).attr(“
src”,
url);
}
functionReViewReport()
{
jOpf.infoTips(“正在重新加載報表");
jOpf.ajaxPost(‘@Url.Content(“~/Common/
common/ReportViewer”)’,
{id:
$(“#Reports”).va(l)
},
function(
result)
{
ReLocation();
});
}
</script>
<table>
<tr>
<td>@Html.DropDownList(“Reports”)
</td>
</tr>
<tr>
<td>
<iframeid=”ReportFrame”
name=”ReportFrame”
class=”ui-layout-center”
frameborder=”0”
scrolling=”auto”
width=”1024”
height=”768”></iframe>
</td>
</tr>
</table>
3報表集成
報表集成方式通過腳本添加如下函數(shù):
functiononPrintClick(
code,name)
{
jOpf.addTab(name,
“
/Common/Report/
ReportViewer?code=”
+code,
“”);
}
集成后的效果如圖2所示。
4結語
本文介紹了基于SQLServerReportingServices的報表平臺的設計方法及其特點,然后設計了一個基于ReportingServices的集成報表平臺。并給出了最后的集成效果。
20211124_619e4cd5ad93a__基于SQLServerReportingServices的報表平臺分析與設計
摘要:近年來,電力市場改革力度不斷加大,而135Mw燃煤機組產(chǎn)能落后,生產(chǎn)成本高,環(huán)保指標卻與1000Mw燃煤機組一致,這就導致其在電力市場上的競爭力大大落后,企業(yè)虧損,生存壓力大:同時也造成了企業(yè)在其技術升級改造方面,...
關鍵字: 關鍵詞 :摘要:介紹了利用視覺系統(tǒng)檢測電機端蓋沖壓生產(chǎn)質量的方法,并將傳統(tǒng)的LAD語言設計方式優(yōu)化為SCL語言進行設計。通過生產(chǎn)對比發(fā)現(xiàn),SCL語言在檢測過程中大大減少了PLC功能指令的使用,采用了直接尋址的方式,程序塊的編寫更具...
關鍵字: 關鍵詞 :摘要:sF6氣體的壓力值對于sF6斷路器的滅弧性能和絕緣性能有著非常重要的影響,一旦sF6氣體密度繼電器進水發(fā)生誤動作,就會造成閉鎖斷路器分閘,從而引起電力設備事故事件,影響電力系統(tǒng)的安全穩(wěn)定運行。鑒于此,在分析sF6氣...
關鍵字: 關鍵詞 :摘要:廣東河源地域寬廣且屬山區(qū)城市,大部分變電站地處偏遠,通信設備依靠定期巡視會消耗大量人力、物力。動力環(huán)境監(jiān)測系統(tǒng)能夠實現(xiàn)實時監(jiān)測機房環(huán)境、蓄電池電壓、蓄電池內(nèi)阻等功能,讓運維人員及時發(fā)現(xiàn)異常,提高通信運維效率?,F(xiàn)提出...
關鍵字: 關鍵詞 :摘要:介紹了模糊預測控制的構成與應用,對地鐵自動控制系統(tǒng)、預測控制部分的算法進行了設計,并經(jīng)過系統(tǒng)仿真驗證了模糊預測控制系統(tǒng)的可行性。
關鍵字: 關鍵詞 :摘要:設計了一種面向偏癱患者的外骨骼式步態(tài)康復訓練機器人機構。該機構包括腋下支撐機構、患肢側外骨骼機構以及健肢側機構。左腋下支撐機構與右腋下支撐機構結構相同,腋下支撐部可以在水平方向和垂直方向進行調整?;贾珎韧夤趋罊C構可...
關鍵字: 關鍵詞 :摘要:以AT89S51單片機為核心,設計了一種可脫機工作的數(shù)字芯片自動檢測裝置,可以自動檢測常用的74系列組合邏輯集成芯片的功能完整性。該檢測裝置系統(tǒng)由上位機和下位機組成,下位機以AT89S51單片機為核心,可獨立工作:...
關鍵字: 關鍵詞 :摘要:通過采用流體力學軟件STAR-CCM+對不同參數(shù)條件下的旋風分離器油氣分離性能進行數(shù)值模擬研究,發(fā)現(xiàn)隨著升氣管直徑減小、進口寬度減小,旋風分離器的油氣分離效率增加,并在一定范圍內(nèi)增加旋風分離器分離空間的長度,有利于...
關鍵字: 關鍵詞 :摘要:在火力發(fā)電廠集控運行工作中,事故工況下的鍋爐汽包水位控制往往是處理過程中的重點,而汽包"虛假水位"的判斷和處理又是其中的難點,一旦判斷錯誤或者處理不及時,就會引起汽包水位高保護或低保護動作,導致鍋爐MFT,嚴重時甚...
關鍵字: 關鍵詞 :摘要:口服液常用的包裝形式一般為玻璃瓶或塑料瓶,其中以玻璃瓶最為常見。隨著背封式條袋包裝的普及,市場上逐漸出現(xiàn)了條袋口服液包裝形式。鑒于此,針對玻璃瓶和條袋包裝這兩種包裝形式進行綜合比較,以便企業(yè)選擇一種最佳的口服液包裝...
關鍵字: 關鍵詞 :