1. COL-當前儲存格的欄號
1)概述
文法 | COL() | 傳回當前儲存格的欗號 |
---|
2)範例
公式 | 結果 |
---|---|
col() | 如果當前儲存格是 A5,在 A5 中寫入:=col()傳回 1。 |
如果當前儲存格是 C6,在 C6 中寫入:=col()傳回 3。 |
2. COLCOUNT
COLCOUNT(tableData):傳回 tableData 中欄的個數。 tableData:tableData 的名稱,字串形式。
注: 先從私有資料源中尋找,然後再從公有資料源中尋找,傳回的是第一個尋找到的 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。
具體範例:隔行/列設定背景色。
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 作為參數因素的,函式在呼叫的時候均按照先從私有資料源中尋找,然後再從公有資料源中尋找的順序。