【问题标题】:Required fields in multiple blocks多个块中的必填字段
【发布时间】:2020-09-02 20:31:57
【问题描述】:

我有两个数据库块:A 和 B。我还有 3 个选项卡:

  • 第一个选项卡包含块 A 中的项目,
  • 第二个有块 B 中的项目,
  • 第三个有 A 块的物品

两个块中的所有字段都是必需的。

我的问题是我想按选项卡的顺序输入字段,但在我的情况下,因为当我想转到第二个选项卡时需要字段,所以我需要进入第三个才能输入所有字段,然后第二个。

如何解决?

【问题讨论】:

    标签: oracle forms plsql oracle11g oracleforms


    【解决方案1】:

    当您从第一个选项卡(基于表/块 A)导航到第二个选项卡(基于表/块 B)时,表单会执行验证,并且 - 并非所有属于表 A 的必填字段(那些放置到第三个选项卡)未填充 - 表单引发错误。

    一种选择是从属于表 A 并放置到第三个选项卡的所有字段中删除“必需”属性。这意味着您必须检查它们是否是手动填充的,即编写一个可以执行此操作的触发器。哪一个? PRE-INSERTPRE-UPDATE 可能是您的选择。代码看起来像

    if :tab3.field1 is null or
       :tab3.field2 is null or ...
    then
       message('Not all fields have been populated on tab 3');
       raise form_trigger_failure;
    end if;
    

    或者,重新排列布局

    • 将字段从选项卡 3 移动到选项卡 1,或
    • 切换标签 2 和标签 3 的位置

    或者,如果过程是这样的,可能是您的数据模型设置错误。您所描述的看起来像是某种“主从”关系,其中表 A 充当“主”,表 B 充当“详细”。您不应部分填充 master ,尤其是在需要其所有列时。如果这就是问题所在,那么它确实一个问题,因为更改数据模型并不一定很简单,因为它会影响很多事情。

    【讨论】:

    • 谢谢,这确实是个问题。我发现有人将表单属性验证设置为表单范围并将字段的属性(必需)设置为 false,然后将字段设置为必需并再次将表单验证设置为项目范围。他为什么这样做
    • 不客气。他们为什么这样做?好吧,与大多数问题一样,这有几个选项可能会有所帮助。哪一个是最好的”?我不知道,你应该尝试它们并选择最适合你的。
    猜你喜欢
    • 2014-06-25
    • 2019-06-28
    • 2017-06-09
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2019-04-24
    相关资源
    最近更新 更多