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的实 ...
随机推荐
- C#全局鼠标键盘Hook
原文出自:http://www.cnblogs.com/iEgrhn/archive/2008/02/17/1071392.html using System; using System.Collec ...
- javascript . 05 json的组成、for...in 遍历对象、简单数据类型与复杂数据类型的传值与传址、内置对象
对象字面量 JSON var obj = { aaa :999}; var json={"aaa":999,"bbb":888}; "kay&quo ...
- ubuntu-terminal快捷键
常用快捷键功能:Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 Ctrl+d 删除当 ...
- JS调用WebService,发布到IIS,网页提示WebService未定义[已解决]
VS2013中,JS调用WebService,一直运行正常.部署到WindowsServer2008之后,在网页中访问,始终提示网页中有错误,点开之后发现是WebService未定义. 于是上网查解决 ...
- css实现下拉菜单
实现一个效果不难,难的是使用最少的代码实现一个效果 <!DOCTYPE html> <html lang="en"> <head> <me ...
- ecshop点滴记录
会员中心: 用户中心页面的内容分布在两个模板文件中: user_clips.dwt(包含:欢迎页.我的留言.我的评论.我的标签.收藏商品.缺货登记.添加缺货登 记.我的推荐.单个商品推荐) user_ ...
- 【HTML5】选项卡
效果图: HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- hive 动态分区数设置
当对hive分区未做设置时,报错如下: Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: ...
- 通过js获取元素css3的transform rotate旋转角度方法
我们再试用jquery获取样式的时候是通过$('domName').css('transform'):的方式来获取元素的css样式,但是通过它获取到的css3的transform属性是以矩阵的方式呈现 ...
- C/C++中数组与指针的关系探究
数组与指针 长期以来,在C/C++中,数组名和指向数组首元素的指针常量到底是以一种什么关系,一直困扰着很多人.很多地方,甚至是一些教科书中都在说,"数组名就是一个指向数组首元素的指针常量&q ...