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的实 ...
随机推荐
- rip路由协议 细节分析及实例配置【完整版】
rip路由协议 细节分析及实例配置[完整版] RIP呢,这是一个比较重要的知识点,所以它的知识覆盖面很广泛:但是呢,我将会对碰到的问题进行一些分析解刨(主要是为了帮助自己理清思维):也希望能够从中发现 ...
- Python实现Windows定时关机
是最初的几个爬虫,让我认识了Python这个新朋友,虽然才刚认识了几天,但感觉有种莫名的默契感.每当在别的地方找不到思路,总能在Python找到解决的办法.自动关机,在平时下载大文件,以及跑程序的时候 ...
- 简学Python第六章__class面向对象编程与异常处理
Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...
- node.js下mongoose简单操作实例
Mongoose API : http://mongoosejs.com/docs/api.html // mongoose 链接var mongoose = require('mongoose'); ...
- Pycharm集成PyQt4并使用
- git clone操作到开发机的错误记录
在开发机上,执行操作 $ git clone https://github.com/xxx/rank.git 返回错误: error: The requested URL returned error ...
- Spring Boot 注解的使用
Spring Boot 优于Spring mvc ,SSM,SSH 的一个亮点就是他使用了好多的注解. 1. @Autowired 这个注解的作用是将其他的类,接口引入,类似于之前的类的初始化等,用这 ...
- js的几种简单排序算法及其效率实测
function swap(arr,index1,index2){ var t = arr[index1]; arr[index1] = arr[index2]; arr[index2] = t; } ...
- Jmeter添加监控指标
需要监控的机器上安装Server-Agency(需要java环境支持)把ServerAgent-2.2.1.zip拷到需要监控的机器上,解压Linux启动如下2. Jmeter上添加监控最终有如下指标 ...
- python 基础知识(待补充)
数据结构: python数据结构共包含四大类: 列表 列表是可变元素,支持增删改查操作 字典 字典是遍历,key:value 格式. 元组 元组数据不可变元素,仅仅有两个操作 index, coun ...