反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

报表函数概述

  • 文档创建者:lu123
  • 历史版本:16
  • 最近更新:Roxy 于 2021-02-26
  • 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 这个表中的所有字段名
    参数1connectionName

    数据连接名称

    参数2tableName

    数据表名称

    返回值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 下的所有元素。
    参数1connection

    数据连接名称

    参数2table

    数据表名称

    参数3field字段名
    返回值String返回数据库表 table 中字段名 field 下的所有元素。

    用法二:

    语法RECORDS(connection, table,field,row)返回 table 中 field 字段下的第 row 行的记录,field 可以为列名也可以为列号。
    参数1connection

    数据连接名称

    参数2table

    数据表名称

    参数3field字段名
    参数4row字段对应的行数
    返回值String返回数据库表 table 中字段名 field 下的第 row 行的记录。

    2)注意事项

    • 对于 Mysql 数据库,如果数据库表名即 table 为纯数字,需要为 table 参数前后添加符号。

    • 例如 FineReport 中已经定义的数据源「mysql」有一张名为「11」的数据表

    • aa
      bbcc
      0.32277
      0.5551
    • 则使用公式:

    • 公式结果备注
      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 行所对应的元素。
    参数1connectionName

    数据库库的名字,字符串形式;

    参数2sqlSQL语句,字符串形式;
    参数3columnIndex列序号,整型;
    参数4rowIndex行序号,整型。

    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 作为参数因子的,函数在调用的时候均按照先从私有数据源中查找,然后再从公有数据源中查找的顺序。

    附件列表


    主题: 报表专题
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526