2017-04-26 51 views
1

我已经创建了一个Master-Detail页面。详细信息区域是报告区域。 假设,主地区记录制造的产品及其细节。
假设详细区域记录涉及的员工列表(多行)及其详细信息。
为了获得重发,EMPNO列存在于详细表格中,但不包含EMP_NAME列。 我的问题是,我想在详细区域显示一个非数据库列EMP_NAME。 EMP_NAME保存基于EMPNO列值的值(查询EMP表后)。如何实现这一目标?请帮忙。 (我用的Apex 4.2.6)如何忽略APEX报告中非数据库列的状态

感谢, -Anand

+0

@Ftaveras 让我再举一个例子。想要如何完成。 对于订单管理主页 - 详细信息页面,详细信息部分将会有多个产品。 只有PRODUCT_ID存在于详细表中。 但是,我们显示PRODUCT_NAME。它是如何实现的? 通过加入对产品的查询,我们可以获得PRODUCT_NAME。很好,它有助于在记录分录期间。 但是如何添加新行?如何在我们选择产品ID后立即显示PRODUCT_NAME。 有人可以帮忙吗。谢谢。 –

回答

0

你可以标量子查询栏添加到查询:

select ..., 
     (select emp_name from emp where emp.empno = det.empno) as emp_name 
    from details det 
    ... 

APEX将会使这个显示为默认文本列。

但是,如果您希望此功能也显示新记录,那还不够。你可以代替改变显示为EMPNO列的属性来选择列表,然后定义LOV为

select ename, empno from emp order by ename 

现在不是在EMPNO键入值并试图获得的名称出现在另一列中,名称将出现在选择列表而不是 EMPNO。或者您可以像这样显示EMPNO:

select empno||' - '||ename as d, empno from emp order by 1 
+0

只要列属性是“显示为文本(转义特殊字符,不保存状态)”,它的工作原理。 但是,在添加新记录期间,我无法填充字段EMP_NAME,因为它仅显示。 如果我将其设置为“文本字段”,则在导航或添加行时出现错误。 “发生了1个错误•自用户启动更新过程以来,数据库中当前版本的数据已更改...” –

+0

@anandgp查看更新回答 –

+0

暂时让我们忽略如何填充列 假设我将输入值。 但是如何只在添加记录期间从显示更改为文本? 如果我将其设置为文本字段,当我尝试保存记录时它会不会再次出现错误(之前在保存文本字段时它提供了错误)? –

0

您可以使用_NOSUBMIT来修改忽略的列名称。您的查询将如下所示:

SELECT D.EMPNO 
... 
, EMP.EMP_NAME AS EMP_NAME_NOSUBMIT 
, FROM ... 

Apex将忽略nosubmit字段。

+0

我向EMP_NAME_NOSUBMIT添加了EMP_NAME列。 –

+0

我向EMP_NAME_NOSUBMIT添加了EMP_NAME专栏。 我把列属性“显示为”改为“测试字段”。 我使用ajax调用来在LOV选择EMPNO之后填充它的值。 但是,只要我提交页面,甚至导航记录,我得到以下错误 - “1发生错误•数据库中的当前版本的数据已更改,因为用户启动更新过程...” 如果我更改列属性“显示为“to”显示为文本(转义特殊字符,不保存状态)“ 当我导航记录时,它显示EMP_NAME。 但在添加新记录期间,无法填充EMP_NAME,因为它仅显示。 –

+0

请将“Test Field”改为“Text Field” –