【问题标题】:HOW TO INSERT RECORD IN DATA BLOCK ON ORACLE FORMS如何在 ORACLE 表单的数据块中插入记录
【发布时间】:2019-06-22 12:37:46
【问题描述】:

我有 oracle 表单,其中包含数据块 B_ITEM,它引用数据库表 ma​​ster_item。用户在数据块中手动输入一个bill 中的两个项目,并且基于某些条件,我需要在同一块B_ITEM 中自动添加货运项目。您能否指导如何在数据块中插入数据。 (注意:我不想直接插入它所引用的表中)

步骤 1 在B_ITEM 的日期块上创建了一个画布,用户可以在其中提供输入。块
包含来自master_item 表的字段项。

第 2 步让我们说,用户在画布上输入了 两个项目,指的是 B_ITEM,然后单击确定按钮。

Step-3 因此,除了两项之外,还应在块B_ITEM 中插入一项,并应在第三行的画布上显示。


在上图中,我展示了单个项目的示例,因此一旦用户单击“确定”按钮,应根据设置表添加第二个项目。

MASTER_FREIGHT_LINK
项目 FREIGHT_ITEM
101396306 101396307

因此,一旦用户通过输入 ITEM-101396306 点击OK 按钮,就应在第二行添加帆布货运项目。

【问题讨论】:

    标签: oracle oracleforms


    【解决方案1】:

    我不太明白你有什么,所以 - 让我大声思考。

    • 数据库中有一个名为 MASTER_ITEM 的表
    • 您创建了一个表单,其 B_ITEM 块基于 MASTER_ITEM 表
    • 数据块包含一些项目,我认为是数据库项目(属于 MASTER_ITEM 表)
    • 您在这些项目中输入了一些数据
    • 根据它们的值(即某个条件),您需要填充位于同一块中但不是数据库项的 FREIGHT_ITEM。对吗?

    如果是这样的话,

    • 创建 FREIGHT_ITEM(有几种方法可以做到这一点;一种简单的方法是使用垂直工具栏的 + 按钮;或者,复制/粘贴现有​​项目之一并修改其属性)
    • 在应决定应将哪个值放入 FREIGHT_ITEM 的项目上创建 WHEN-VALIDATE-ITEM 触发器。将您提到的条件放入触发代码并填充 FREIGHT_ITEM 的值,例如

      if :b_item.item1 > 100 and 
         :b_item.item2 = 'A' 
      then
         :b_item.freight_item := 42;
      end if;
      

    现在,正如您所说,您不想将该值直接存储到数据库中(这意味着它不是数据库项),您必须手动执行此操作,创建额外的 ON-INSERT 和/或 PRE-INSERT 和/或 PRE-UPDATE 触发器,它们将这样做

    update master_item i set
      i.freight_item = :b_item.freight_item
      where i.some_id = :b_item.some_id;    
    

    【讨论】:

    • 数据块不包含任何值。基于画布中的用户输入(只不过是数据块B_ITEM)将填充MASTER_ITEM。但随着用户输入,我需要在同一个块中再添加一个货运项目。没有单独的 shipping_item 列。它的另一个项目(业务角度来看它的运费项目,即该账单的运费)
    • 好的,所以 - 当您运行表单时,它是空的。然后用户在属于 B_ITEM 数据块的某个项目中输入一个值(您没有在“画布中”输入任何内容;它只是一个 背景)。然后呢?您说“基于用户输入”“某事”将在数据库中填充一个表(表名是 MASTER_ITEM)。有什么价值观?此外,您需要添加“同一块中的货运项目” - 这是什么意思?您不能只是“添加”一个项目(如果您打算动态创建它) - 它必须存在于该块中。如果可能,请逐步描述您在做什么。
    • 通过编辑您发布的初始消息来做到这一点(描述);不要将所有内容都放在评论中,因为它可能难以阅读和遵循。另外,附上表格截图,可能会有所帮助。
    • 发布了类似的问题,您已经提供了一些答案。你能详细说明一下吗? stackoverflow.com/questions/50854199/…
    • 根据我掌握的信息,我已经说出了我的意思。应该阐述的是你,而不是我。
    【解决方案2】:

    ON-INSERT 触发器可用于覆盖 oracle 表单插入机制。在 on-insert 触发器中写入必要的插入语句,可以在任何表上插入数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 2018-11-24
      相关资源
      最近更新 更多