You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Search Form执行Execute Query无明细弹提示的触发器配置咨询

无支付明细查询结果的提示实现方案

针对sales_orders/payment_details查询表单按回车触发Execute Query检索支付明细时,无匹配记录弹出No record found提示的需求,基于Oracle Forms开发的实现配置如下:

所需触发器与对应执行层级

优先选择无侵入方案,不改动原有查询逻辑:

  • 触发器名称:ON-MESSAGE
  • 执行层级:块级,仅绑定payment_details支付明细数据块
    禁止设置为Form级,避免拦截销售订单主块、其他功能块的默认系统消息,干扰其他模块查询逻辑。
  • 实现逻辑:
    表单原生执行Execute Query后,若查询结果为空会自动抛出消息码为40350的系统提示,在该触发器中拦截对应消息码,替换为自定义提示即可,核心代码如下:
    IF MESSAGE_CODE = 40350 THEN
        MESSAGE('No record found');
        -- 需中断后续默认逻辑时可添加下一行
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
    

如果需要在查询前后增加自定义校验规则,可选择第二种实现方式:

  • 触发器名称:KEY-EXEQRY
  • 执行层级:块级,仅绑定payment_details支付明细数据块
  • 实现逻辑:
    该触发器会覆盖当前块默认的回车/点击查询按钮触发Execute Query的原生逻辑,手动调用查询语句后判断返回记录数,为空时弹出提示,核心代码如下:
    -- 执行查询逻辑
    EXECUTE_QUERY;
    -- 判断当前块查询返回的记录总数
    IF GET_BLOCK_PROPERTY('PAYMENT_DETAILS', RECORDS_COUNT) = 0 THEN
        MESSAGE('No record found');
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
    

避坑说明

  • 不要将逻辑写在POST-QUERY触发器中:该触发器仅在查询到至少1条记录时逐行触发,无查询结果的场景下不会执行,完全无法触发提示逻辑。
  • 如果表单已存在Form级的全局ON-MESSAGE拦截逻辑,需要将块级触发器的执行优先级调高,避免全局逻辑覆盖当前块的自定义提示规则。

内容的提问来源于stack exchange,提问作者Sufi Javed Akram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:57:17