FineReport使用总结
一、常用函数和变量
1. 日期
1.1 now() 当前时间
1.2 today() 今天
1.3 格式化显示,插入公式 =format($$$,”yyyy年MM月dd日 HH:mm”),$$$表示当前值
2. 金额显示
2.1 添加条件属性
2.2 新值
2.3 公式 format($$$,”¥#,##0.00″)
3. 内置变量
3.1 $$page_number 当前页
3.2 $$totalPage_number 总页数
4. 单元格使用SQL函数取值
4.1 插入公式
4.2 示例 SQL(“yaoguang”,”SELECT COUNT(1) FROM `freight_sono`
WHERE BILLS_ID IN (‘”+REPLACE($ids,”,”,”‘,'”)+”‘) AND CONT_ID =
’20GP'”,1,1)
连接名 + SQL + 行 + 列
二、实际场景
1. url传参
1)查询数据集的时候需要动态参数,从url传参
原地址 + &参数名= xxx
示例:
地址 –> xxxxxx&ordersn=0123456789
取值 –> ${ordersn} // 加引号是因为bills_id是字符串类型

2) 单元格获取参数值 $ordersn

公式中不仅可以获取参数的值,也可以引用单元格的值(图中B5)。以及运用公式计算
3) 查询数据集时一个参数包含多个值
参数 –> ids=012,345,678
SQL –> SELECT GOODS_NAME FROM `freight_bills` WHERE id IN (${replace(“‘”+ids+”‘”,”,”,”‘,'”)})

这里在编写数据集查询的时候用到了replace函数,将传过来的每个id加上引号,最终拼成规范的SQL语句。
不同于公式,在数据集查询中使用函数需要用 ${ } 括起来。
2. 一个单元格取数据集中多个字段。
在此单元格同一个行中,表单外的其它列分别取出多个字段值,然后在单元格中插入公式,引用这些字段对应单元格的值。
示例:显示电话号码 / 手机,如果没有电话号码,显示 手机
IF(LEN(M11)>0,M11+”/”+N11,N11) // M11 电话号码 N11 手机
公式中可以拼接字符串

若需要跟随某个单元格过滤或者扩展,这个时候M11 和 N11单元格的父格子也需要做设置,这里与联系电话一致。
此时并不需要单独显示M11 和 N11的数据,可以使用条件属性将列宽设置为0,隐藏该列。

3. 序号跟随列表递增。 &单元格序号

显示结果为

&C11,并设置左父格为联系人,门点跟随联系人条数递增。
4. 根据日期数据不同显示不同格式的时间。
需求:当用户选择装卸日期只指定具体到几月几号。显示 yyyy年MM月dd日
若指定时间具体到时分,显示 yyyy年MM月dd日 HH:mm
用条件属性的方式。
分别添加两个条件属性,在满足不同条件的时候显示不同的字符串(时间)。条件属性可以添加多个
单元格取数据集的日期字段

5. 不同数据集的数据关联显示。
从同一个数据集取出的数据通过直接设置父格子将数据关联起来展示。
但是从不同数据集取出的字段,设置了父格也不会进行数据过滤,而是所有数据跟随每个父格重复显示。
这个时候可以使用过滤将数据关联起来。


这里过滤条件为设置的左父格的来源数据集的字段(相当于JOIN表),这样就可以跟随不同内容的父格子进行过滤。
6. 数据汇总
如费用之类,某列数据有多条,需要统计。如求和,平均,最大最小值。将此单元格数据设置成汇总。

往往很多时候,不能直接查询数据集的时候对数据进行筛选(可以用where进行部分筛选),或者某些限定条件要从别的数据集获取(而不用JOIN的方式)
需要对数据进行不同的汇总。示例:
需求:分别求多个工作单的达驳费、代收款、港杂费(同种费用都可以有多个),根据不同工作单号分行展示。

1) 查询 –> SELECT * FROM `account_fee` WHERE bills_id IN
(${replace(“‘”+ids+”‘”,”,”,”‘,'”)}) // 查出所有工作单的所有费用
2)添加过滤条件

根据不同的费用类型,应收or应付,核算对象,过滤出不同的费用。
3) 数据设置汇总
4) 合计: =SUM(M8) // 对M8这个列扩展出来的所有值求和
7. 单元格数据直接通过SQL查询
需求:统计多个工作单的指定类型货柜的柜量合计。

公式 –> SQL(“yaoguang”,”SELECT COUNT(1) FROM
`freight_sono` WHERE BILLS_ID IN (‘”+REPLACE($ids,”,”,”‘,'”)+”‘) AND
CONT_ID = ’20GP'”,1,1) + “20GP”
展示结果:

8. 分类分组查询,新建额外数据集。
需求:分别统计每个工作单的柜量柜型信息。
即使货柜数据集中已经有所有货柜信息了,但是要分单,分柜型统计并按一定格式展示,
我认为还是直接写一条SQL简单。

1)新建一个模板数据集,查询出每个单ID,该单对应所有柜型及数量。
SELECT BILLS_ID,COUNT(1),CONT_ID FROM `freight_sono` WHERE BILLS_ID IN (${replace("'"+ids+"'",",","','")}) GROUP BY BILLS_ID,CONT_ID
2)使用数据集的字段填充。柜量x柜型 –> COUNT(1) +“x”+CONT_ID
3)设置过滤属性。根据不同工作单ID进行过滤。从父格子的数据集取过滤字段
FineReport使用总结的更多相关文章
- FineReport关于tomcat集群部署的方案
多台服务器集群后,配置权限.数据连接.模板.定时调度等,只能每台服务器一个个配置,不会自动同步到所有服务器. 针对上述情况,在FineReport中提供新集群部署插件,将xml配置文件.finedb/ ...
- 如何给FineReport设置自定义消息提醒工具
FineReport设计器有自动的消息推送功能,可设置报表定时推送和常规的日报周报推送.官方有自己的消息推送的接口,不过有些用户旺旺希望自己开发,符合自己需求的推送界面. 下面这个方案就从逻辑层面简单 ...
- FineReport:任意时刻只允许在一个客户端登陆账号的插件
在使用FineReport报表系统中,处于账户安全考虑,有些企业希望同一账号在任意时刻智能在统一客户端登录.那么当A用户在C1客户端登陆后,该账号又在另外一个C2客户端登陆,服务器如何取判断呢? 开发 ...
- 如何开发FineReport的自定义控件?
FineReport作为插件化开发的报表软件,有些特殊需求的功能需要自己开发,开发的插件包帆软官方有提提供,可以去帆软论坛上找,本文将主要介绍如何开发一个自定义控件,这里讲讲方法论. 第一步:实例化一 ...
- FineReport如何用JDBC连接阿里云ADS数据库
在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...
- 如何利用FineReport制作动态树报表
在对数据字段进行分类管理时,利用动态树折叠数据是一个很好的方法,也就是点击数据前面的加号才展开对应下面的数据,如下图.那这样的效果在制作报表时该如何实现呢? 下面以报表工具FineReport为例介绍 ...
- Web报表工具FineReport的JS开发之字符串
在报表开发过程中,有些需求可能无法通过现有的功能来实现,需要开发人员二次开发,以FineReport为例,可以使用网页脚本.API接口等进行深入的开发与控制. 考虑到JS脚本开发的使用较多,这里先先简 ...
- Web报表工具FineReport填报界面键盘操作
对于一张填报数据较多的报表,需要用户频繁地操作鼠标.而FineReport填报界面除去按钮类型的控件,其余可以完全使用键盘而不需要用鼠标操作,对于用户而言,这将极大的节省信息录入的时间. 这里我们对填 ...
- FineReport制作可动态展开的组织递归树报表
先看看效果: 报表软件:FineReport 1.分析-与正常查询的对比 如果不做这种树状结构展开的报表的话,正常的SQL应该是这样写的,以单据表为例,假设单据的机构为分公司,经营部 select 分 ...
- 如何利用报表工具FineReport实现报表列的动态展示
相信动态列的实现困扰了很多人,大数据量,多字段的加载将会非常耗时,数据又做不到真正的动态灵活.现有的方式都是通过变向的隐藏等方式来实现. 那该如何解决呢?这里分享帆软报表设计器FineReport的实 ...
随机推荐
- Spring-boot中使用@ConditionalOnExpression注解,在特定情况下初始化bean
想要实现的功能: 我想在配置文件中设置一个开关,enabled,在开关为true的时候才实例化bean,进行相关业务逻辑的操作. 具体实现: 1:要实例化的bean 2. 配置类 代码: 想要实例化的 ...
- 前端资讯周报 3.13 - 3.19: WebVR来了!以及如何优化scroll事件性能
每周一我都会分享上一周我订阅的技术站点中,和解决问题的过程中阅读到的值得分享的文章.这是迫使我学习的一个动力 本周推荐 Minecraft in WebVR with HTML Using A-Fra ...
- quartz任务时间调度入门使用
Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现. 作为一个优秀的开源调度框架,Quartz 具有以下特点: 强大的调度功能,例如支持丰富多样 ...
- yii2.0使用之缓存
1.片段缓存(针对于视图中的某部分进行缓存): <?php 设置有效时间 $time=15; 缓存依赖,存入文件.当文件内容发生改变是才会刷新新内容 $dependecy=[ 'class'=& ...
- FDG内存分配器笔记
FDG: 大规模并行系统中的动态内存分配器由于需要全局同步(记账) ,导致性能急剧下降. 代码解析 1.superblock 类中包含两个变量,两个函数.默认superblock大小为2048 ite ...
- 免安装版Tomcat配置内存
去安装目录下 找 bin 目录找到这个文件 catalina.bat在文件的头部加上 set JAVA_OPTS=-Xms512m -Xmx512m -Xss1024k具体大小自己调整
- Docker remote API简单配置使用
1.启动docker remote API的方式如下: docker -d -H uninx:///var/run/docker.sock -H tcp://0.0.0.0:5678 2.但是为了伴随 ...
- Kafka-4614问题复盘 (MappedByteBuffer未关闭导致慢磁盘访问)
很早之前就想动笔就这个kafka bug总结一番了,只是这个问题既不是本人发现,也不是自己动手修复,终归是底气不足,故而一直耽搁下来.怎奈此问题实在是含金量十足,又恰逢最近有人询问Kafka 0.10 ...
- C++实现动态顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.这样的存储方式使得线性表逻辑上相邻的元素,其在物理存储单元中也是相邻的.只要知道了第一个元素的存 ...
- POPTEST老李分享session,cookie的安全性以及区别 2
四,session和cookie谁更安全 就个人而言,我觉得session更安全一点,我以下几点看法. 1,如果session和cookie一样安全的话,二者就没有并要同时存在了,只要cookie就好 ...