Oracle APEX-交互式网格设置

时间:2019-07-25 17:18:37

标签: oracle oracle-apex oracle-apex-5 oracle-apex-5.1 oracle-apex-18.2

我正在Google Chrome上使用Oracle APEX 18.2.0.00.12,并且我对使用以下要求来设置交互式网格的最佳/首选方式有疑问:

注意:为简化问题,我将使用伪造的表名和表列名来表示问题。

我有一个EMP表,看起来像以下内容:

名字姓氏部门代码部门名

John                Smith

Jane                 Doe            

在此表中,有几行数据,但是“名字”和“姓氏”列中只有数据。 Dept_Code和Dept_Name列中没有数据。

我还有一个DEPT表,看起来像下面这样:

部门代码部门名称

1234财务

5678物流

此表中有几行数据,并且这两列中都存在数据。

我想基于EMP表建立一个交互式网格,该表包含该表中的所有列,但是Dept_Name列将是“仅显示”。因此,对IG的查询将类似于

SELECT *  
FROM EMP;  

问题:我希望用户能够在IG的Dept_Code列中输入员工的部门代码。当用户单击“保存”时,我希望将部门代码保存在该行的EMP表的Dept_Code列中,并将该行的IG的Dept_Name列保存为DEPT表中的相应部门名称。然后,我希望将该部门名称保存在EMP表的该行的Dept_Name列中。

例如,IG看起来像:

名字姓氏部门代码部门名

John                Smith

Jane                 Doe    

如果用户在IG中输入5678作为John Smith的Dept_Code,然后单击“保存”,我希望将5678保存在EMP表中该行的Dept_Code列中,那么我希望该行的Dept_Name列在IG中自动填充后勤(此数据是从DEPT表中提取的),并且在EMP表中该行的Dept_Name列中也包含后勤。

所以最终结果将是:

EMP表:

名字姓氏部门代码部门名

John                Smith              5678              Logistics

Jane                 Doe   

IG:

名字姓氏部门代码部门名

John                Smith              5678              Logistics

Jane                 Doe 

有人知道最好的设置方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

一个选择是创建一个函数,该函数将返回部门名称(代码将是参数),例如

create or replace function f_dept_name (par_dept_code in dept.dept_code%type)
  return dept.dept_name%type
is
  retval dept.dept_name%type;
begin
  select dept_name
    into retval
    from dept
    where dept_code = par_dept_code;

  return retval;
end;

然后使用这样的查询创建一个交互式网格:

select first_name, 
       last_name,
       dept_code, 
       f_dept_name(dept_code) dept_name
from emp

转到列的属性,然后-对于dept_name(由函数返回),将仅查询属性设置为(您会发现(在“来源”属性组中)。

应该这样做。