我正在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
有人知道最好的设置方法吗?
谢谢。
答案 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
(由函数返回),将仅查询属性设置为是(您会发现(在“来源”属性组中)。
应该这样做。