如何避免脚本切换布局时触发FileMaker的OnLayoutExit脚本触发器?
区分FileMaker中手动与脚本触发的布局切换
针对你遇到的脚本自动切换布局触发OnLayoutExit必填字段检查的问题,有几种实用的解决方法:
方法1:利用内置触发器状态函数(推荐)
FileMaker提供了Get ( TriggerIsScript )函数,可直接判断当前触发器是否由脚本触发:
- 打开原布局的OnLayoutExit触发器脚本,在开头添加判断逻辑:
If [ Get ( TriggerIsScript ) = 0 ] # 这里放原来的必填字段检查和警告代码 End If
返回值为0时,说明是用户手动切换布局,才执行检查;返回1时则是脚本触发的切换,直接跳过检查。
方法2:全局变量标记脚本执行状态
通过全局变量标记脚本是否在运行,避免触发器误触发:
- 在跨表填充字段的脚本开头,设置全局变量标记:
Set Variable [ $$ScriptRunning; Value: True ] - 脚本执行完毕(返回原布局后),重置变量:
Set Variable [ $$ScriptRunning; Value: False ] - 修改OnLayoutExit脚本的检查逻辑:
If [ Not $$ScriptRunning ] # 执行必填字段检查 End If
注意使用全局变量(带两个$),确保在不同脚本上下文中都能读取到。
方法3:临时禁用触发器
临时关闭原布局的OnLayoutExit触发器,完成操作后再恢复:
- 在跨表填充脚本中,执行
Go To Layout()前禁用触发器:Set Layout Trigger [ Layout: "你的原布局名称"; Trigger: OnLayoutExit; Enabled: Off ] - 完成所有布局切换和字段填充,返回原布局后重新启用:
Set Layout Trigger [ Layout: "你的原布局名称"; Trigger: OnLayoutExit; Enabled: On ]
建议配合错误捕获脚本步骤,防止脚本异常中断导致触发器一直处于禁用状态。
内容的提问来源于stack exchange,提问作者NewBoard
相关产品推荐
相关产品推荐

