反饋已提交

網絡繁忙

計算入門指南

1. 概述

本文介紹如何在 FineReport 中使用計算功能。

將告訴使用者何時可使用計算、如何使用公式編輯器。

如果剛接觸 FineReport 的使用者,不瞭解函式,則非常適合從這裏着手。

2. 為什麼使用計算

透過計算,可以根據資料源中已存在的資料建立新資料,並對資料執行計算。

這樣可以執行復雜的分析,並且可以引用計算結果進行視覺化範本製作。

3. 何時使用計算

計算允許利用資料源中已存在的資料建立新資料。

有很多原因,可以使用函式進行計算。可能包括:

下面給出使用計算的情景。

2.1 資料源中缺少分析所需的資料

內建 FRDemo 資料表「S訂單明細」中有「單價」、「數量」、「進價」、「折扣」欄位,但需要計算每個訂單ID的「利潤」以及所有訂單 ID 的「平均利潤」,則可以使用類似於以下內容的公式計算,如下圖所示:

利潤:C2 * (B2 - D2) * (1 - E2)

平均利潤:AVERAGE(F2)

結果如下圖所示:


2.2 想要在組件中轉換數值

例如可能要將字串「2021/02/07星期三」轉換為時間型,輸入公式:TODATE("2021/02/07星期三","yyyy/MM/ddEEE","zh")如下圖所示:

2.3 想要設定圖表樣式顏色

例如設定表格隔行變色。

詳情參見:隱藏行後隔行變色

3. 函式計算支援的使用位置

3.1 在公式編輯框中使用函式

FineReport 中可以使用「公式編輯器」的位置有如下幾個:

使用位置圖示
條件屬性 

範例:隔列/欄設定背景色

資料字典

範例:資料字典 2.4 節

篩選過濾


填報設定提交條件

圖表標題
圖表軸定義

定義圖表儲存格資料源
報表頁首與頁尾
儲存格內容提示

3.2 在 SQL 編輯框中使用函式

3.2.1 SQL 中使用普通函式

在 SQL 中使用公式,可以將公式放在 ${} 中,例如參數為空傳回全部的 sql 語句:

SELECT * FROM 訂單 where 1=1 ${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} ${if(len(province) == 0,"","and 貨主省份 = '" + province + "'")}

參數/公式說明
area 和 province自訂的參數
if(len(area) == 0,"","and 貨主地區 = '" + area + "'")

如果len(area)!=0,即 area 參數不為空,比如說 area 的值為華東,那麼 IF 語句的執行結果為and 貨主地區='華東',然後再把這句話連接到 SQL 語句當中,SQL 語句就變成:

SELECT * FROM 訂單 where 1=1 and 貨主地區='華東' and 貨主省份='江蘇'

3.2.2 SQL 中使用 SQL 函式

SQL 語句其實是字串。因此可以從資料庫呼叫一個 SQL 語句作為字串進行取數。此時即用到 SQL函式,例如公式:

=sql("FRDemo","SELECT * FROM 銷量 ",1,1) 匯出結果為華東

同時也可以把這個字串用在 SQL 公式中作為字串執行,因此建立資料集時可以定義為:SELECT * FROM  where 地區='${sql("FRDemo","SELECT * FROM 銷量 ",1,1)}'

也就是 SELECT * FROM  where 地區='華東'

3.3 在 JS 編輯框中使用函式

作為一款 B/S 產品,browser 端的 JavaScript 是必不可少的。

如何在 JS 編輯框中使用公式詳情參見:在JS中使用FR公式


附件列表


主題: 報表專題
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉