我有一个oracle表单,其中包含引用数据库表 master_item 的数据块 B_ITEM 。用户正在数据块中手动在一张 bill 中输入两个项目,根据某些条件,我需要在同一块 B_ITEM 中自动添加货运项目。您能指导一下如何在数据块中插入数据吗? (注意:我不想直接插入它所引用的表中)
步骤1在B_ITEM
的日期块上创建了一个画布,用户可以在其中提供输入。块
包含master_item
表中的字段项。
第2步,我们说,用户在画布上输入了两个项目,该项目引用了B_ITEM
,然后单击“确定”按钮。
步骤3因此,连同两个项目一起,应该在块B_ITEM
中插入一个项目,并且该项目应该显示在画布上的第三行上。
在上图中,我显示了单个项目的示例,因此一旦用户单击“确定”按钮,第二个项目应根据设置表添加。
MASTER_FREIGHT_LINK
ITEM FREIGHT_ITEM
101396306 101396307
因此,用户输入ITEM-101396306单击OK
按钮后,应立即在第二行中添加In canvas货运项目。
答案 0 :(得分:2)
我不太了解您的财产,所以-让我大声思考。
如果是这样,
+
按钮;或者复制/粘贴现有项之一并修改其属性)在应确定应将哪个值放入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;
答案 1 :(得分:0)
ON-INSERT触发器可用于覆盖oracle表单插入机制。在插入时触发器中写入必要的插入语句,该语句可以在任何表上插入数据。