常见问题
遇到问题了吗?不用担心,答案都在这。
全站搜索

为什么公式没有触发或结果错误?

“为什么第一次设公式的时候有算出结果,修改公式之后套公式的字段却没有运算出新结果?”

“为什么汇入数据/更新别张表单字段值/抛转创建的数据没有触发公式?”

如果你遇到这些问题,这边要先提到 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楼