我在Oracle Forms中有一个复杂的表单,在When-Validate-Item触发器中有一些重新计算逻辑。我的问题是,我希望这个逻辑只在用户更改了项目的值时执行,而不是在以编程方式更改时执行,就像在表单启动时填充项目一样。当然,我可以添加一些状态逻辑来防止以编程方式阻止表单启动时的验证逻辑,但这会给表单增加一些额外的复杂性。
我的问题是Oracle Forms中有任何方法可以阻止验证逻辑被执行,例如:将项目状态设置为有效?
答案 0 :(得分:1)
根据项目的更改方式以及项目上的属性,有几种方法可以执行此操作。
1)如果您的项目是数据库项目并且在正常查询期间填写,则不会触发when-validate-item触发器。
2)如果你没有用普通查询填写它,你可以改变验证时间从一个项目到另一个记录甚至是表格。这样,它只会在您执行提交或离开表单时进行验证。
3)当然要跟踪这些变化,不要让验证结束。
PS:通常你不会做任何事情,当你从幕后填充时,这是一个问题 - 所以我不知道触发器里面的代码是什么但是它应该只是对输入值的验证,如果这是错误的,它应该这样说,即使它填充代码而不是用户。
答案 1 :(得分:1)
以编程方式更改值时,
set_item_property('block_name.item', item_is_valid, property_true);