基于SQLServerReportingServices的報(bào)表平臺分析與設(shè)計(jì)
摘要:描述了基于SQLServerReportingServices的報(bào)表平臺的分析和設(shè)計(jì)方法。主要分析了其特點(diǎn),然后設(shè)計(jì)了一個(gè)基于ReportingServices的集成報(bào)表平臺。并給出了最后的集成效果。
關(guān)鍵詞:報(bào)表;ReportingServices;平臺分析
0引言
MicrosoftSQLServerReportingServices是一種基于服務(wù)器的新型報(bào)表平臺,可用于創(chuàng)建和管理包含來自關(guān)系數(shù)據(jù)源和多維數(shù)據(jù)源的數(shù)據(jù)表格報(bào)表、矩陣報(bào)表、圖形報(bào)表和自由格式報(bào)表。同時(shí)可以通過基于Web的連接來查看和管理創(chuàng)建的報(bào)表。
SQLServerReportingServices的特點(diǎn)
SQLServerReportingServices主要有兩個(gè)特點(diǎn)。第一是ReportingServices具備完善的訪問異種數(shù)據(jù)庫系統(tǒng)的功能。報(bào)表平臺需要從不同的系統(tǒng)平臺中抽取數(shù)據(jù),而SQLServerReportingServices可通過OLEDB訪問其它類別的數(shù)據(jù)庫,對于報(bào)表平臺來說,這是最基本、也是最重要的一個(gè)功能需求。通過它可以方便的從各個(gè)不同的應(yīng)用平臺進(jìn)行數(shù)據(jù)的抽取,而不用再單獨(dú)購買其它的數(shù)據(jù)轉(zhuǎn)換工具;第二是其報(bào)表格式、查看方式多樣,符合日常報(bào)表使用習(xí)慣。報(bào)表除了打印的需求外,也需要轉(zhuǎn)換為Excel電子表格、HTML、XML、Word、PDF等不同的格式電子文檔,以方便傳遞、保存、存檔。SQLServerReportingServices可以通過SOAP、Web、特定終端等多種方式訪問,同時(shí)報(bào)表格式的兼容性方面SQLServerReportingServices非常完善,可以解決目前報(bào)表提取工作所面臨的困難。
ReportingServices報(bào)表平臺的設(shè)計(jì)
2.1總體設(shè)計(jì)
圖1所示是本設(shè)計(jì)的報(bào)表體系架構(gòu)的結(jié)構(gòu)圖。
報(bào)表體系架構(gòu)的設(shè)計(jì)主要從兩方面考慮:一方面是應(yīng)當(dāng)支持遠(yuǎn)程ReportServer服務(wù)器的報(bào)表文件和項(xiàng)目內(nèi)嵌的報(bào)表文件,同時(shí)支持兩種方式的發(fā)布;另一方面,從靈活性上面考慮,通過報(bào)表配置,支持在應(yīng)用程序中加載擴(kuò)展的報(bào)表,也支持只加載部分已定義的報(bào)表。所以報(bào)表體系架構(gòu)應(yīng)分為三個(gè)部分。
第一部分是報(bào)表配置,支持開發(fā)人員和實(shí)施人員通過可視化的界面,配置系統(tǒng)的各個(gè)模塊的報(bào)表,可以動態(tài)定義使用和不使用標(biāo)準(zhǔn)的報(bào)表,支持實(shí)施人員可以動態(tài)加載新報(bào)表。
第二部分是報(bào)表引擎,也是報(bào)表體系架構(gòu)的核心,主要完成以下四個(gè)功能:
(1)通過配置的報(bào)表的編碼,獲取配置的報(bào)表信息;
(2)從配置的報(bào)表信息中獲取報(bào)表的文件,支持本地項(xiàng)目的報(bào)表文件和遠(yuǎn)程ReportServer的報(bào)表文件;
(3)通過配置報(bào)表的參數(shù),與應(yīng)用程序的上下文獲取參數(shù)的值;
(4)主要針對本地項(xiàng)目的報(bào)表文件,初始化報(bào)表的數(shù)據(jù)源,支持從數(shù)據(jù)庫、程序集和Web服務(wù)中獲取數(shù)據(jù),并與報(bào)表模板結(jié)合展現(xiàn)數(shù)據(jù)。
第三部分是報(bào)表界面組件,支持與界面集成,展現(xiàn)數(shù)據(jù)。并支持報(bào)表的打印和導(dǎo)出。
2.2詳細(xì)設(shè)計(jì)
詳細(xì)設(shè)計(jì)主要是完成報(bào)表控制器的設(shè)計(jì),建立報(bào)表頁面與報(bào)表服務(wù)器之間的橋梁,本文主要介紹通過ASP.NETMVC
來設(shè)計(jì)報(bào)表引擎。
首先需要在Web.config文件中添加配置節(jié),以配置報(bào)表服務(wù)器路徑。
在<appSettings>配置節(jié)添加下列配置:
<!--報(bào)表服務(wù)器路徑-->
<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(“報(bào)表引擎未實(shí)例化,請
聯(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頁面新建報(bào)表。
Controller文件如下:
stringcode=“HCM_01_01”;
//報(bào)表分類
List<ReportSetting>result=newList<ReportSetting>
();
//設(shè)置頁面選擇框
result=ReportService.GetReports(code);
//從HCI
中獲取報(bào)表分類中的報(bào)表
SelectListreports=newSelectList(result,“Id”,“ReportName”);
ReportEngineEngine=newReportEngin(eresult[0]);
//實(shí)例化報(bào)表引擎
//Engine.Parames[0].Values.Add(“2006”);
//給
報(bào)表設(shè)置參數(shù)
ViewData[“Reports”]=reports;
Session[“Report.ReportEngine”]=Engine;
//將
報(bào)表引擎?zhèn)鹘o報(bà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(“正在重新加載報(bào)表");
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報(bào)表集成
報(bào)表集成方式通過腳本添加如下函數(shù):
functiononPrintClick(
code,name)
{
jOpf.addTab(name,
“
/Common/Report/
ReportViewer?code=”
+code,
“”);
}
集成后的效果如圖2所示。
4結(jié)語
本文介紹了基于SQLServerReportingServices的報(bào)表平臺的設(shè)計(jì)方法及其特點(diǎn),然后設(shè)計(jì)了一個(gè)基于ReportingServices的集成報(bào)表平臺。并給出了最后的集成效果。
20211124_619e4cd5ad93a__基于SQLServerReportingServices的報(bào)表平臺分析與設(shè)計(jì)
摘要:近年來,電力市場改革力度不斷加大,而135Mw燃煤機(jī)組產(chǎn)能落后,生產(chǎn)成本高,環(huán)保指標(biāo)卻與1000Mw燃煤機(jī)組一致,這就導(dǎo)致其在電力市場上的競爭力大大落后,企業(yè)虧損,生存壓力大:同時(shí)也造成了企業(yè)在其技術(shù)升級改造方面,...
關(guān)鍵字: 關(guān)鍵詞 :摘要:介紹了利用視覺系統(tǒng)檢測電機(jī)端蓋沖壓生產(chǎn)質(zhì)量的方法,并將傳統(tǒng)的LAD語言設(shè)計(jì)方式優(yōu)化為SCL語言進(jìn)行設(shè)計(jì)。通過生產(chǎn)對比發(fā)現(xiàn),SCL語言在檢測過程中大大減少了PLC功能指令的使用,采用了直接尋址的方式,程序塊的編寫更具...
關(guān)鍵字: 關(guān)鍵詞 :摘要:sF6氣體的壓力值對于sF6斷路器的滅弧性能和絕緣性能有著非常重要的影響,一旦sF6氣體密度繼電器進(jìn)水發(fā)生誤動作,就會造成閉鎖斷路器分閘,從而引起電力設(shè)備事故事件,影響電力系統(tǒng)的安全穩(wěn)定運(yùn)行。鑒于此,在分析sF6氣...
關(guān)鍵字: 關(guān)鍵詞 :摘要:廣東河源地域?qū)拸V且屬山區(qū)城市,大部分變電站地處偏遠(yuǎn),通信設(shè)備依靠定期巡視會消耗大量人力、物力。動力環(huán)境監(jiān)測系統(tǒng)能夠?qū)崿F(xiàn)實(shí)時(shí)監(jiān)測機(jī)房環(huán)境、蓄電池電壓、蓄電池內(nèi)阻等功能,讓運(yùn)維人員及時(shí)發(fā)現(xiàn)異常,提高通信運(yùn)維效率。現(xiàn)提出...
關(guān)鍵字: 關(guān)鍵詞 :摘要:介紹了模糊預(yù)測控制的構(gòu)成與應(yīng)用,對地鐵自動控制系統(tǒng)、預(yù)測控制部分的算法進(jìn)行了設(shè)計(jì),并經(jīng)過系統(tǒng)仿真驗(yàn)證了模糊預(yù)測控制系統(tǒng)的可行性。
關(guān)鍵字: 關(guān)鍵詞 :摘要:設(shè)計(jì)了一種面向偏癱患者的外骨骼式步態(tài)康復(fù)訓(xùn)練機(jī)器人機(jī)構(gòu)。該機(jī)構(gòu)包括腋下支撐機(jī)構(gòu)、患肢側(cè)外骨骼機(jī)構(gòu)以及健肢側(cè)機(jī)構(gòu)。左腋下支撐機(jī)構(gòu)與右腋下支撐機(jī)構(gòu)結(jié)構(gòu)相同,腋下支撐部可以在水平方向和垂直方向進(jìn)行調(diào)整?;贾珎?cè)外骨骼機(jī)構(gòu)可...
關(guān)鍵字: 關(guān)鍵詞 :摘要:以AT89S51單片機(jī)為核心,設(shè)計(jì)了一種可脫機(jī)工作的數(shù)字芯片自動檢測裝置,可以自動檢測常用的74系列組合邏輯集成芯片的功能完整性。該檢測裝置系統(tǒng)由上位機(jī)和下位機(jī)組成,下位機(jī)以AT89S51單片機(jī)為核心,可獨(dú)立工作:...
關(guān)鍵字: 關(guān)鍵詞 :摘要:通過采用流體力學(xué)軟件STAR-CCM+對不同參數(shù)條件下的旋風(fēng)分離器油氣分離性能進(jìn)行數(shù)值模擬研究,發(fā)現(xiàn)隨著升氣管直徑減小、進(jìn)口寬度減小,旋風(fēng)分離器的油氣分離效率增加,并在一定范圍內(nèi)增加旋風(fēng)分離器分離空間的長度,有利于...
關(guān)鍵字: 關(guān)鍵詞 :摘要:在火力發(fā)電廠集控運(yùn)行工作中,事故工況下的鍋爐汽包水位控制往往是處理過程中的重點(diǎn),而汽包"虛假水位"的判斷和處理又是其中的難點(diǎn),一旦判斷錯(cuò)誤或者處理不及時(shí),就會引起汽包水位高保護(hù)或低保護(hù)動作,導(dǎo)致鍋爐MFT,嚴(yán)重時(shí)甚...
關(guān)鍵字: 關(guān)鍵詞 :摘要:口服液常用的包裝形式一般為玻璃瓶或塑料瓶,其中以玻璃瓶最為常見。隨著背封式條袋包裝的普及,市場上逐漸出現(xiàn)了條袋口服液包裝形式。鑒于此,針對玻璃瓶和條袋包裝這兩種包裝形式進(jìn)行綜合比較,以便企業(yè)選擇一種最佳的口服液包裝...
關(guān)鍵字: 關(guān)鍵詞 :