Oracle APEX - 交互式网格设置

Posted

技术标签:

【中文标题】Oracle APEX - 交互式网格设置【英文标题】:Oracle APEX - Interactive Grid Set-Up 【发布时间】:2019-07-25 17:18:37 【问题描述】:

我在 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 表:

部门代码部门名称

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 列中,然后我想要该行的 Dept_Name 列在 IG 中自动填充 Logistics(此数据是从 DEPT 表中提取的)以及 EMP 表中该行的 Dept_Name 列以包含 Logistics。

所以最终的结果是:

EMP 表:

First_Name Last_Name Dept_Code Dept_Name

John                Smith              5678              Logistics

Jane                 Doe   

IG:

First_Name Last_Name Dept_Code Dept_Name

John                Smith              5678              Logistics

Jane                 Doe 

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

谢谢。

【问题讨论】:

【参考方案1】:

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

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(由函数返回) - 将 query only 属性设置为 yes(您会在“源”属性组)。

应该可以的。

【讨论】:

以上是关于Oracle APEX - 交互式网格设置的主要内容,如果未能解决你的问题,请参考以下文章

删除 Oracle Apex 交互式网格行操作

Oracle APEX 交互式网格:如何使用 PLSQL 访问内容?

重复行 - 交互式网格 - Apex Oracle

穿梭列上的 Oracle APEX 交互式网格过滤器 APEX 19.2

在 Oracle APEX 交互式网格中使用 JavaScript 从应用程序项中设置列值

如何仅使用 sql 在 apex oracle 的交互式网格中实现选择列表以及 oracle APEX 中可用的内容?