:SYSTEM.BLOCK_STATUS 控制BLOCK的插入操作

在开发form界面时,遇到录入数据后界面刷新并录入第二条数据的问题。通过使用WHEN-CREATE-RECORD触发器,根据不同状态控制界面操作,避免了数据重复录入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  题记:近日在做一个考察报告录入的form开发,遇到这样一个问题:有一个界面本来只能录入一次数据,但是当我录入数据不保存, 然后再点击新建或者KEY-DOWN键,界面被刷新了,再输入数据保存,会同时保存两条数据。

  分析:

打开界面时,:SYSTEM.BLOCK_STATUS='NEW',此时点击新建或者KEY-DOWN键,会提示:FRM-40102:记录必须被插入或删除。

        界面数据发生变化时,:SYSTEM.BLOCK_STATUS='CHANGED',此时点击新建或者KEY-DOWN键,界面被刷新,输入的是第二条数据。

        保存或查询时,:SYSTEM.BLOCK_STATUS='QUERY',此时点击新建或者KEY-DOWN键,界面被刷新,输入的是第二条数据。

  解决方案:在需要控制的BLOCK中加入WHEN-CREATE-RECORD触发器,在根据:SYSTEM.BLOCK_STATUS的值进行控制。

      IF :SYSTEM.BLOCK_STATUS = 'QUERY' THEN
             RAISE Form_Trigger_Failure;--阻止程序继续进行
    ELSIF :SYSTEM.BLOCK_STATUS = 'CHANGED' THEN

           --给有好提示

            FND_MESSAGE.SET_STRING('请在继续前先保存所做更改。');

            FND_MESSAGE.SHOW;

             RAISE Form_Trigger_Failure;
 END IF;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值