常見問題
遇到問題了嗎?不用擔心,答案都在這。
全站搜尋

為什麼公式沒有觸發或結果錯誤?

「為什麼第一次設公式的時候有算出結果,修改公式之後套公式的欄位卻沒有運算出新結果?」

「為什麼匯入資料/更新別張表單欄位值/拋轉建立的資料沒有觸發公式?」

如果你遇到這些問題,這邊要先提到 Ragic 公式運作的一個重要原則:公式只會在輸入的地方觸發。詳細一點說,應該是說「(在沒有額外設定的前提下,)公式只會在輸入/編輯資料的當下、在輸入資料位置的同一個表單(介面)上被手動觸發」,分以下兩點說明:

一、公式只會在輸入資料的「那個當下」觸發

最簡單的例子是,當我們還在調整表單設計時,有可能把某個原本手動輸入輸入資料的欄位新增了公式、或修改了公式內容,儲存設計之後回到原本的資料查看,會發現該欄位似乎沒有依照新設定的公式計算出新的欄位值。

這就是因為「公式只會在輸入資料的當下觸發」,如果你已經在某個欄位填入資料後才修改公式,過了那個時間點,新修改的公式就不會套用在舊資料上,必須等你重新編輯資料時才會觸發公式的運算。

這除了考量公式運算的效能因素,也是因為許多狀況下公式的修改不應該套用在舊資料上,比較詳細的舉例可以參考公式文件這部分的詳細說明。如果希望修改設計調整公式之後的結果全部都會套用在舊資料上,除了手動去重新編輯資料、觸發公式外,就得另外執行一次公式重算(屬於利用程式在後端觸發的情況,非手動自然觸發公式運算)。

二、公式只會在輸入資料位置的同一個表單(介面)上觸發

這意思是:如果你今天有一張「訂單」表單上有套用公式,你在其他表單例如「商品」表單上編輯價格資料時並不會自動觸發「訂單」表單上的公式,需要在同一張表單:「訂單」表單上編輯資料(例如輸入新的訂購項目數量時)才會觸發該表單上的公式計算。

假如你今天不是在訂單表單上直接手動編輯資料,而是利用 Ragic 的各種功能、從其他地方更新訂單表單上的資料,那麼公式並不一定會自動觸發,需要依靠你做額外設定。以下分別說明:

以動作按鈕或匯入更新別張表單資料

例如利用動作按鈕「更新別張表單欄位值」、「資料拋轉」、匯入等方式的話,此時若沒有額外設定的話(例如另外在對應的「進階設定」中勾選「重算目標表單公式」),這些動作也不會自動觸發計算公式。

同張表單的列表頁與表單頁

值得一提的是,同一張表單的表單頁和列表頁在公式觸發上也不被視為「同一個地方」,表單頁和列表頁的設計模式是可以分別套用公式的。

如果在表單頁有設定公式,但是你要在列表頁手動修改資料的話,公式並不會自動被觸發;反之如果公式套在列表頁,但在表單頁新增資料,公式也不會自動計算。因此,除了在表單頁設計模式下套用公式,如果你也常常需要在列表頁直接輸入/修改資料,可以將相關欄位也放在列表頁上,在列表頁設計模式也套用對應的公式。

多版本工作表

同理,多版本工作表的不同版本也要分開看待,有需要的話也要分別套用公式。(多版本表單不同版本的同一個欄位套用的不同公式,應該要能獲得同樣的結果,才不會讓不同的結果互相覆蓋。這部分可以利用前面介紹的欄位資訊功能一次檢視同一個欄位在所有不同版本表單的公式設定)

子表格產生新表單/參照子表格

而針對子表格產生的新表單、參照子表格(顯示從其他表單的連結)的情況,則是可以在「表單設定」中設定,如果希望公式都要觸發的話,可以在表單頁設計模式 > 左側工具列中的表單設定 > 表單設定 勾選「儲存時觸發原始表單(預設已勾選)」或「相關表單的全部公式重算」。相關說明可看這個連結

後端公式重算的方法

如果希望修改舊資料讓某些公式可以觸發,除了進入設計模式統一執行整張表單的公式重算之外,也可以設計一個單筆資料公式重算的動作按鈕

如果是希望無論如何系統都要每天重算一次表單上的公式(例如有些要用來判斷當日日期的 TODAYTZ() 公式),可以設定每日公式重算的工作流程。

其他公式沒有觸發的原因

請檢查公式是否設定正確,除了公式語法要檢查之外,有些公式的設定跟欄位種類有關係,例如加減運算、比大小這些只適用於數字、金額、日期等欄位。

另外 TODAY 和條件公式這兩種公式有比較多的特定規則, TODAY 公式如果遇到的是重算問題,可參考此篇文件的說明來排除問題;如果是條件公式(IF公式),可以參考這篇說明來看看是否需要為公式內容加上 .RAW。

另外,TODAY/NOW + 條件公式的狀況也要注意:目前因為系統限制, Ragic 並不支援將TODAY()或NOW()直接加入至IF() 進行運算,因此你必須要另外新增一個欄位來計算TODAY()或NOW() ,相關說明與範例可參考這裡

自動產生欄位可能會引發公式重算錯誤

自動產生欄位最後存檔的值並不一定是新增資料時顯示在該欄位上的值,因為可能有兩個人同時在同一張表單新增資料,這時候兩個人的自動產生值會是相同的,但其中一人先存檔,另一個人存檔後就會跳為下一個序號, 以避免重複。

但如果有別的欄位套用公式參照這個自動產生欄位,存檔前看起來前端公式重算正確,但存檔後就會發現前端公式重算錯誤了。

所以建議如果表單中有別的欄位套用公式參照自動產生欄位,要自行寫 post workflow 在存檔時自動執行後端公式重算

回最上面

    馬上註冊
    免費試用 Ragic!

    用 Google 帳號註冊

    立即科技 Ragic, Inc.
    02-7728-8692
    台北市中正區南昌路二段81號9樓