【问题标题】:Disallow entering value in multiple row block Oracle Forms不允许在多行块 Oracle Forms 中输入值
【发布时间】:2018-11-30 04:54:10
【问题描述】:

我的桌子是这样的:

+-------------------+
|Name               |
+-------------------+
|Name1              |
|Name2              |
|Name3              |
|Name4              |
|Name1Jr            |
|Name2Jr            |
|Name3Jr            |
|Name4Jr            |
+-------------------+

我的多行块看起来像:

如果名称不存在于块中,我想要的是禁止输入以 Jr 结尾的名称。像这样的:

如果我输入值 Name1 和 Name2:

然后它将允许我输入 Name1Jr 和 Name2Jr,但不能输入 LOV 中但尚未在块中的 Jr 名称:

注意:我在此列中使用值列表。谢谢!

【问题讨论】:

  • 首先,不清楚为什么你的爱人应该有 jr。值,如果您不希望它们插入。其次,您可以添加 when-validate-item 触发器来检查插入的值是否为 jr。或不。如果JR。 - if :block.item name like '%...jr%.'然后用一些消息引发表单触发失败。如果您需要在块级别进行验证,则将 when-validate-block(我忘记触发器的确切名称,抱歉)添加到块级别。与记录级别相同 - 使用记录级别触发器。有关“like %”运算符的帮助,请查看表单帮助中的 COPY 命令。

标签: oracle oracle11g oracle10g oracleforms


【解决方案1】:

我能想到两个选择。

第一个依赖于表格内容。当您使用值列表 (LOV) 时,它可能看起来像这样(假设表名是 TEST,由 CTE 表示):您将 UNION 当前名称与 fabricated "nameJr”值(DECODE 是为了避免出现“Name3JrJr”的情况):

SQL> with test (col) as
  2    (select 'Name1'   from dual union
  3     select 'Name3'   from dual union
  4     select 'Name3Jr' from dual
  5    )
  6  select col from test
  7  union
  8  select col || decode(substr(col, -2), 'Jr', null, 'Jr') from test
  9  order by col;

COL
---------
Name1
Name1Jr
Name3
Name3Jr

SQL>

表单项的“从列表验证”属性应设置为“是”,以便表单拒绝 LOV 中不存在的值。

但是,如果您输入的名称在表格中不存在怎么办?例如,“名称2”?在WHEN-VALIDATE-ITEM 触发器中使用SET_ITEM_PROPERTY 并将VALIDATE_FROM_LIST 属性修改为PROPERTY_FALSE。在WHEN-CREATE-RECORD 触发器中将其设置回TRUE

此外,您必须接受新添加的“Name2”值并将其显示在 LOV 中。如何? POST 你所做的更改(不要COMMIT,只需POST)。在哪里?由于这是一个受限程序,请尝试使用KEY-NEXT-ITEMWHEN-NEW-RECORD-INSTANCE 触发器。

第二个选项将动态创建 LOV,其值将是当前显示在块中的值。您将使用内置的CREATE_GROUP 以及ADD_GROUP_ROW,它将块值添加到记录组中(它是LOV 的来源)。 WHEN-NEW-RECORD-INSTANCE 可能是您的选择,因为它允许受限制的程序,并且您应该使用 NEXT_RECORD(至于 受限)循环“滚动”该块。阅读表单帮助中的 CREATE_GROUP;它包含一个如何使用它的示例。此外,如有必要,请点击其他示例的链接。

【讨论】:

  • 对不起先生@Littlefoot。我认为我之前的问题并不清楚。我编辑了一些。请重读。再次感谢您。
  • 将该条件应用于 LOV 的记录组查询。
  • 非常感谢先生!
猜你喜欢
  • 1970-01-01
  • 2020-08-28
  • 2012-04-06
  • 1970-01-01
  • 2013-05-22
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多