报表没完没了怎么办

2023-10-17 12:18
文章标签 报表 没完没了

本文主要是介绍报表没完没了怎么办,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

应用系统软件项目中有一个普遍现象,就是报表总也做不完。不管是领导需要的宏观数据统计重点的变化,还是业务部门的计算口径的变化,都会造成报表需求的频繁变更。报表项目组就要不断修改现有报表,还会新增很多报表。润乾的很多用户提出,能不能发明一种软件工具,来解决报表永远做不完的问题?

从本质上说,报表本身就存在业务稳定性差的特点,这是造成报表开发没完没了的本质原因。也就是说,这个问题是需求频繁变化造成的,是一种常态。因此,要试图适应而不是解决这个问题,具体的办法就是建立长期应对机制。也就是说,在应用系统开发完成之后,保持最低成本的报表维护人员来解决报表需求的变更和新增。

如果能够不依赖于开发商的专业程序员来解决没完没了的报表需求,对于甲方和开发商而言,都是最佳方案。非专业的程序员,或者是甲方自己的技术人员兼职来做这件事,成本很低,可持续性却很高。

但是,要实现这样的长期机制,还有几个难题需要解决:

1、 由于有报表工具的支持,报表的呈现环节开发已经很容易了。但是,报表数据计算环节还需要编程序(Java、C#、复杂 SQL、存储过程等),是低成本维护人员很难完成的任务。
2、 开发商为报表的数据计算部分编写的代码,和应用系统的其他部分是耦合在一起的。一旦调整,还需要开发商的专业程序员才能解决。
3、 Java 等编程工具的环境配置复杂,低成本维护人员没办法自主完成。
4、 SQL 对于复杂计算实现起来是比较困难的,存储过程本身也比较难写,还需要较高的数据库权限,存在安全风险。遇到库外文件的情况,比如 Excel 等,SQL 和存储过程也没办法直接计算。

所以,建立长期机制必须要做到:

1、 报表开发要彻底工具化。不仅是呈现层的工具化,报表数据计算层也要工具化,降低对开发人员的要求。不必做复杂的环境配置(数据源等),也可以编写简单的代码来实现复杂计算。对于多样性数据源,比如 Excel、文本文件等,也必须支持简单脚本计算。

2、 报表模块要彻底独立化。数据计算层也要和呈现层一样,完全和应用系统解耦合,实现独立维护。报表需求变更和新增的时候,仅仅修改报表模块就可以了,不会影响应用系统其他部分。

有了报表工具,报表的呈现层已经可以做到工具化和独立化了。结合润乾的专业计算产品集算器,可以实现报表开发过程的彻底工具化和报表模块的彻底独立化,建立长期应对机制,完美解决报表没完没了的难题。

报表工具集合集算器的方案结构图如下:

bbmwml1

集算器可以降低报表后端计算的开发难度,彻底实现报表开发过程工具化。

集算器是一种高级语言,润乾公司提供了集算器的集成开发环境 IDE。类似于 Java 的集成开发环境 Eclipse,集算器的 IDE 也提供了调试执行、单步执行、设置断点等代码调试方式:

bbmwml2

图中的脚本,是从 oracle 数据库取部分的订单数据,和 Excel 中的部分数据合并分组汇总后过滤出订单金额小于 10000 的数据,返回给报表。从图中可以看到,集算器采用了过程计算编程方式,相比 SQL 无法严格分步骤写脚本的方式要更容易编写。有经验的程序员都知道,SQL 用来实现很零碎的多步运算很不方便,特别是与次序相关的运算,程序员常常要把数据从数据库中取出来用 Java 等完成。而集算器则正好在这方面做了强化,在分步计算、集合化、有序计算和对象引用等几方面做了完善,对于常用的日期和字串等运算,也比大部分 SQL 提供了更丰富的方法。B1 单元格只需要一个函数就可以读取 Excel 文件中的数据,这是 SQL 无法直接实现的。

Java 等高级语言没有提供批量数据计算的类库,写个简单的 SUM 也要好几行,更何况分组、连接等运算,而对于过滤、汇总用到的通用表达式计算,基本上是大多数应用程序员无法完成的任务了。而且 Java 其实也没有通行的结构化数据对象,只 JDBC 有个几乎没有计算能力的 ResultSet。直接用 Java 实现报表数据准备非常繁琐。集算器则提供了大量与结构化计算相关的基础对象和方法,分组汇总这些只要一句,而且是解析执行的动态语言,可以进行随意的表达式计算。使用集算器完成报表数据准备工作要比 Java 容易得多,代码也要短小很多,实现了复杂计算的简单开发。报表开发者只需要写脚本,不用管理数据连接等环境等等问题,可以实现非专业程序员、甚至用户自己的运维人员独立完成报表开发过程的目标。

集算器集成开发环境还提供了方便调试的功能。图中单击 A4 单元格,在 IDE 右边就可以所见即所得的看到 A4 的计算结果,非常有利于发现每个步骤的问题。IDE 下方可以直观的看到系统信息输出,随时查看脚本的异常。

集算器可以优化报表应用结构,使得报表模块可以独立维护,彻底实现独立化。

集算器可以降低与业务系统其他模块的耦合度。集算器编写的脚本是独立的 dfx 文件,不会和应用系统其他部分的 Java 程序形成耦合关系。这样就可以把报表模块单列出来,而不必和应用程序绑死在一起。独立的报表模块可以单独去维护,虽然业务稳定性差,但是频繁的修改不影响主应用程序。

计算方法的调整和报表模板的修改一样无需重启服务器,真正实现整个报表系统的热切换。因为报表系统业务不稳定造成的系统重启减少到零。

这样,从报表计算层到呈现层完全独立出来了。用报表工具修改报表模板,上传覆盖之前的模板即可;用集算器修改报表计算脚本文件,上传服务器,覆盖旧的脚本文件即可。因为和应用系统其他模块没有任何关系,所以无需开发商的专业程序员到现场修改。非专业程序员或者用户自己的维护人员就可以解决没完没了的报表难题。

详情链接:http://c.raqsoft.com.cn/article/1533893118261?r=gxy
 

这篇关于报表没完没了怎么办的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225318

相关文章

多线程解析报表

假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。 Way1 join import java.time.LocalTime;public class Main {public static void main(String[] args) thro

BIRT报表script

1.隔行高亮显示 1. 在布局(Layout)中,选择Table-Detail的行。如下图:   2. 然后选择Script,打开脚本窗口顶部的方法列表并选择onPrepare,如图所示。 var count=0;   3. 最后打开脚本窗口顶部的方法列表并选择 onCreate,如图所示: count++; if (count % 2 != 0) {   style.se

Birt报表开发实战

我就截图描述得了,没什么含金量,看图基本明白的。 1.开始 a.创建报表文件 b.数据源配置 c.配置数据集 2.网格报表 拖拉式操作,很方便 3.预览效果 其他报表的操作也基本不难,就不扯了! 2.级联参数 官方视频教程:http://demo.actuate.com/demos/cascade/cascade.html

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

十三、我们应当怎样做需求分析:查询报表分析

在我以往的用例分析中,使用这样格式的用例模式,对于大多数业务操作流程来说是得心应手的,但对于有些功能来说总感觉不对劲。感觉不对劲的,就是那些查询、汇总与报表功能。对于这部分功能,需要我们描述的不是什么操作流程,而更重要的是那些数据项、数据来源、报表格式、数据链接,以及使用者、使用频率的说明。而这些,在以往的用例说明格式中统统都没有,怎么办呢?俗话说“东西是死的人是活的”,把我们的用例格式改改吧。

Jasperreports+jaspersoft studio学习教程(八)- 报表分页和大量数据内存处理

9.1 设计报表模板 9.1.1 使用Table组件新建模板(步骤参考教程七)如下: 9.1.2 模板自带变量 $V{PAGE_NUMBER} :代表当前页数(可以是页码也可以是页数,通过TextField的计算时间的不同值来设置) $V{PAGE_COUNT} :当前页面中记录的数目 $V{groupname_COUNT} :   代表当前组的记录数 $V{COLUMN_NU

Jasperreports+jaspersoft studio学习教程(七)- 子报表Subreport(父子报表互相传值)

转载:https://blog.csdn.net/shiyun123zw/article/details/79221708 有很多人都说Jasperreports不适合中国式复杂报表,实际上运用好父子报表可以解决大部分问题了。例如下面的表。每个学生的学科数目不固定,且每个学生后有相当于小计的平均分。有点复杂度的报表,可以使用子报表解决。 8.1 设计报表模板 8.1.1 新建主模板De

报表生成---JFreeChart

JFreeChart 是一个开源的 Java 图表库,它提供了丰富的图表类型和灵活的定制选项,用于在 Java 应用程序中生成和显示图表。以下是 JFreeChart 的一些关键特点和功能: 多种图表类型:JFreeChart 支持多种图表类型,包括但不限于: 条形图(Bar charts)折线图(Line charts)饼图(Pie charts)散点图(Scatter plots)时序图(

VBA Excel 出报表

源数据 目标  PS:调休 以高亮颜色区分 整理一下 CMDBUT命令  VBA代码 Private Sub CommandButton1_Click()Dim ps As IntegerDim pe As IntegerDim srcs As IntegerDim srce As IntegerDim i As IntegerDim j As IntegerD