Oracle Apex 5.1自定义主数据详细信息 我创建了一个包含两个区域的页面, 1. dept(某些文本字段,deptno,dname) 2. emp(交互式网格,ename,deptno) 一个提交按钮 流程:用户在' dname'上手动输入部门名称文本域 并在网格上添加一些员工行,最后当用户点击提交按钮时,首先创建一个deptno部门(自动增量) 然后用deptno插入网格行,创建第一个区域。 这意味着每个deptno都有一些相应的员工,这两个任务都会创建相同的时间。 (点击提交按钮后) 如果可能,你了解这一点,请给我一个解决方案。
答案 0 :(得分:0)
在您的页面上创建一个隐藏项目,该项目将包含您的新部门ID,在此示例中名为P1_depno。
使用属性>创建交互式网格时编辑>已启用设置为是 交互式网格 - 自动行处理(DML)进程(最有可能命名为 - 保存交互式网格数据)应该已添加到您的页面(如果你没有它,只需创建一个具有上述类型的新进程)。
在此过程之前创建一个新的PL / SQL进程(在我的示例中名为Insert Department),它将使用此代码插入部门:
declare
v_depno number;
begin
select deptno_sequence.nextval into :P1_depno from dual; --get the depno from your sequence
insert into dept (deptno, dname)-- insert the new department
values (:P1_depno,:P1_dname);
end;
非常重要的是,此流程必须在保存交互式网格数据流程之前运行。 here
现在编辑保存交互式网格数据流程,然后在目标类型选择 PL / SQL代码并添加以下代码:
begin
--insert the employees
case :APEX$ROW_STATUS
when 'C' then -- C for Create but you also can check for U (Update) and D (Delete)
insert into emp ( empno, ename, deptno )
values ( :EMPNO, :ENAME, :P1_depno )
returning rowid into :ROWID;
end case;
end;