1. COL-当前单元格的列号
1)概述
语法 | COL() | 返回当前单元格的列号 |
---|
2)示例
公式 | 结果 | 备注 |
---|---|---|
col() | 如果当前单元格是 A5,在 A5 中写入: =col()返回 1。 | |
如果当前单元格是 C6,在 C6 中写入: =col()返回 3。 |
2. COLCOUNT
COLCOUNT(tableData):返回 tableData 中列的个数。 tableData:tableData 的名字,字符串形式的。
2)注意事项
注: 先从私有数据源中查找,然后再从公有数据源中查找,返回的是第一个查找到的 tableData 中列数。
示例:
以我们提供的数据源 FRDemo 为例:
新建数据集 ds1:SELECT * FROM CUSTOMER
COLCOUNT("ds1")等于 6。
3. COLNAME
COLNAME(tableData,colIndex):返回的是 TableData 中列序号 colIndex 的列名。 tableData:表示 TableData的名字,字符串形式。colIndex:表示列序号。
注:TableData 先从私有数据源中查找,再从公有数据源中查找。
示例:
以我们提供的数据源 FRDemo 为例:
新建数据集 ds1:SELECT * FROM CUSTOMER
COLNAME("ds1",3)等于 CITY。
4. FIELDS-返回数据表的所有字段名
1)概述
语法 | FIELDS(connectionName,tableName) | 返回 tableName 这个表中的所有字段名 |
---|---|---|
参数1 | connectionName | 数据连接名称 |
参数2 | tableName | 数据表名称 |
返回值 | String | 返回 tableName 这个表中的所有字段名。 |
2)注意事项
对于 Mysql 数据库,如果数据库表名即 tableName 为纯数字,需要为 tableName 参数前后添加` 符号。
例如需要对 FineReport 中已经定义的数据源「mysql」显示该数据源中数据表「11」的所有字段名,则使用公式:
FIELDS("mysql","`11`")。
3)示例
公式 | 结果 | 备注 |
---|---|---|
FIELDS("FRDemo","CUSTOMER") | CUSTOMERID,CUSTOMERNAME,CITY,COUNTRY,TEL,DISTRICT | 以 FineReport 内置数据源 FRDemo 下的 CUSTOMER 数据表为例 |
FIELDS("mysql","`11`") | aa,bb,cc | 对于 Mysql 数据库,如果数据库表名即 tableName 为纯数字,需要为 tableName 参数前后添加` 符号 |
5. MAP
MAP(object, string, int, int):四个参数分别是索引值,数据集的名字,索引值所在列序号,返回值所在列序号。
提醒:后两个参数也可以写列名代替。
根据数据集的名字,找到对应的数据集,找到其中索引列的值为key所对应的返回值。
数据集的查找方式是依次从报表数据集找到服务器数据集。
索引列序号与返回值序列号的初始值为1。
示例:
MAP(1001, "employee", 1, 2)返回 employee 数据集,第 1 列中值为 1001 那条记录中第 2 列的值。
MAP(1001, "employee", "name", "address")返回 employee 数据集,name 列中值为 1001 那条记录中 address 列的值。
6. RECORDS-返回数据表字段下指定元素
1)概述
用法一:
语法 | RECORDS(connection,table,field) | 返回数据库表 table 中字段名 field 下的所有元素。 |
---|---|---|
参数1 | connection | 数据连接名称 |
参数2 | table | 数据表名称 |
参数3 | field | 字段名 |
返回值 | String | 返回数据库表 table 中字段名 field 下的所有元素。 |
用法二:
语法 | RECORDS(connection, table,field,row) | 返回 table 中 field 字段下的第 row 行的记录,field 可以为列名也可以为列号。 |
---|---|---|
参数1 | connection | 数据连接名称 |
参数2 | table | 数据表名称 |
参数3 | field | 字段名 |
参数4 | row | 字段对应的行数 |
返回值 | String | 返回数据库表 table 中字段名 field 下的第 row 行的记录。 |
2)注意事项
对于 Mysql 数据库,如果数据库表名即 table 为纯数字,需要为 table 参数前后添加` 符号。
例如 FineReport 中已经定义的数据源「mysql」有一张名为「11」的数据表
aa bb cc 0.3 22 77 0.5 55 1 则使用公式:
公式 结果 备注 RECORDS("mysql","`11`","aa") 0.3,0.5 - RECORDS("mysql","`11`","aa",2) 0.5 -
3)示例
数据库 BASE 中有个名叫 task 的表的内容如下:
name | start | end |
---|---|---|
a | 2008 | 2009 |
b | 2009 | 2012 |
公式 | 结果 | 备注 |
---|---|---|
RECORDS("BASE","task","end") | 2009,2012 | - |
RECORDS("BASE","task","end",2) | 2012 | - |
RECORDS("BASE","task",2,2) | 2009 | - |
7. SQL
1)概述
语法 | SQL(connectionName,sql,columnIndex,rowIndex) | 返回通过 sql 语句从 connectionName 中获得数据表的第 columnIndex 列第 rowIndex 行所对应的元素。 |
---|---|---|
参数1 | connectionName | 数据库库的名字,字符串形式; |
参数2 | sql | SQL语句,字符串形式; |
参数3 | columnIndex | 列序号,整型; |
参数4 | rowIndex | 行序号,整型。 |
2)注意事项
行序号可以不写,这样返回值为数据列。
3)示例
公式 | 结果 | 备注 |
---|---|---|
SQL("HSQL","SELECT*FROM CUSTOMER",2,2) 注:以数据源 HSQL 为例。 | 王先生 | - |
8. I18N
1)概述
i18n为本软件内置的国际化公式,可以对一些常用的词语进行国际化。
2)示例
公式 | 结果 | 备注 |
---|---|---|
i18n('File') | 会在中文语言环境下显示为:文件; 而在英文语言环境下显示为:File | - |
9. ROW
ROW():返回当前单元格的行号。
示例:
如果当前单元格为 A5,在 A5 中写入"=ROW()"则返回 5。
如果当前单元格为 B8,在 B8 中写入"=ROW()"则返回 8。
具体示例:见 条件属性 专题章节中,条件属性中的 Row()函数的内容。
10. ROWCOUNT
ROWCOUNT(tableData):返回 TableData 的行数。
tableData:TableData 的名字,字符串形式的。
注:先从私有数据源中查找,然后再从公有数据源中查找,返回的是 TableData 的行数。
示例:
以我们提供的数据源 FRDemo 为例
新建数据集 ds1:SELECT * FROM CUSTOMER
ROWCOUNT("ds1")等于 20。
11. TABLEDATAFIELDS
TABLEDATAFIELDS(tableData):返回tableData中所有的字段名。
注:先从报表数据集中查找,然后再从服务器数据集中查找,返回的是 TableData 的列名组成的数组。
示例:
以我们提供的数据源 FRDemo 为例
新建数据集 ds1:SELECT * FROM CUSTOMER
TABLEDATAFIELDS("ds1")等于 CUSTOMERID,CUSTOMERAME,CITY,COUNTRY,TEL,DISTRICT。
12. TABLEDATAS
TABLEDATAS():返回报表数据集和服务器数据集名字。
示例:
服务器数据集有:ds1,ds2,ds3;报表数据集有 dsr1,dsr2,则:
TABLEDATAS()等于[dsr1,dsr2,ds1,ds2,ds3]。
而 TABLEDATAS(0)返回服务器数据集名字;TABLEDATAS(1)返回报表数据集名字;
TABLEDATAS(0)等于[ds1,ds2,ds3]。
TABLEDATAS(1)等于[dsr1,dsr2]。
13. TABLES
TABLES(connectionName):返回名为 connectionName 的数据库中的所有表名。
示例:
假设在 FRDemo 这个数据库中,有 3 个表:a,b,c,则:
TABLES("FRDemo")等于[a,b,c]。
14. VALUE
VALUE(tableData,col,row):返回 TableData 中行号为 row,列号为 col 的值。 TableData:TableData 的名字,字符串形式的。 row:行号。 col:列号。
注: 先从私有数据源中查找,然后再从公有数据源中查找,返回的是 TableData 的符合条件的值。
示例:
VALUE("country",5,3)等于 South America。
VALUE("Simple",8,3)等于 jonnason。
VALUE(tableData,col)返回 tableData 中列号为 col 的一列值。
VALUE(tableData,targetCol, orgCol, element)返回 tableData 中第 targetCol 列中的元素,这些元素对应的第 orgCol 列的值为 element。
示例:
tableData:co
国家 | 省份 |
---|---|
中国 | 江苏 |
中国 | 浙江 |
中国 | 北京 |
美国 | 纽约 |
美国 | 新泽西 |
VALUE("co",2, 1, "中国")等于["江苏", "浙江", "北京"]。
注:列号也可以写为列名。
VALUE(tableData,targetCol, orgCol, element, idx)返回VALUE(tableData,targetCol, orgCol, element)数组的第idx个值。
注:idx 的值小于 0 时,会取数组的第一个值,idx 的值大于数组长度时,会取数组的最后一个值。
15. DECODE——字符串解码
1)概述
语法 | decode(string) | 使用指定的编码机制(UTF-8)对 application/x-www-form-urlencoded 字符串解码。 |
---|---|---|
参数 | string | - |
返回值 | String | - |
2)注意事项
给定的编码用于确定任何 “%xy”格式的连续序列表示的字符。
3)示例
公式 | 结果 | 备注 |
---|---|---|
decode("%E5%B8%86%E8%BD%AF") | 帆软 | - |
16. ENCODE——字符串编码
1)概述
语法 | encode(string) | 使用指定的编码机制(UTF-8)将字符串转换为application/x-www-form-urlencoded格式。 |
---|---|---|
参数 | string | - |
返回值 | String | - |
2)注意事项
该方法使用提供的编码机制获取不安全字符的字节。
3)示例
该方法使用提供的编码机制获取不安全字符的字节。
3)示例
公式 | 结果 | 备注 |
---|---|---|
encode("帆软") | “%E5%B8%86%E8%BD%AF” | - |
17. 注意事项
本章节凡是以 tableName 或 viewName 作为参数因子的,函数在调用的时候均按照先从私有数据源中查找,然后再从公有数据源中查找的顺序。