历史版本20 :函数计算组成和语法 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

          FineReport 版本         功能变动
10.0-

1.2 功能简介

在设计模板时用户需要频繁的使用公式函数,例如:求和、求个数、做判断等等。

2. 函数组成编辑

函数计算由四个内容组成:

内容说明报表中显示
函数用于对字段中的值或成员进行转换的语句报表设计器中显示为蓝色
数据列数据表中的数据列报表设计器中显示为黑色
运算符运算的符号报表设计器中显示为浅黑色
文本表达式按照写入内容表示的常量值

报表设计器中

文本类型、时间类型(有双引号)显示为粉色

数值类型显示为紫色

例如,使用内置数据集「销量」,对不同地区销量高低做判断。

将「地区」字段拖入 A2,将「销量」字段拖入B2,并设置「销量」展示方式为求和,然后对不同地区的销量情况进行求和,如下图所示:

选择「单元格元素>插入公式」,弹出公式定义框,输入公式:if(B2>8000,"高销量","低销量"),即进行判断,如果销量大于 8000,则定义为高销量,否则定义为低销量,如下图所示:

输入的计算内容说明如下所示:

内容
说明
函数IF
数据列

B2

运算符详情参见:操作符
文本表达式

字符串文本:"高销量"、"低销量"

数字文本:8000

然后点击「检查合法性」进行公式校验,如下图所示:

完成后即可进行报表的预览,查看公式输出结果。

3. 支持的使用位置编辑

3.1 在公式编辑框中使用函数

FineReport 中可以使用「公式编辑器」的位置有如下几个:

使用位置图示
条件属性 

示例:隔行/列设置背景色

数据字典

示例:数据字典 2.4 节

筛选过滤

填报设置提交条件


图表标题
图表轴定义


定义图表单元格数据源
报表页眉与页脚
单元格内容提示

3.2 在 SQL 编辑框中使用函数

3.2.1 SQL 中使用普通函数

在 SQL 中使用公式,可以将公式放在 ${} 中,例如参数为空返回全部的 sql 语句:

SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}

参数/公式说明
area 和 province自定义的参数
if(len(area) == 0,"","and 货主地区 = '" + area + "'")

如果len(area)!=0,即 area 参数不为空,比如说 area 的值为华东,那么 IF 语句的执行结果为and 货主地区='华东',然后再把这句话拼接到 SQL 语句当中,SQL 语句就变成:

SELECT * FROM 订单 where 1=1 and 货主地区='华东' and 货主省份='江苏'

3.2.2 SQL 中使用 SQL 函数

SQL 语句其实是字符串。因此可以从数据库调用一个 SQL 语句作为字符串进行取数。此时即用到 SQL函数,例如公式:

=sql("FRDemo","SELECT * FROM 销量 ",1,1) 输出结果为华东

同时也可以把这个字符串用在 SQL 公式中作为字符串执行,因此创建数据集时可以定义为:SELECT * FROM  where 地区='${sql("FRDemo","SELECT * FROM 销量 ",1,1)}'

也就是 SELECT * FROM  where 地区='华东'

3.3 在 JS 编辑框中使用函数

作为一款 B/S 产品,browser 端的 JavaScript 是必不可少的。

如何在 JS 编辑框中使用公式详情参见:在JS中使用FR公式