20.9 其他函数

Case

函数说明:
一个条件函数,它的参数个数为2*n+1,n>=1。其中2n个参数为条件表达式,执行结果为true、false。从第一个条件开始,如果为true就返回它后边的值;否则判断下一个条件;如果所有条件为false,则返回最后一个参数的值。
函数语法:
Case(expression1,value1[,expression2,value2[…]],default)
参数说明:

名称 数据类型 说明 是否必需
expression1 布尔表达式 数据集名称,常量需要用英文单引号包围,如’ds1’
value1 值表达式 布尔表达式1为ture时候返回value1值
default 值表达式 布尔表达式都为false时候返回的默认值

返回值:
任何Report30支持的基本数据类型。
示例:
a1单元格值为0时返回male,为1时返回female,否则返回unknow:

Case(a1=0, ‘male’,a1=1, ‘female’, ‘unknow’)

EAPCodeList

函数说明:
返回符合条件的Code名称。它的参数个数为2,第一个参数为code类别,第二个参数为code值,这个函数是与EAP集成是使用的,依赖于EAP环境。
函数语法:
EAPCodeList(codeKind, codeValue)
参数说明:

名称 数据类型 说明 是否必需
codeKind 字符串 Code类别
codeValue 字符串 Code值

返回值:
code名称。
示例:
得到CBAC011类的值为1的code名称:

EAPCodeList(‘CBAC011’, ‘1’)

Decode

函数说明:
与case函数相似,也是返回符合条件的值,没有符合条件的返回缺省值。不同的是,decode是对第一个参数求值后,与后边的参数中比较,相同返回下一个值,否则返回缺省值。
函数语法:
Decode(target, refer1, value1[,fefer2, value2[…]], default)
参数说明:

名称 数据类型 说明 是否必需
target 表达式 参数比较的基数
refer 整型 与基数进行比较的值
value 字符串 可能的返回值
default 字符串 缺省值

返回值:
任何Report30支持的基本数据类型。
示例:
a1单元格值为0时返回male,为1时返回female,否则返回unknow:

Decode(a1,0, ‘male’,1, ‘female’, ‘unknow’)

Index

函数说明:
取得集合中第N个元素的值。
函数语法:
Index(collection_value, n)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等
n 整型 索引值

返回值:
集合中第N个元素的值(N为负数则表示倒数第N个元素的值)。如果collection_value为空,或者n大于collection_value的长度,返回NullDataValue。
示例:
返回select结果中的第1个:

Index(select(‘ds1’, ‘city’),1)

Indexof

函数说明:
求某个元素在集合中的索引值。
函数语法:
IndexOf(collection_value, object )
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等。
object 不限 任何Report30支持的变量

返回值:
Object在collection_value中的索引值,索引从0开始;如果Object不在collection_value中,返回-1;如果collection_value为空也返回-1。
示例:
得到select结果中“大连”的索引值:

IndexOf(select(‘ds1’, ‘city’), ‘大连’)

SortedIndexOf

函数说明:
求某个元素在排序后的集合中的索引值。
函数语法:
SortedIndexOf(collection_value, object, isAsc, key)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等。
object 不限 任何Report30支持的变量
isAsc 布尔型 指定集合的排序方式是否为升序,true为升序,false为降序
key 字符串 为提高执行效率,会将集合排序后的结果缓存起来,避免重复排序。这个参数为排序结果指定一个用于缓存的键值,可以是任意的字符串,缺省时使用默认的key值。注意:如果一张报表中多次使用这个公式,则必须为每个不同的排序结果指定唯一的key值。

返回值:
Object在排序后的collection_value中的索引值,索引从0开始;如果Object不在collection_value中,返回-1;如果collection_value为空也返回-1。
示例:
以下公式调用将返回3:

SortedIndexOf(List(2,1,3,5,4), 4, true, ‘1’)

SeqNum

函数说明:
求某个元素在集合中的索引值,与依赖关系一起使用。
函数语法:
SeqNum(string)
参数说明:

名称 数据类型 说明 是否必需
string 字符串 seqNum公式的唯一标识

返回值:
当前单元格在复制出的所有单元格中的序号,序号从1开始。
示例:
数据列表报表定义如下,其中A1格依赖于B1格:

A1 B1
=seqNum() =group(‘ds1’, ‘city’)

页面展现效果如下:

1

Extract

函数说明:
取被分隔符分隔的字符串
函数语法:
Extract(matchString,chStart,chEnd[,matchType])
参数说明:

名称 数据类型 说明 是否必需
matchString 字符串 被分隔源字符串
chStart 字符串 起始字符
chEnd 字符串 结束字符
matchType 整数 匹配类型。如果为1,严格匹配;如果为0,模糊匹配。默认值为0。

返回值:
被分隔后的源字符串。
示例:

=Extract(‘[I am chinese]I am a worker’,’[’,’]’,1)

Intersection

函数说明:
求两个集合的交集
函数语法:
Intersection(cdvA,cdvB)
参数说明:

名称 数据类型 说明 是否必需
cdvA 集合 集合A
cdvB 集合 集合B

返回值:
cdvA与cdvB的交集
示例:
求集合{1,2,3}和集合{2,5,6}的交集,得到{2}:

Intersection (list(1,2,3),list(2,5,6))

IndexOfString

函数说明:
对照源字符串查找初目标字符串首次出现的位置。
函数语法:
IndexOfString(srcString,desString)
参数说明:

名称 数据类型 说明 是否必需
srcString 字符串类型 源字符串
desString 字符串类型 目标字符串

返回值:
整数,表示目标字符串在源字符串中的索引位置。
示例:

=IndexOfString(‘iamachineseworker’ , ’chinese’)

TopPercent

函数说明:
用于80/20分析, 求集合中前百分之X的值对应的集合。 第一个参数为一个集合,值为数值类型;第二个参数为百分比。
函数语法:
TopPercent(collection_value, percent)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 需要过虑的集合
percent 整形 百分比

返回值:
过虑后的集合。
示例:

TopPercent(list(1,2,3,4,5), 20)

Length

函数说明:
求指定串的长度。
函数语法:
length(string)
参数说明:

名称 数据类型 说明 是否必需
string 字符串 字符串变量或常量

返回值:
String的长度值。
示例:
求字符串aaa123++的长度:

Length(‘aaa123++’)

TopN

函数说明:
取得集合中前/后N个元素组成的子集合。
函数语法:
TopN(collection_value, count,b)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等。
count 整型 取的位数
b 布尔型 集合中不足部分是否补足,如果为true则不足部分用Null补足;如果为false则不补足

返回值:
返回一个包含count个元素的集合。如果原集合中元素个数大于等于count,返回前count个元素组成集合;如果原集合中元素个数小于count且第三个参数为false,返回集合中不足部分用Null补足;如果集合为空,返回count个Null组成的集合;如果第三个参数为true,集合中不足部分用Null补足。 示例:
得到集合的前三个元素的集合,分别得到(1,2,3)、(1,2)、(Null,Null,Null):

TopN(list(1,2,3,4,5),3)
TopN(list(1,2),3,false)
TopN(list(),3)

得到集合的后二个元素的集合,分别得到(4,5)、(1)、(Null,Null):

TopN(list(1,2,3,4,5),-2)
TopN(list(1),-2,false)
TopN(list(),-2)

TopN2

函数说明: 取得排序集合中前N个元素组成的子集合,这种函数一般只能应用到有序集合。 函数语法: TopN2(collection_value, count) 参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等。
count 整型 取的位数

返回值: 返回一个包含count个元素的集合。如果原集合(需排序)中元素个数大于等于count,返回前count个元素(包括并列情况)组成集合;如果原集成中元素个数小于count,返回原集合。
示例: 取得集合的前三个元素的集合,分别得到(1,2,3)、(1,2)、(l,2,3,3):

TopN2(list(1,2,3,4,5),3)
TopN2(list(1,2),3)
TopN2(list(1,2,3,3,4),3)

List

函数说明:
把它的参数以集合的形式返回。
函数语法:
List(arg1[,arg2[…,argn]])
参数说明:

名称 数据类型 说明 是否必需
arg1 变量 任何Report30支持的变量,但通常所有参数变量类型相同

返回值:
由所有参数组成的集合对象,可以用于作为某些定义为集合类型的参数。
示例:
得到1,2,3组成的集合、三个城市的集合:

List(1,2,3)
List(‘沈阳’, ‘大连’, ‘鞍山’)

Nvl

函数说明:
如果第一参数为空,返回第二个参数;否则返回第一个参数。一般用于定义缺省值。
函数语法:
Nvl(arg1,arg2)
参数说明:

名称 数据类型 说明 是否必需
arg1 变量 任何Report30支持的变量,但通常所有参数变量类型相同
arg2 变量 任何Report30支持的变量,但通常所有参数变量类型相同

返回值:
如果第一参数为空,返回第二个参数;否则返回第一个参数。
示例:
如果从数据集中取得的年龄为空,返回27作为缺省年龄:

Nvl(get(‘ds1’, ‘age’), ‘27’)

Rgb

函数说明:
根据R/G/B值指定颜色。一般用于定义背景色、前景色。
函数语法:
Rgb(r,g,b)
参数说明:

名称 数据类型 说明 是否必需
R 整型 红色
G 整型 绿色
B 整型 蓝色

返回值:
颜色值。
示例:
黑色、白色:

Rgb(0,0,0) 
Rgb(255,255,255)

Sort

函数说明:
把集合参数按升序或降续排列。排序是根据集合元素值的自然顺序:数字按照值大小,字符串按字典顺序,时间按时间先后等。
函数语法:
Sort(collection_value, isAsc)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 需要排序的集合
isAsc 布尔 排序方向

返回值:
排序后的集合。
示例:
得到0,1,2,3,4的集合:

Sort(list(0,1,4,3,2),true)

NextElement

函数说明:
取得集合中指定元素的下一个元素。
函数语法:
nextElement(collection_value, object)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等。
object 不限 任何Report3.0支持的变量

返回值:
指定元素的下一个元素,若集合中不存在该元素的下一个元素则为null。
示例:
获取元素d后面的元素f:

NextElement(list(‘a’, ‘b’, ‘d’, ‘f’, ‘z’), ‘d’)

PreElement

函数说明:
取得集合中指定元素的上一个元素。
函数语法:
nextElement(collection_value, object)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等。
object 不限 任何Report3.0支持的变量

返回值:
指定元素的上一个元素,若集合中不存在该元素的上一个元素则为null。
示例:
获取d前面的元素b:

PreElement(list(‘a’, ‘b’, ‘d’, ‘f’, ‘z’), ‘d’)

IsNull

函数说明:
判断一个DataValue是否为Null。
函数语法:
isNull(object)
参数说明:

名称 数据类型 说明 是否必需
object 不限 任何Report3.0支持的变量

返回值:
布尔值,true表示对象为null,false表示不为null。
示例:
判断a1单元格的值是否为空:

isNull(cell(‘a1’))

Like

函数说明:
判断一个指定的字符串是否完全匹配一个正则表达式。
函数语法:
Like(regex, string)
参数说明:

名称 数据类型 说明 是否必需
regex 正则表达式 一个符合Java正则表达式规范的字符串表达式
string 字符串 一个待匹配的字符串表达式

返回值:
匹配结果的布尔值,true为完全匹配,false为不完全匹配。
示例:

Like(‘编号\s*\d{3}’, ‘编号 008’)
Like(‘.*国’, ‘英国’)

In

函数说明:
判断一个对象是否存在于指定的集合中。
函数语法:
In(collection_value, object)
参数说明:

名称 数据类型 说明 是否必需
collection_value 集合 可能来自另一个集合公式,如group、select、cell、to、list等。
object 不限 任何Report3.0支持的变量

返回值:
布尔值,true为存在,false为不存在。
示例:
判断5是否存在于集合list(1,2,3,5,6):

In(list(1,2,3,5,6), 5)

Digit

函数说明:
取指定数字的整数位的值。
函数语法:
Digit(n, bit)
参数说明:

名称 数据类型 说明 是否必需
n 整型 指定的数字
bit 整型 要取的位数,如取十位,bit=10;取百位bit=100

返回值:
返回整数位的值。
示例:
得到123的十分位2:

Digit(123, 10)

OpenReport

函数说明:
关联到某一报表。
函数语法:
OpenReport(reportId,paramName1,paramValue1…)
参数说明:

名称 数据类型 说明 是否必需
reportId 字符串 关联的报表ID
paramName 字符串 传递的参数名称
paramValue 不限 传递的参数值,可以是字符串、整型、日期等

返回值:
关联到另一张报表。
示例:
打开报表id为12e32-23f4的报表,将参数name赋值为小明:

OpenReport(‘12e32-23f4’,’name’, ‘小明’)

GraphOpenReport

函数说明:
与OpenReport类似,都是关联到某一报表,但只能用于图表和地图。
与OpenReport公式的区别在于,使用此公式,钻取到关联报表时页面会出现导航条,支持回退功能。
函数语法:
GraphOpenReport(reported,paramName1,paramValue1,…,openPosition)
参数说明:

名称 数据类型 说明 是否必需
reportId 字符串 关联的报表ID
paramName 字符串 传递的参数名称
paramValue 不限 传递的参数值,可以是字符串、整型、日期等
openPosition 字符串 指定关联报表的打开位置。可选值包括:_top(顶层窗口)、_parent(父窗口)、_self(本窗口)、_blank(新建窗口)、其他当前页面中iframe的名称。

返回值:
关联到另一张报表。
示例:
在当前窗口打开报表id为12e32-23f4的报表,将参数name赋值为小明:

GraphOpenReport(‘12e32-23f4’,’name’, ‘小明’, ‘_self’)

ChartOpenReport

函数说明:
与OpenReport类似,都是关联到某一报表,只用于新图表。
使用此公式,钻取到关联报表时页面会出现导航条,支持回退功能。
函数语法:
ChartOpenReport(reported,paramName1,paramValue1,…)
参数说明:

名称 数据类型 说明 是否必需
reportId 字符串 关联的报表ID
paramName 字符串 传递的参数名称
paramValue 不限 传递的参数值,可以是字符串、整型、日期等

返回值:
关联到另一张报表。
示例:
在当前窗口打开报表id为12e32-23f4的报表,将参数name赋值为小明:

ChartOpenReport(‘12e32-23f4’,’name’, ‘小明’)

函数说明:
与OpenReport类似,用于图表联动,只用于新图表。
函数语法:
ChartLink(reported,chartId,paramName1,paramValue1,…)
参数说明:

名称 数据类型 说明 是否必需
reportId 字符串 关联的报表ID
chartId 字符串 图表位置
paramName 字符串 传递的参数名称
paramValue 不限 传递的参数值,可以是字符串、整型、日期等

返回值:
被联动图表刷新。
示例:
联动A1位置图表,将参数name传递给图表:

ChartLink(‘12e32-23f4’,‘A1‘,’name’, ‘小明’)

OpenReportJS

函数说明:
关联其他报表且最大化窗口弹出。
函数语法:
OpenReportJS(reportId,paramName1,paramValue1…)
参数说明:

名称 数据类型 说明 是否必需
reportId 字符串 关联的报表ID
paramName 字符串 传递的参数名称
paramValue 不限 传递的参数值,可以是字符串、整型、日期等

返回值:
关联到另一张报表。
示例:
打开报表id为12e32-23f4的报表,将参数name赋值为小明:

OpenReportJS(‘12e32-23f4’,’name’, ‘小明’)

ServerURL

函数说明:
获得服务的相对路径。
函数语法:
ServerURL()
返回值:
返回应用服务的相对路径。
示例:
得到http://127.0.0.1/unireport的相对路径/unireport/:

ServerURL()

Calljs

函数说明:
调用指定的JavaScript函数。
函数语法:
Calljs(funcName, param[,..])
参数说明:

名称 数据类型 说明 是否必需
funcName 字符串 调用JavaScrip的函数名
param 字符串 函数中的参数

示例:
调用hint函数,参数为hello:

Calljs(hint, 'hello')

BlobText

函数说明:
在报表定义中引入来自数据库Blob字段的文字。
函数语法:
BlobText(repository_name, dataentitiy_name, field_name, keys, key_values, encoding)
参数说明:

名称 数据类型 说明 是否必需
repository_name 字符串 DRM数据源名
dataentitiy_name 字符串 文字所在表名
field_name 字符串 文字对应字段名
keys 字符串列表 定位文字的键名称列表
key_values 值列表 定位文字的键值列表,如果是多个域keys的顺序一一对应
Encoding 字符串 BLOB中字符串的字符编码

返回值:
StringDataValue,对应blob字段的文本值。
示例:

BlobText(‘ northwind’, ‘blobtext’, ‘blob’,list(‘id’),list(A2) ,'GBK')

Encode

函数说明:
通过超链接或者OpenReport公式实现图表钻取时,会出现传递的参数为中文的情况,这时需要使用本函数对中文参数进行编码,并增加encode=true的参数。
函数语法:
Encode(srcObj,enCod)
参数说明:

名称 数据类型 说明 是否必需
SrcObj 参数值
EnCod 编码方式 现仅有一种编码方式‘base64’

返回值:
经过编码之后的字符串。
示例:
将参数‘中国’进行base64编码:

Encode(‘中国’,’base64’)

Not

函数说明:
对布尔型数据进行取反操作。
函数语法:
Not(booleanValue)
参数说明:

名称 数据类型 说明 是否必需
booleanValue 布尔类型 要进行取反的布尔值

返回值:
取反后得到的布尔值。
示例:

Not(true)

CrossTabDataFunc

函数说明:

新图表的数据来自交叉表时,需要使用该公式,该公式具有4个参数,第一个参数为横向扩展单元格,第二个参数为纵向扩展单元格,第三个参数为数据单元格,最后一个参数为整型数据,只能输入1,2,3三个值。

其中,该函数会将前两个集合数据进行扩展,使得扩展后的集合元素个数与三个集合元素个数相同,最后根据最后一个参数决定返回第几个集合数据。

【注】:该公式希望第一个集合参数中没有重复数据,若存在重复数据,该公式会为重复数据自动加上标识用来区分;同理第二个参数也会做同样处理。

样例讲解: CrossTabDataFunc(list(’A’,’B’),list(’a’,’b’),list(1,2,3,4),count)

第一个集合扩展后为{’A’,’B’,’A’,’B’}、第二个参数扩展后为{’a’,’a’,’b’,’b’},第三个参数不需要扩展{1,2,3,4};

若最后一个参数count为1,则返回第一个参数集合,{’A’,’B’,’A’,’B’}.

若最后一个参数count为2,则返回第二个参数集合,{’a’,’a’,’b’,’b’}.

若最后一个参数count为3,则返回第三个参数集合,{1,2,3,4}.

函数的约束:
前两个集合参数的元素个数的乘积,必须等于第三个集合参数的元素个数。若不满足此条件,函数会抛出异常。

函数语法:
CrossTabDataFunc(row_collection,column_collection,value_collection,count)

参数说明:

名称 数据类型 说明 是否必需
row_collection 一个集合 可能来自另一个集合公式,如group、list、to、cell等
column_collection 一个集合 可能来自另一个集合公式,如group、list、to、cell等
Value_collection 数据集合 可能来自另一个集合公式,如group、list、to、cell等
count 整型 取哪个集合,只有1,2,3三个选项

返回值:
返回经过函数处理后的集合。
示例:

CrossTabDataFunc(cell(‘b2’),cell(‘a3’),cell(‘b3’),3)

results matching ""

    No results matching ""

    results matching ""

      No results matching ""