首页 > 解决方案 > Oracle APEX - 交互式网格设置

问题描述

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

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

我有一个类似于以下内容的 EMP 表:

First_Name Last_Name Dept_Code Dept_Name

John                Smith

Jane                 Doe            

在这个表中,有几行数据,但只有 First_Name 和 Last_Name 列中的数据。Dept_Code 和 Dept_Name 列中没有数据。

我还有一个如下所示的 DEPT 表:

Dept_Code Dept_Name

1234 金融

5678物流

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

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

SELECT *  
FROM EMP;  

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

例如,IG 看起来像:

First_Name Last_Name Dept_Code Dept_Name

John                Smith

Jane                 Doe    

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

所以最终的结果是:

电磁脉冲表:

First_Name Last_Name Dept_Code Dept_Name

John                Smith              5678              Logistics

Jane                 Doe   

伊格:

First_Name Last_Name Dept_Code Dept_Name

John                Smith              5678              Logistics

Jane                 Doe 

有谁知道设置它的最佳方法?

谢谢你。

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

解决方案


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

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

转到列的属性和 - for dept_name(由函数返回) - 将仅查询属性设置为(您将在“源”属性组中找到它)。

那应该这样做。


推荐阅读