Plsql Oracle Apex选择列表LOV条件查询
我在Oracle Apex 20.2应用程序中有一个Plsql Oracle Apex选择列表LOV条件查询,plsql,oracle-apex,oracle-apex-20.1,oracle-apex-20.2,interactive-grid,Plsql,Oracle Apex,Oracle Apex 20.1,Oracle Apex 20.2,Interactive Grid,我在Oracle Apex 20.2应用程序中有一个可编辑交互式网格(用于产品销售表),其中有一个选择列表(用于选择产品) 目前我正在使用下面的查询来填充这个值列表 SELECT productName,productId FROM product WHERE productAvailability = 'Y' 有一些产品需要将产品可用性设置为“N”。当我进行此更改时,product\u sale的Interactive Grid显示的是productId,而不是productName 我需要
可编辑交互式网格(用于产品销售
表),其中有一个选择列表(用于选择产品
)
目前我正在使用下面的查询来填充这个值列表
SELECT productName,productId FROM product WHERE productAvailability = 'Y'
有一些产品需要将产品可用性设置为“N”
。当我进行此更改时,product\u sale
的Interactive Grid
显示的是productId
,而不是productName
我需要实现的是,对于新记录(当要通过单击“添加行”按钮将新记录添加到表中时),仅显示具有productAvailability='Y'
的产品,对于旧记录,无论productAvailability
如何,都显示所选产品的productName
表格结构
样本数据
交互式网格视图
如何实现这一点?您可以使用列设置中的“值的级联列表”选项实现这一点。让我用EMP示例表上的一个示例来说明-您应该能够将其转换为您自己的代码:
情境:布莱克不能被选为任何其他员工的经理,除非他已经是经理
这将是选择:
SELECT ename, empno FROM emp WHERE ename != 'BLAKE'
正如所料,对于BLAKE作为管理器的记录,MGR列将显示id,因为该值不在选择列表查询的结果集中。这就是你看到的行为
该解决方案有两个步骤:
将查询与具有当前行值的查询合并。我已经用CTE重写了查询
确保当前行中的列ename
绑定到:ename
。在“值的级联列表”中,将“父列”和“要提交的项”设置为ENAME
。现在,选择列表将采用:ENAME
的当前行值,并且对于具有“BLAKE”作为管理器的用户,值列表将包括“BLAKE”
谢谢你的回答。现在,product\u sale
的Interactive Grid
问题已经解决,它显示的是productId
,而不是productAvailability=N
产品的productName
。但当我单击“添加行”并选择一个新产品时,它会一直显示加载循环,而所选产品不会被选中。我认为问题在于值的级联列表
。这有什么办法吗?在我将父列
值设置为productSaleId
和要提交的项目
设置为productId
后,问题得到解决。
WITH all_mgr(dv, rv) AS
(SELECT ename, empno FROM emp WHERE ename != 'BLAKE'
UNION
SELECT m.ename, m.empno
FROM emp e
JOIN emp m ON e.mgr = m.empno
WHERE e.ename = :ENAME
)
SELECT dv, rv FROM all_mgr