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 作爲參數因子的,函數在調用的時候均按照先從私有數據源中查找,然後再從公有數據源中查找的順序。