反饋已提交

網絡繁忙

除数被除数为零的处理

1. 概述

1.1 問題描述

在報表設計時,若使用除法運算,可能涉及到「除數」或「被除數」為 0 的情況,此時預設 FineReport 的計算規則如下表所示:

被除數
除數
0非 00
非 00∞ 或 -∞
000

這樣顯示沒有錯,但在實際應用中,經常需要對「除數為 0 」或者「除數被除數均為 0」 的情況進行處理,希望在這兩種情況下提示「無法計算」或避免結果為「無窮大」。如下圖所示:

1.2 解決思路

  • 使用 IF 公式判斷除數與被除數是否均為 0,為 0 時提示“can’t caculate”。

  • 使用「條件屬性新值」修改結果為「無窮大」的值。

2. 範例

2.1 準備資料

建立普通報表,建立內建資料集 Embedded1,新增「被除數」和「除數」兩個「整數」型別的欄位,填入一些整數,如下圖所示:

2.2 設計報表

將「被除數」和「除數」分別拖入 A2、B2 儲存格,將 A2 儲存格的「資料設定」修改為「列表」。在 C2 儲存格插入「商」的公式:A2/B2。表格樣式如下圖所示:

1694404687968646.png

此時預覽報表,是使用 FineReport 預設計算規則。結果如下圖所示:

2.3 設定公式

2.3.1 被除數與除數均為 0

被除數和除數均為 0 時,實際應用中除數顯示“can't caculate”,否則計算 A2/B2。此時可將 C2 儲存格的公式改為:IF(A2=0,結果如下圖所示:

2.3.2 除數為 0

除數為 0 時,商為「無窮大」,希望不需要計算,否則計算 A2/B2,可使用公式:IF(B2=0,"0",A2/B2),結果就顯示為 0 了。在本例中,可將 C2 儲存格的公式修改為:IF(A2=0。結果如下圖所示:

2.4 設定條件屬性新值 

當商為「無窮大」時,無窮大 ∞ 對應的真實值其實是 Infinity ,可以利用「條件屬性>新值」改變儲存格值。

注:Infinity 首字母必須大寫,小寫無效。

選中 C2 儲存格,點選右側屬性面板,新增一個條件屬性,選擇「新值」屬性,設定值為「字串」 0 (可根據情況選擇其他值型別)。新增兩個「普通」條件,用 OR 連結,即當儲存格值為 Infinity (∞)或 -Infinity (-∞)時,儲存格值改變為 0。

如下圖所示:

這樣做的一個好處是利用條件屬性可以批量設定,也就是說在範本中出現多個可能計算結果為無窮大的地方,我們只需要全部選中,右鍵選擇條件屬性,即可以一次性設定成功,不需要反複利用 IF 公式來判斷了,可以省下很多時間,大大提高我們的開發效率。

2.5 效果預覽

2.5.1 PC 端

儲存範本,效果與 1.1 節中相同。

2.5.2 行動端

App 與 HTML5 端效果相同,如下圖所示:

3. 範本下載

附件列表


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

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

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

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙