【问题标题】:Prevent execution of When-Validate-Item in Oracle Forms防止在 Oracle Forms 中执行 When-Validate-Item
【发布时间】:2013-09-26 06:38:23
【问题描述】:

我在 Oracle Forms 中有一个复杂的表单,在 When-Validate-Item 触发器中有一些重新计算逻辑。我的问题是,我希望仅在用户更改项目的值时执行此逻辑,而不是在以编程方式更改它时执行,例如在表单启动时填充项目。当然,我可以添加一些状态逻辑来防止以编程方式阻止表单启动时的验证逻辑,但这会给表单增加一些额外的复杂性。

我的问题是,Oracle Forms 中是否有任何方法可以防止验证逻辑被例如执行。将项目状态设置为有效?

【问题讨论】:

    标签: oracleforms


    【解决方案1】:

    当值以编程方式改变时,

    set_item_property('block_name.item', item_is_valid, property_true);
    

    【讨论】:

      【解决方案2】:

      有几种可能的方法可以做到这一点,具体取决于您的项目如何更改以及项目上的哪些属性。

      1) 如果您的项目是数据库项目并且您在正常查询期间填写,则不会触发 when-validate-item 触发器。

      2) 如果您不使用普通查询填充它,您可以将验证时间从项目更改为记录,甚至更改为表单。这样,只有在您执行提交或离开表单时才会对其进行验证。

      3) 当然会跟踪这些变化,不要让验证失效。

      PS:通常你不会在 when-validate-item 触发器中做任何事情,当它从幕后填充时会出现问题,所以我不知道触发器内的代码是什么但是它应该只是对输入值的验证,如果这是错误的,即使它是用代码而不是用户填充的,它也应该这样说。

      【讨论】:

      • 感谢您的回复。我的想法和你差不多。我正在以编程方式而不是从数据库查询中填充项目。 When-Validate-Item 触发器中的逻辑是真正的验证逻辑,包括货币转换和同步。一些逻辑可能会被提升到表单级别和提交周期,但这会导致更差的用户体验。我有时通过跟踪何时验证而不是验证来解决这类问题。不好且易于支持,但一个可行的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2012-12-14
      • 2017-01-04
      • 2011-08-28
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多