扫描二维码
随时随地手机看文章
基于SQLServerReportingServices的报表平台分析与设计
摘要:描述了基于SQLServerReportingServices的报表平台的分析和设计方法。主要分析了其特点,然后设计了一个基于ReportingServices的集成报表平台。并给出了最后的集成效果。
关键词:报表;ReportingServices;平台分析
0引言
MicrosoftSQLServerReportingServices是一种基于服务器的新型报表平台,可用于创建和管理包含来自关系数据源和多维数据源的数据表格报表、矩阵报表、图形报表和自由格式报表。同时可以通过基于Web的连接来查看和管理创建的报表。
SQLServerReportingServices的特点
SQLServerReportingServices主要有两个特点。第一是ReportingServices具备完善的访问异种数据库系统的功能。报表平台需要从不同的系统平台中抽取数据,而SQLServerReportingServices可通过OLEDB访问其它类别的数据库,对于报表平台来说,这是最基本、也是最重要的一个功能需求。通过它可以方便的从各个不同的应用平台进行数据的抽取,而不用再单独购买其它的数据转换工具;第二是其报表格式、查看方式多样,符合日常报表使用习惯。报表除了打印的需求外,也需要转换为Excel电子表格、HTML、XML、Word、PDF等不同的格式电子文档,以方便传递、保存、存档。SQLServerReportingServices可以通过SOAP、Web、特定终端等多种方式访问,同时报表格式的兼容性方面SQLServerReportingServices非常完善,可以解决目前报表提取工作所面临的困难。
ReportingServices报表平台的设计
2.1总体设计
图1所示是本设计的报表体系架构的结构图。
报表体系架构的设计主要从两方面考虑:一方面是应当支持远程ReportServer服务器的报表文件和项目内嵌的报表文件,同时支持两种方式的发布;另一方面,从灵活性上面考虑,通过报表配置,支持在应用程序中加载扩展的报表,也支持只加载部分已定义的报表。所以报表体系架构应分为三个部分。
第一部分是报表配置,支持开发人员和实施人员通过可视化的界面,配置系统的各个模块的报表,可以动态定义使用和不使用标准的报表,支持实施人员可以动态加载新报表。
第二部分是报表引擎,也是报表体系架构的核心,主要完成以下四个功能:
(1)通过配置的报表的编码,获取配置的报表信息;
(2)从配置的报表信息中获取报表的文件,支持本地项目的报表文件和远程ReportServer的报表文件;
(3)通过配置报表的参数,与应用程序的上下文获取参数的值;
(4)主要针对本地项目的报表文件,初始化报表的数据源,支持从数据库、程序集和Web服务中获取数据,并与报表模板结合展现数据。
第三部分是报表界面组件,支持与界面集成,展现数据。并支持报表的打印和导出。
2.2详细设计
详细设计主要是完成报表控制器的设计,建立报表页面与报表服务器之间的桥梁,本文主要介绍通过ASP.NETMVC
来设计报表引擎。
首先需要在Web.config文件中添加配置节,以配置报表服务器路径。
在<appSettings>配置节添加下列配置:
<!--报表服务器路径-->
<addkey="ReportServerUrl"value="http://127.0.0.1/
reportserver"/>
在<httpHandlers>配置节添加下列配置
<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>配置节添加下列配置
<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=”OT.Core”
%>
<%@ImportNamespace=”OT.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(“报表引擎未实例化,请
联系管理员或重新登陆");
}
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”);
//给
报表设置参数
ViewData[“Reports”]=reports;
Session[“Report.ReportEngine”]=Engine;
//将
报表引擎传给报表的展示页面。
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报表集成
报表集成方式通过脚本添加如下函数:
functiononPrintClick(
code,name)
{
jOpf.addTab(name,
“
/Common/Report/
ReportViewer?code=”
+code,
“”);
}
集成后的效果如图2所示。
4结语
本文介绍了基于SQLServerReportingServices的报表平台的设计方法及其特点,然后设计了一个基于ReportingServices的集成报表平台。并给出了最后的集成效果。
20211124_619e4cd5ad93a__基于SQLServerReportingServices的报表平台分析与设计
摘要:近年来,电力市场改革力度不断加大,而135Mw燃煤机组产能落后,生产成本高,环保指标却与1000Mw燃煤机组一致,这就导致其在电力市场上的竞争力大大落后,企业亏损,生存压力大:同时也造成了企业在其技术升级改造方面,...
关键字: 关键词 :摘要:介绍了利用视觉系统检测电机端盖冲压生产质量的方法,并将传统的LAD语言设计方式优化为SCL语言进行设计。通过生产对比发现,SCL语言在检测过程中大大减少了PLC功能指令的使用,采用了直接寻址的方式,程序块的编写更具...
关键字: 关键词 :摘要:sF6气体的压力值对于sF6断路器的灭弧性能和绝缘性能有着非常重要的影响,一旦sF6气体密度继电器进水发生误动作,就会造成闭锁断路器分闸,从而引起电力设备事故事件,影响电力系统的安全稳定运行。鉴于此,在分析sF6气...
关键字: 关键词 :摘要:广东河源地域宽广且属山区城市,大部分变电站地处偏远,通信设备依靠定期巡视会消耗大量人力、物力。动力环境监测系统能够实现实时监测机房环境、蓄电池电压、蓄电池内阻等功能,让运维人员及时发现异常,提高通信运维效率。现提出...
关键字: 关键词 :摘要:介绍了模糊预测控制的构成与应用,对地铁自动控制系统、预测控制部分的算法进行了设计,并经过系统仿真验证了模糊预测控制系统的可行性。
关键字: 关键词 :摘要:设计了一种面向偏瘫患者的外骨骼式步态康复训练机器人机构。该机构包括腋下支撑机构、患肢侧外骨骼机构以及健肢侧机构。左腋下支撑机构与右腋下支撑机构结构相同,腋下支撑部可以在水平方向和垂直方向进行调整。患肢侧外骨骼机构可...
关键字: 关键词 :摘要:以AT89S51单片机为核心,设计了一种可脱机工作的数字芯片自动检测装置,可以自动检测常用的74系列组合逻辑集成芯片的功能完整性。该检测装置系统由上位机和下位机组成,下位机以AT89S51单片机为核心,可独立工作:...
关键字: 关键词 :摘要:通过采用流体力学软件STAR-CCM+对不同参数条件下的旋风分离器油气分离性能进行数值模拟研究,发现随着升气管直径减小、进口宽度减小,旋风分离器的油气分离效率增加,并在一定范围内增加旋风分离器分离空间的长度,有利于...
关键字: 关键词 :摘要:在火力发电厂集控运行工作中,事故工况下的锅炉汽包水位控制往往是处理过程中的重点,而汽包"虚假水位"的判断和处理又是其中的难点,一旦判断错误或者处理不及时,就会引起汽包水位高保护或低保护动作,导致锅炉MFT,严重时甚...
关键字: 关键词 :摘要:口服液常用的包装形式一般为玻璃瓶或塑料瓶,其中以玻璃瓶最为常见。随着背封式条袋包装的普及,市场上逐渐出现了条袋口服液包装形式。鉴于此,针对玻璃瓶和条袋包装这两种包装形式进行综合比较,以便企业选择一种最佳的口服液包装...
关键字: 关键词 :