经典报告中的多个连接表;仅插入第一行而不是选中的行

时间:2018-04-27 20:32:52

标签: oracle oracle-apex-5.1

我对经典报告有疑问,它基于多个表连接。我已经编写了循环并仅插入选中的框项目的进程。但它只选择第一项。但是,如果在单个表上执行此操作,则它可以正常工作如果有人可以在查询基于多个连接时帮助我插入所选记录,我将不胜感激。

我的查询如下。

select apex_item.checkbox2(1, ord.rowid) sel,
apex_item.text(2,cust.name) Customer,
apex_item.text(3, it.item_id) Item,
apex_item.text(4,it.product_id) Product,
apex_item.text(5,price) price,
apex_item.text(6,quantity)||apex_item.hidden(7,ord.id)   qty
from s_ord ord,
s_item it,
s_customer cust
where ord.id=it.ord_id
and cust.id=ord.customer_id

我的流程如下;

for i in 1..apex_application.g_f01.count loop
    APEX_DEBUG_MESSAGE.LOG_MESSAGE(p_message => 'G_F01 : '||APEX_APPLICATION.G_F01(i), p_level => 1);
    APEX_DEBUG_MESSAGE.LOG_MESSAGE(p_message => '   Q1 : '||APEX_APPLICATION.G_F02(i), p_level => 1);
    APEX_DEBUG_MESSAGE.LOG_MESSAGE(p_message => '   P1 : '||APEX_APPLICATION.G_F03(i), p_level => 1);
end loop;
end;

1 个答案:

答案 0 :(得分:1)

据我所知,如果将表格形式创建为两个(或更多)表的JOIN(不调查原因),则不能这样做。

这就是我的所作所为:

  • 我将表格形式基于一个表格(我计划使用的表格(插入,更新)
  • 列通常使用函数
  • 显示通常从其他表(使用JOIN s)获取的列

这解决了这个问题。

例如:您想要更新员工的信息,但也要显示他们所在的部门名称。

不要:

select e.empno, 
  e.ename, 
  d.dname,
  e.sal
from emp e join dept d on e.deptno = d.deptno;

执行:

create function f_dname (par_deptno in dept.deptno%type) 
  return dept.dname%type
is
  retval dept.dname%type;
begin
  select max(d.dname) 
    into retval
    from dept d
    where d.deptno = par_deptno;
  return retval;
end;
/

select e.empno, 
  e.ename, 
  f_dname (e.deptno) dname,  --> function instead of DEPT.DNAME
  e.sal
from emp e;                  --> no join

我希望它会有所帮助。