历史版本3 :公式不合法报错 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

函数计算格式 已经说明了在报表中使用函数的计算组成以及基础的计算语法,但有时用户也会遇到书写公式报错的问题,可根据提示完成公式的正确书写。

FineReport11.0 对公式的校验规则和报错提示进行了优化。

1.2 功能简介

本文将详细介绍运算符和表达式的语法,帮助用户了解公式校验方案,正确有效的写出需要的函数。

2. 具体函数类型不合法提示编辑

2.1 文本函数

函数 / 公式名
合法性说明
结果类型
不合法提示

CHAR

一个在[1-65535](闭区间)范围内的数值参数

文本

CHAR不符合 (一个[1-65535]的数值) 的参数要求

CODE

一个文本参数

数值

CODE不符合 (文本) 的参数要求

CONCATENATE

多个任意类型参数

文本

--

STARTWITH

两个任意类型参数

bool

STARTWITH不符合 (任意类型,任意类型) 的参数要求

ENDWITH

两个任意类型参数

bool

ENDWITH不符合 (任意类型,任意类型) 的参数要求

EXACT

两个任意类型参数

bool

EXACT不符合 (任意类型,任意类型) 的参数要求

FIND

第一个参数任意类型

第二个参数任意类型

第三个缺省参数数值

即:有2/3个参数均合法,3个参数时第三个参数必须为数值类型

数值

FIND不符合 (任意类型,任意类型) 或 (任意类型,任意类型,数值) 的参数要求


FORMAT

第一个参数为日期/数值/文本,第二个参数为文本

文本

FORMAT不符合 (日期/数值/文本,文本) 的参数要求

INDEXOF

两个参数,第一个为任意类型,第二个为数值

文本

INDEXOF不符合 (任意类型,数值) 的参数要求

LEFT

两个参数,第一个为任意类型,第二个为大于0的数值,可缺省

文本

LEFT不符合(任意类型) 或 (任意类型,数值) 的参数要求


RIGHT

两个参数,第一个为任意类型,第二个为大于0的数值,可缺省

文本

RIGHT不符合(任意类型) 或 (任意类型,数值) 的参数要求


LOWER

单文本参数

文本

LOWER不符合 (文本) 的参数要求

MID

第一个参数为任意类型,第二个,第三个为数值

文本

MID不符合 (任意类型,数值,数值) 的参数要求

REGEXP

两个参数或三个参数

两个参数时:

两个参数为文本

三个参数时:

前两个参数为文本,第三个参数为数值

BOOL

REGEXP不符合 (文本,文本)或(文本,文本,数值) 的参数要求


REPEAT

两个参数,第一个为任意类型,第二个为数值

文本

REPEAT不符合 (任意类型,数值) 的参数要求

REPLACE

  1. 三个参数都是任意类型

  2. 四个参数,第一个是任意类型,第二个第三个是数值,第四个是任意类型

文本

REPLACE不符合 (任意类型,任意类型,任意类型) 或 (任意类型,数值,数值,任意类型) 的参数要求

TODOUBLE

单任意类型参数

数值

TODOUBLE不符合 (任意类型) 的参数要求

TOINTEGER

单任意类型参数

数值

TOINTEGER不符合 (任意类型) 的参数要求

TOSTRING单任意类型参数文本TOSTRING不符合 (任意类型) 的参数要求

TRIM

单文本参数

文本

TRIM不符合 (文本) 的参数要求

UPPER

单文本参数

文本

UPPER不符合 (文本) 的参数要求

LEN

一个[文本、数字、数组]中任意单一类型参数

数值

LEN不符合 (任意类型) 的参数要求

LEN不符合(一个[文本、数字、数组]中任意单一类型)的参数要求

SPLIT两个任意类型的参数数组SPLIT不符合 (任意类型,任意类型)的参数要求

2.2 日期函数

函数 / 公式名合法性说明结果类型不合法提示
DATE

三个数值参数

日期DATE不符合(数值,数值,数值)的参数要求
DATEDELTA

两个参数

第一个日期或文本类型参数

第二个为数值类型参数

日期





#函数名#不符合(日期/文本,数值)的参数要求

MONTHDELTA

两个参数

第一个日期或文本类型参数

第二个参数为数值

时间
YEARDELTA

两个参数

第一个日期或文本类型参数

第二个参数为数值

日期
DATEDIF

三个或四个参数

三个参数时:

第一、二个日期或文本类型参数

第三个文本

四个参数时:

第一,二个日期或文本类型参数

第三个是文本

第四个是数值

数值DATEDIF不符合(日期/文本,日期/文本,文本)或(日期/文本,日期/文本,文本,数值)的参数要求
DATESUBDATE

三个参数

第一、二个日期或文本类型参数

第三个是文本

数值DATESUBDATE不符合(日期/文本,日期/文本,文本)的参数要求
DATETONUMBER一个日期或文本类型参数数值DATETONUMBER不符合(日期/文本)的参数要求
DAYVALUE一个日期或文本类型参数数值DAYVALUE不符合(日期/文本)的参数要求
DAYSOFMONTH一个日期或文本类型参数数值


#函数名#不符合(日期/文本/数值)的参数要求

DAYSOFQUARTER一个日期或文本类型参数数值
DAYSOFYEAR一个日期或文本类型参数数值
YEAR

无参或者一个参数或者两个参数

一个缺省日期、数值、文本类型参数

两个参数时为两个文本类型参数

数值

#函数名#不符合(无参) 或 (日期/数值/文本)或(日期/文本,文本)的参数要求

WEEK

一、二、三、四个参数均可

一个参数时(日期/数值/文本)

二个参数时为(日期/文本,文本)

三个参数时为(日期/文本,文本,文本)

四个参数时为(日期/文本,文本,文本,文本)

数值#函数名#不符合(无参) 或 (日期/数值/文本)的参数要求
DAY

无参或者一个参数或者两个参数

一个缺省日期、数值、文本类型参数

两个参数时为两个文本类型参数

数值#函数名#不符合(无参) 或 (日期/数值/文本)或(日期/文本,文本)的参数要求
HOUR

无参或者一个参数或者两个参数

一个缺省日期、数值、文本类型参数

两个参数时为两个文本类型参数

数值#函数名#不符合(无参) 或 (日期/数值/文本)或(日期/文本,文本)的参数要求
MINUTE

无参或者一个参数或者两个参数

一个缺省日期、数值、文本类型参数

两个参数时为两个文本类型参数

数值#函数名#不符合(无参) 或 (日期/数值/文本)或(日期/文本,文本)的参数要求
MONTH

无参或者一个参数或者两个参数

一个缺省日期、数值、文本类型参数

两个参数时为两个文本类型参数

数值#函数名#不符合(无参) 或 (日期/数值/文本)或(日期/文本,文本)的参数要求
SECOND

无参或者一个参数或者两个参数

一个缺省日期、数值、文本类型参数

两个参数时为两个文本类型参数

数值#函数名#不符合(无参) 或 (日期/数值/文本)或(日期/文本,文本)的参数要求
TIME

三个数值参数

时间#函数名#不符合 (数值,数值,数值)的参数要求

TODATE

  1. 单参,参数为数值或日期或者文本

  2. 两个参数全是文本

  3. 两个参数全是文本

时间TODATE不符合(日期/数值/文本) 或 (文本,文本)或 (文本,文本,文本)的参数要求
NOW无参时间NOW不符合(无参)的参数要求
TODAY无参
TODAY不符合(无参)的参数要求
WEEKDATE四个数值参数时间WEEKDATE不符合(数值,数值,数值,数值)的参数要求
WEEKDAY

一个日期或文本类型参数

数值WEEKDAY不符合(日期/文本)的参数要求

2.3 数学和三角函数

函数 / 公式名合法性说明返回类型公式不合法提示
PI一个数值类型参数,可缺省数值PI不符合(数值)或(空)的参数要求
CEILING










单数值参数










数值










#函数名#不符合(数值)的参数要求

Floor
INT
SQRT
LN
SQRT
ABS
ACOS
ASIN
ATAN
LOG10
SIN
TAN
COS
EXP
DEGREES
SIGN
RADIANS
RAND无参数值RAND不符合(无参)的参数要求
RANGE

1-3个数值参数

合法规则为0<参数个数< 3且参数为数值类型

数组RANGE不符合(数值,数值,数值)的参数要求
SUM无参数个数限制,任意类型数值
COUNT无参数个数限制,任意类型数值
MIN大于0个数值参数数值#函数名# 不符合所有参数为相同类型的要求
MAX
RANDBETWEEN

两个数值参数

数值

#函数名#不符合(数值,数值)的参数要求

MOD两个数值参数数值#函数名#不符合(数值,数值)的参数要求
POWER两个数值参数数值#函数名#不符合(数值,数值)的参数要求
ROUND

两个数值参数

三个参数:前两个数值,第三个布尔

数值#函数名#不符合(数值,数值)或(数值,数值,布尔)的参数要求
ATAN2两个数值参数数值#函数名#不符合(数值,数值)的参数要求
PROMOTION两个数值参数数值#函数名#不符合(数值,数值)的参数要求
LOG

第一个参数数值,第二个缺省数值

数值#函数名#不符合(数值,数值)或(数值)的参数要求
TRUNC

2.4 逻辑函数

注: 报表公式中没有数值与bool类型之间的转换,所以当前公式仅支持 bool 类型参数,不支持数字与 bool 类型的转换。

函数 / 公式名
合法性说明
结果类型
不合法提示
AND参数为bool类型或数值类型boolAND的参数类型必须为布尔类型或数值类型
OR参数为bool类型或数值类型boolOR的参数类型必须为布尔类型为bool类型或数值类型
IF

IF,三个参数,第二个和第三个参数为数值或文本类型,第一个为为bool类型(此处bool类型不包括数字)

返回结果参数中第一个非空的参数类型(第二个和第三个参数为返回值参数)

第一个参数不为bool类型时提示:IF表达式的第一个参数不符合布尔类型为bool类型

IF表达式第二、三个参数不为数值或文本类型时提示:IF表达式的结果类型必须为文本或数值类型

不满足三个参数个数时提示:IF表达式不满足3个参数的参数个数要求


SWITCH

参数个数至少3个,且结果参数类型一致

返回结果参数中第一个非空的参数类型(switch函数,第2n+1个参数是返回参数n>0)SWITCH表达式中的结果类型必须相同
REVERSE一个bool类型参数(只能是true或者false,不能用0/1代替)boolREVERSE不符合(bool类型)的参数要求
||,&&参数为bool类型或数值类型bool

#符号#只能连接两个布尔类型为bool类型或数值类型的表达式

2.5 数据集函数

函数/公式名
合法性说明
结果类型
不合法提示
SQL

三个或四个参

数前两个参数为字符型,后两个为整型,后两个参数可仅写一个

任意类型#函数名#不符合(字符,字符,整型,整型)的参数要求
ROW无参数数字#函数名#不符合ROW(无参)要求
MAP

四个参数:前两个参数是任意类型,第三、四个参数为数字或文本

任意类型#函数名#不符合(任意类型,任意类型,数字/文本,数字/文本)的参数要求

2.6 其他函数

函数 / 公式名
合法性说明
结果类型
不合法提示
ISNULL无参或单个任意类型参数boolISNULL不符合(无参)或(任意类型)的参数要求
NVL不限个数不限类型任意类型NVL不符合所有参数为相同类型的要求
INDEX不限参数类型和个数整数数值
EVAL不限类型数值
SEQ不限类型数值
UUID单个数值参数,可缺省文本UUID不符合(无参) 或 (数值)的参数要求

2.7 数组函数

函数 / 公式名
合法性说明
结果类型
不合法提示
ARRAY不限类型不限个数数组
INARRAY两个参数,第一个参数为任意类型,第二个参数为数组类型数值INARRAY不符合 (任意类型,数组)的参数要求
JOINARRAY两个参数,第一个参数为数组类型,第二个参数为任意类型数组JOINARRAY不符合 (数组,任意类型)的参数要求
INDEXOFARRAY两个参数,第一个参数为数组类型,第二个参数为数值类型任意类型INDEXOFARRAY不符合 (数组,数值)的参数要求
||,&&参数为bool类型或数值类型bool

#符号#只能连接两个布尔类型为bool类型或数值类型的表达式