Oracle表单:将项目回滚到数据库值而不更改表单

时间:2017-10-18 08:39:34

标签: oracle validation builder oracleforms

假设某些条件已满,则不应对整个块进行任何更改。我找到了一种简单的方法:

在blocklevel的'WHEN-VALIDATE-ITEM'触发器中,我写了这样的声明:

begin
    if (-- custom statement -- 
            and :system.record_status <> 'QUERY' 
            and get_item_property(:system.current_item,DATABASE_VALUE) <> name_in(:system.current_item)) then
        msgbox('Can''t change');
        copy(get_item_property(:system.current_item,DATABASE_VALUE), :system.current_item);
        raise form_trigger_failure;
    end if;
end;

copy语句将项值设置回数据库值。但问题是,我的表单状态将变为“已更改”,而实际上并没有真正可见的更改,因为该项目已回滚到数据库值。因此,当我尝试退出表单时,系统会询问我是否要保存更改。而且我不希望这种情况发生。我怎么能改变这个?

1 个答案:

答案 0 :(得分:0)

为避免向用户询问是否要保存值,您可以执行密钥提交

BEGIN
 EXECUTE_TRIGGER('KEY-COMMIT');
 standard.commit;
END;