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

基于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ā)布;另一方面,從靈活性上面考慮,通過報表配置,支持在應用程序中加載擴展的報表,也支持只加載部分已定義的報表。所以報表體系架構應分為三個部分。

基于SQL Server Reporting Services的報表平臺分析與設計

第一部分是報表配置,支持開發(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所示。

基于SQL Server Reporting Services的報表平臺分析與設計

4結語

本文介紹了基于SQLServerReportingServices的報表平臺的設計方法及其特點,然后設計了一個基于ReportingServices的集成報表平臺。并給出了最后的集成效果。

20211124_619e4cd5ad93a__基于SQLServerReportingServices的報表平臺分析與設計

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

摘要:近年來,電力市場改革力度不斷加大,而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è)選擇一種最佳的口服液包裝...

關鍵字: 關鍵詞 :

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

2511 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉