反饋已提交
網絡繁忙
文法報錯優化
公式編輯框增加「輸入提示」和「關閉前檢查」選項
對於多sheet、多報表塊的範本公式報錯時,公式報錯具體到儲存格所在sheet/報表塊
設計器報錯日誌支援點選定位錯誤位置
函式計算組成和文法 已經說明了在報表中使用函式的計算組成以及基礎的計算文法,但有時使用者也會遇到書寫公式報錯的問題,可根據提示完成公式的正確書寫。
FineReport11.0 對公式的校驗規則和報錯提示進行了優化。
本文將詳細介紹運算子和表式的文法,幫助使用者瞭解公式校驗方案,正確有效的寫出需要的函式。
注:FineReport11.0.2 以及之後的版本中,進行公式合法性檢查時,如果公式中存在回車(\n)、tab (\t),則無法精準傳回錯誤位置,如果您點選了查看報錯,則游標預設回到公式首位(0位)。
報表中報錯優先為:
文法錯誤
缺少字元、缺少符號、無法識別字元、無法識別符號
注:除了以上四種型別文法報錯,其他文法報錯均顯示為公式不合法。
函式錯誤
函式參數型別錯誤
函式參數個數錯誤
例如,在輸入公式count(A1{len(A1) != 0})統計 A1 儲存格擴展出來的資料中不為空的個數後,由於輸入成了count(A1{len(A1) != 0},缺少了一個),點選「檢查合法性」進行校驗,發現提示「缺少匹配的:閉合符號」,點選「檢視錯誤」,游標自動定位到報錯的位置,如下圖所示:
CHAR
一個在[1-65535](閉區間)範圍內的數值參數
正文
CHAR不符合 (一個[1-65535]的數值) 的參數要求
CODE
一個正文參數
數值
CODE不符合 (正文) 的參數要求
CONCATENATE
多個任意型別參數
--
STARTWITH
兩個任意型別參數
bool
STARTWITH不符合 (任意型別,任意型別) 的參數要求
ENDWITH
ENDWITH不符合 (任意型別,任意型別) 的參數要求
EXACT
EXACT不符合 (任意型別,任意型別) 的參數要求
FIND
第一個參數任意型別
第二個參數任意型別
第三個預設參數數值
即:有2/3個參數均合法,3個參數時第三個參數必須為數值型別
FIND不符合 (任意型別,任意型別) 或 (任意型別,任意型別,數值) 的參數要求
FORMAT
第一個參數為日期/數值/正文,第二個參數為正文
FORMAT不符合 (日期/數值/正文,正文) 的參數要求
INDEXOF
兩個參數,第一個為任意型別,第二個為數值
INDEXOF不符合 (任意型別,數值) 的參數要求
LEFT
兩個參數,第一個為任意型別,第二個為大於0的數值,可預設
LEFT不符合(任意型別) 或 (任意型別,數值) 的參數要求
RIGHT
RIGHT不符合(任意型別) 或 (任意型別,數值) 的參數要求
LOWER
單正文參數
LOWER不符合 (正文) 的參數要求
MID
第一個參數為任意型別,第二個,第三個為數值
MID不符合 (任意型別,數值,數值) 的參數要求
REGEXP
兩個參數或三個參數
兩個參數時:
兩個參數為正文
三個參數時:
前兩個參數為正文,第三個參數為數值
BOOL
REGEXP不符合 (正文,正文)或(正文,正文,數值) 的參數要求
REPEAT
REPEAT不符合 (任意型別,數值) 的參數要求
REPLACE
四個參數,第一個是任意型別,第二個第三個是數值,第四個是任意型別
REPLACE不符合 (任意型別,任意型別,任意型別) 或 (任意型別,數值,數值,任意型別) 的參數要求
TODOUBLE
單任意型別參數
TODOUBLE不符合 (任意型別) 的參數要求
TOINTEGER
TOINTEGER不符合 (任意型別) 的參數要求
TRIM
TRIM不符合 (正文) 的參數要求
UPPER
UPPER不符合 (正文) 的參數要求
LEN
一個[正文、數字、陣列]中任意單一型別參數
LEN不符合 (任意型別) 的參數要求
LEN不符合(一個[正文、數字、陣列]中任意單一型別)的參數要求
三個數值參數
兩個參數
第一個日期或正文型別參數
第二個為數值型別參數
#函式名#不符合(日期/正文,數值)的參數要求
第二個參數為數值
三個或四個參數
第一、二個日期或正文型別參數
第三個正文
四個參數時:
第一,二個日期或正文型別參數
第三個是正文
第四個是數值
三個參數
#函式名#不符合(日期/正文/數值)的參數要求
無參或者一個參數或者兩個參數
一個預設日期、數值、正文型別參數
兩個參數時為兩個正文型別參數
#函式名#不符合(無參) 或 (日期/數值/正文)或(日期/正文,正文)的參數要求
一、二、三、四個參數均可
一個參數時(日期/數值/正文)
二個參數時為(日期/正文,正文)
三個參數時為(日期/正文,正文,正文)
四個參數時為(日期/正文,正文,正文,正文)
TODATE
單參,參數為數值或日期或者正文
兩個參數全是正文
一個日期或正文型別參數
單數值參數
#函式名#不符合(數值)的參數要求
1-3個數值參數
合法規則為0<參數個數< 3且參數為數值型別
兩個數值參數
#函式名#不符合(數值,數值)的參數要求
三個參數:前兩個數值,第三個布爾
第一個參數數值,第二個預設數值
注: 報表公式中沒有數值與bool型別之間的轉換,所以當前公式僅支援 bool 型別參數,不支援數字與 bool 型別的轉換。
IF,三個參數,第二個和第三個參數為數值或正文型別,第一個為為bool型別(此處bool型別不包括數字)
傳回結果參數中第一個非空的參數型別(第二個和第三個參數為傳回值參數)
第一個參數不為bool型別時提示:IF表式的第一個參數不符合布林型別為bool型別
IF表式第二、三個參數不為數值或正文型別時提示:IF表式的結果型別必須為正文或數值型別
不滿足三個參數個數時提示:IF表式不滿足3個參數的參數個數要求
參數個數至少3個,且結果參數型別一致
#符號#只能連結兩個布林型別為bool型別或數值型別的表式
三個或四個參
數前兩個參數為字元型別,後兩個為整數型態,後兩個參數可僅寫一個
四個參數:前兩個參數是任意型別,第三、四個參數為數字或正文
FineReport 11.0.3 支援當多sheet、多報表塊的範本公式報錯時,公式報錯具體到儲存格所在sheet/報表塊。
例如 cpt 範本「橫向擴展後某列資料佔比」sheet2 C1 儲存格只有=沒有其他內容,如下圖所示:
此時預覽範本,會出現如下報錯,公式報錯內容包括所在範本、sheet以及儲存格:
注:多 sheet 範本顯示公式報錯所在 sheet 為阿拉伯數字,從 0 開始;如果是 frm 範本,則顯示公式所在報表塊。
更多報錯說明如下所示:
錯誤代碼:11300303 公式中除數為零:XX(具體儲存格)
注:填報屬性內的公式、元件內的公式等在暫時不支援定位。
FineReport 11.0.3 設計器報錯日誌支援點選定位錯誤位置
為了更方便使用者快速定位到報錯儲存格,日誌面板中公式錯誤位置將「超連結樣式」顯示,點選後,如果報錯範本處於開啟狀態,將直接定位至超連結儲存格,多sheet及多報表塊範本將跳轉到對應sheet/報表塊,如下圖所示:
如果報錯範本未開啟則開啟範本並跳轉。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉