实现报表与算法的统一管理

在报表项目中,常常有些复杂的数据计算是一个报表专门使用的,其它报表用不到。通常,此类计算可以在报表数据源中用 SQL 实现,不过由于 SQL 无法分步计算,需要写非常复杂难懂的长语句,不利于调试和维护,因此也会使用 Java 或者存储过程来实现。但这样一来,计算程序又会和报表模板分开,不利于组织管理。

使用润乾报表的脚本数据集(结合集算器实现)来实现报表专用计算,是解决上述困境的一个有效手段,一方面既可以写出简单易懂的分步计算脚本,另一方面又可以将脚本和报表模板一起存放,利于管理。

这两种方式的系统结构对比如下图所示:

下面通过一个具体的报表例子来看一下润乾报表脚本数据集的用法。

下表是一个《年度客户销售分析报表》,要求可以选择年份作为输入参数:

其中,CLIENT 是客户,TOTAL 是客户销售总额,DATE1 是客户最后一次销售日期,AMOUNT1 是客户最后一次销售金额,DATE2 是客户倒数第二次销售日期,AMOUNT2 是客户倒数第二次销售日期。

1、定义报表参数

在润乾报表中新建报表模板后,要定义报表参数:

2、配置脚本数据集

定义一个脚本数据集如下:

脚本数据集编写如下:

  A B
1 =create(client,total,date1,amount1,date2,amount2)  
2 =demo.query(“select * from sales where year(ORDERDATE)=”+year)  
3 =A2.group(CLIENT)  
4 for A3  
5   >client=A4.m(1).CLIENT
6   >total=A4.sum(AMOUNT)
7   =A4.sort(ORDERDATE:-1)
8   >date1=B6.m(1).ORDERDATE
9   >amount1=B6.m(1).AMOUNT
10   >date2=B6.m(2).ORDERDATE
11   >amount2=B6.m(2).AMOUNT
12 result A1  

代码说明:

A1:新建一个空序表,准备存放结果数据。

A2:使用报表的数据源 demo 用简单的 sql 取出销售数据,year 是报表的参数。

A3:对销售数据按照 CLIENT 分组。

A4:开始对分组数据循环处理。

B4:-B11:求结果数据,插入 A1 中,这里不再详细介绍。

A12:将结果数据 A1 返回给报表。

3、报表设计

回到报表设计器主界面,报表设计如下图:

保存为 salary.rpx 即可。可以看到报表设计、计算脚本编写都在同一个 rpx 文件中,管理变得简单。

原文地址:https://www.cnblogs.com/shiGuangShiYi/p/12116091.html

时间: 2024-10-02 22:20:05

实现报表与算法的统一管理的相关文章

React:将html元素统一管理

写React组件,基本上使用jsx文件,在render方法中返回html节点.然而,在jsx中的html标签中的js代码,只能是简单运算,对象,或函数调用,并不支持if-else或for-while等结构,因此,有时我们需要根据条件决定不同元素,或决定是否显示某元素时,不得不将这段代码抽到render-return以外,如此,程序虽然可以运行,代码上却破坏了html骨架结构,不便于样式控制和直观理解.这里介绍几种方法解决此问题,使得所有html元素在一处得到统一管理. 1 简单if-else 可

数据统一管理--企业决策分析之刚需

一个企业往往具有多个信息系统,系统间相互独立,这就容易造成“信息孤岛”的问题:难以将多个系统的数据汇集,通过数据分析来全面了解公司的运营状况.尤其是对经营跨度大.环节多的公司更是深有体会. 针对这个问题,这里我们分享茜子公司的解决案例,原文是深圳茜子饰品有限公司信息总监徐涛在帆软大数据巡展上的演讲. 数据统一管理成紧迫需求 茜子(SHE’S)公司是一家以发饰为主,涵盖围巾.帽子.太阳镜.精品等时尚饰品的公司,采用设计-生产-销售一条龙的销售模式.销售除了自营门店还包括网络上的网销部分和加盟商,在

如何统一管理不同类型的终端设备?-Part 2

如何统一管理不同类型的终端设备?-Part 2无论您从事什么行业,IT管理已成为每个业务生态系统中必不可少的部门.IT管理工作者需要做大量的工作来保障和维护服务器.计算机.智能手机.平板电脑.iPad.物联网设备.虚拟机等.技术人员就像木偶操纵者,统一从一个位置控制和操纵所有这些设备,这就是统一终端管理(UEM)生态系统至关重要的原因.什么是统一终端管理?统一终端管理是指从统一控制台管理和保护组织的所有服务器和设备的过程.统一终端管理集合了企业移动管理(EMM).移动设备管理(MDM)和客户端管

玩转mongodb(九):通过log4jmongo来实现分布式系统的日志统一管理

背景 在分布式系统中,我们有多个web app,这些web app可能分别部署在不同的物理服务器上,并且有各自的日志输出.当生产问题来临时,很多时候都需要去各个日志文件中查找可能的异常,相当耗费人力.日志存储多以文本文件形式存在,当有需求需要对日志进行分析挖掘时,这个处理起来也是诸多不便,而且效率低下. 为了方便对这些日志进行统一管理和分析,我们可以将日志统一输出到指定的数据库系统中,再由日志分析系统去管理.由于这里是mongodb的篇章,所以主观上以mongodb来做日志数据存储:客观上,一是

【视频分享】Liger UI实战集智建筑工程管理系统配商业代码(打印报表、角色式权限管理)

QQ 2059055336 课程讲师:集思博智 课程分类:.net 适合人群:中级 课时数量:23课时 用到技术:Liger UI框架.AJAX.JSON数据格式的序列化与反序列化.角色的交叉权限管理 本课程代码为商业版代码,用户可直接部署运行. 一.系统介绍: 集智建筑工程管理系统是专为建筑类企业打造的一款管理软件.本着"一工程一台帐"的原则,加强对工程的资金管理,解决工程技术部门.工程管理部门.财务部之间数据的共享,方便领导查询工程进度与回款情况,更好的进行查询统计,提供多种统计图

Android Studio中Gradle统一管理版本号引用配置

Gradle统一管理版本号引用配置 为了提高项目开发效率,在实际项目开发过程中往往会引入一些开源框架,还有项目中使用的各种module,moudle过多时最好提供一种统一的方式去管理版本号,如:compileSdkVersion.buildToolsVersion.androidTestCompile 等,便于日后对版本号进行维护,此处记录2种方式处理上述问题. 方式一 1.在项目根目录下创建.gradle文件,如:config.gradle 2.在根目录下的build.gradle文件中引入我

用slf4j统一管理日志总结

参考网页:http://www.slf4j.org/ 一.使用slf4j统一管理并配置统一使用log4j日志 使用的jar:(slf4j-api-1.7.5.jar,jcl-over-slf4j-1.7.5.jar,jul-to-slf4j-1.7.5.jar,slf4j-log4j12-1.7.5.jar,log4j-1.2.12.jar) 因为项目中多个框架使用不同的日志或者现在修改以前项目中的日志框架改用另一种日志,所以使用slf4j统一管理日志会比较方便. 1.slf4j是一个接口标准.

域环境下利用组策略实现统一管理

域环境下利用组策略实现统一管理 1)   组策略配置 准备工作: 域控---新建---组织单位 Network 添加账户hansongwei 新建组策略对象 注:win 2003与win 2008 的区别 Win 2003[管理工具][Directory Active 用户和计算机]选择整个域或者某个组织单位,右键单击,[属性]---[组策略] Win2008  [管理工具][组策略管理] 本实例以win 2003为例 新建---组策略对象 networkGPO 编辑 networkGPO 做相

使用数据库统一管理ssh登陆用户密钥信息

使用数据库统一管理ssh登陆用户密钥信息 需求是由一个开发部门提出的,他们需要在他们的测试服务器上开放root权限给所有的开发人员,同时要给每个开发人员配置无密码登录,由于使用ssh默认的认证文件存储公钥不方便人员信息的管理(例如一个人离职后不方便在大量的key中找到他的key,且需要在大量的服务器上全部删除). 基于上述需求,我们决定将所有人员的key和其对应的fingerprint保存在数据库中,而且每个fingerprint都对应一个真实用户名,在用户登录的时候,虽然都是使用root用户登