當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 《物聯(lián)網(wǎng)技術(shù)》雜志
[導(dǎo)讀]摘要:描述了基于SQLServerReportingServices的報(bào)表平臺的分析和設(shè)計(jì)方法。主要分析了其特點(diǎn),然后設(shè)計(jì)了一個(gè)基于ReportingServices的集成報(bào)表平臺。并給出了最后的集成效果。

基于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è)部分。

基于SQL Server Reporting Services的報(bào)表平臺分析與設(shè)計(jì)

第一部分是報(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所示。

基于SQL Server Reporting Services的報(bào)表平臺分析與設(shè)計(jì)

4結(jié)語

本文介紹了基于SQLServerReportingServices的報(bào)表平臺的設(shè)計(jì)方法及其特點(diǎn),然后設(shè)計(jì)了一個(gè)基于ReportingServices的集成報(bào)表平臺。并給出了最后的集成效果。

20211124_619e4cd5ad93a__基于SQLServerReportingServices的報(bào)表平臺分析與設(shè)計(jì)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

摘要:近年來,電力市場改革力度不斷加大,而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)鍵詞 :

《物聯(lián)網(wǎng)技術(shù)》雜志

2510 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉