基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 处理报表

报表系统介绍

         我们都知道,在信息系统开发过程中,报表占据着很重要的位置,业务运营数据最后给领导的反应就是那么几张综合的业务数据报表,在如何选择一个合适的报表系统也让很多开发员纠结,AgileEAS.NET平台采用了基于RDL语言的开源报表系统fyireporting,最早基于其2.X版本进行了中文化并和AgileEAS.NET进行集成,到目前为止AgileEAS.NET平台中集成的是3.96版本,下面展示一下报表在AgileEAS.NET中的一个呈现:

         AgileEAS.NET平台对于fyireporting开源项目,只采用了其中的RdlEngine,RdlViewer和ReportDesigner三个项目,对报表设计器和引擎做了如下修改:

         1.修改了Excel导出的问题,因为在应用中有大量的需求需要导出报表并要求和打印样式匹配:

         2.修改了PDF文件导出中文的问题。

         3.中文化。

         4.打印的走纸控制,在企业应用中,特别是窗口服务应用的同一打印机打多咱票据的打印走纸控制。

         同时,我对fyireporting报表与AgileEAS.NET进行了集成,增加了报表设计器可以根据ORM实体对象创建报表的设计极报表呈现与ORM实体的数据绑定。

制作报表

         AgileEAS.NET平台设计器提供一个非常方便的可以化报表设计器,fyireporting原版本的报表设计器只提供了基于数据库连接的报表设计器,我增加了一个方法,基于AgileEAS.NET平台的ORM数据对象进行报表设计,整合了ORM与报表,下面看看新建一个与数据库相关的报表:

         首先设置连接:

         选择数据库表或者编写报表的查询语句:

         确定之后使用报表设计器设计报表:

         预览报表:

         AgileEAS.NET平台同时提供了一个不需要数据库连接而是基于AgileEAS.NET平台中的ORM对象设计报表的方法,我们来看一下设计过程:

         首先选择ORM对象的组件及ORM表对象:

         确定之后使用报表设计器设计报表:

报表集成

         AgileEAS.NET平台在报表的部署上采用了集成部署的思路,即设计好的报表定义存储在数据库中,客户端在使用中读报表定义并缓存在客户端,平台中增加了一个报表管理的应用插件报表管理:用于管理系统中的所有报表。

         开发人员可以使用独立的报表设计器设计好报表,然后在报表管理中新建一个报表并且导入报表定义。

         新建报表:

         导入报表定义,可以根据设计好的报表定义文件导入,也可以直接从报表设计器Copy报表定义源码:

         开发员人也可以直接使用集成的报表设计器进行报表设计:

         报表管理模块集成的报表设计器是一个相独立的报表设计器相比更加简洁,这个报表设计器不像独立的报表设计,最后把结果保存到报表定义文件,而是直接保存到AgileEAS.NET的报表定义数据库中。

程序中使用报表

         AgileEAS.NET平台提供了一个报表打印/预览控件与报表打印/预览窗口,开发人员可以根据需要情况弹出的打印窗体还是使用可以嵌入在应用界面中的打印控件。

         因为报表定义是在数据库中,所以在报表打印前需要赋予报表打印控件报表定义和报表的数据源,我们在平台的报表管理中定义了一个IRportEx接口,用于存储报表定义,下面演示一个使用弹出窗体的报表打印例子:

             //报表对象
             IReportEx report = DALHelper.DALManager.CreateReportEx();
             report.Session = ContextHelper.Session;
             report.Name = "诊疗项目列表";
             report.Refresh();
             //绑定到报表的数据对象(ORM表对象)
             IItemInfoPrintList pl = this.itemList.GetPrintList();
             //打印对话框
             RDLViewDialog printForm = new RDLViewDialog();
             //绑定报表定义
                 printForm.Report = this.Report; 
             //绑定打印数据
             printForm.DataObject = pl;
             //预览打印
             printForm.PrintPreview();

以上代码效果如下图:

             使用AgileEAS.NET平台提供的报表打印控件的使用方法同弹出式打印窗口,代码如下:

             //报表对象
             IReportEx report = DALHelper.DALManager.CreateReportEx();
             report.Session = ContextHelper.Session;
              report.Name = "演示报表";
             report.Refresh();
             //绑定到报表的数据对象(ORM表对象)
             IIteminfoList dataList =
             EAS.Exam.DAL.Interface.DALHelper.DALManager.CreateIteminfoList();
             dataList.Session = ContextHelper.Session;
             dataList.GetIteminfoList(string.Empty, this.tbName.Text);
             //绑定报表定义
             this.reportViewer.Report = this.Report; 
             //绑定打印数据
             this.reportViewer.DataObject = pl;

             以上代码执行效果如下图:

             在AgileEAS.NET平台的应用项目开发中,我们建设使用这种模式的报表开发,简单、直观,在我们的开发实践中,我们也可以使用这种方式代替数据查询模块。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

【翻译】用SettingContent-ms绕过ASR和Office2016的OLE阻止功能执行命令

原文链接:https://posts.specterops.io/the-tale-of-settingcontent-ms-files-f1ea253e4d3...

12930
来自专栏Debian社区

Qt 5.9.4 正式发布:包含近 200 项 Bug 修复

Qt 5.9.4 已正式发布,这是继 5.9正式版 之后的第四个维护版本,未添加任何新功能,但提供了大量的 Bug 修复和性能改进。

17520
来自专栏施炯的IoT开发专栏

Skyfire-在移动设备上体验silverlight的效果

    Silverlight for mobile还未正式release,相信大家会比较期待。但是,大家就可以通过skyfire beta来体验silverl...

19970
来自专栏张善友的专栏

基于Wolfpack开发业务监控系统

一般情况下,由于服务器环境或者程序漏洞的问题,现行的系统多多少少会发生一些异常或者bug,给用户体验甚至利益造成影响。而现在的第三方监控工具大多是关于服务器硬件...

22960
来自专栏FreeBuf

漏洞预警 | Windows系统恶意软件防护引擎曝严重远程代码执行漏洞(CVE-2017-0290)

微软昨天发布了安全公告——微软自家的恶意程序防护引擎出现高危安全漏洞。影响到包括MSE、Windows Defender防火墙等在内的产品,危害性还是相当严重的...

25180
来自专栏CSDN技术头条

RebornDB:下一代分布式Key-Value数据库

现实世界有许多的Key-Value数据库,它们都被广泛应用于很多系统。比如,我们能够用Memcached数据库存储一个MySQL查询结果集给后续相同的查询使用,...

335100
来自专栏海纳周报

Java线程模型

大家新年好。2018年的第一期来得晚了一些。因为年底有很多工作要做,加班多了一些,公众号停更了两周。 今天借着知乎上一个关于线程模型的问题,我正好可以讲一下Ja...

418110
来自专栏北京马哥教育

成吨提高开发效率的终极武器——自己开发workflow

之前我写过一篇关于提高 Mac 开发效率的文章,里面介绍了很多大幅度提升Mac开发效率的方法,遗憾的是那篇文章里并没有介绍 Alfred 这款神器。 然而转念一...

32840
来自专栏phodal

\b深入浅出全栈工程师: 提高效率的工具

节选自《Growth: 深入浅出全栈工程师》 在提交效率的N种方法里:有一个很重要的方法是使用快捷键。熟练掌握快捷键可以让我们随着自己的感觉编写程序——有时候如...

20760
来自专栏彭湖湾的编程世界

【Atom】在一个中/大型项目中,那些好用而强大的atom功能

作为一个学生党,一开始使用atom时候并没有意识到atom一些小功能的巨大作用,直到自己实习参与了项目,才知道这些功能在一个项目中是能极大提高工作效率的开发利器...

195100

扫码关注云+社区

领取腾讯云代金券