Oracle-Apex 分拣穿梭车

Posted

技术标签:

【中文标题】Oracle-Apex 分拣穿梭车【英文标题】:Oracle-Apex sorting shuttle 【发布时间】:2020-05-18 17:32:07 【问题描述】:

我已经创建了“使用穿梭机的多对多关系” 当我从 LOV 中选择 ROLE_NAME 时,我想在右侧查看所选角色的权限,并在左侧查看角色没有的权限。

相反,我在右侧看到了哪个角色没有的权限,在左侧看到了该角色的权限。

【问题讨论】:

【参考方案1】:

有多种问题会导致此行为。

您看到的项目位于错误的一侧,因为您已切换值列表“SQL 查询”和“源”。 SQL 查询应该返回所有可能的值。 “来源”是选定的值。 航天飞机上有一个级联的 LOV。这不是级联 lov 所做的。级联 lov 控制可供选择的值(例如,如果 lov 1 是 REGIONS 并且 lov 2 是国家,那么您的级联 lov 将限制 lov 2 仅限于 lov 1 区域中的国家 - 这不是您的值列表中的情况. 您想更改所选角色的所选值。因此您需要对 lov 进行动态操作来刷新穿梭值,而不是级联 lov。 存在提交页面的现有动态操作。这不是必需的。相反,您可以使用带有“设置值”操作的动态操作将穿梭值设置为所选角色的值。 您的数据库操作仅执行插入操作。这意味着,如果您再次为已拥有权限的角色单击“保存”,您将创建重复值。

我已经解决了您工作区中名为“shuttle-test - KOEN”的应用程序中的所有问题(除了最后一个问题,即页面进程)

还有一件事:apex 中页面项目的命名约定是 P#page_number#_ITEMNAME。我强烈建议你坚持下去。

Rgds 科恩

【讨论】:

谢谢 Koen,你帮了我很多。这个应用程序是用于测试的,我知道我可以插入一个已经分配的权限。【参考方案2】:

您正在选择未分配给 LOV 项目(角色)的权限。所以它在右侧显示了未分配的角色。

如果您从查询中删除 NOT,那么它将在右侧显示分配的角色,在左侧显示要分配的角色

SELECT priv_id
FROM privileges s1
WHERE NOT EXISTS (SELECT 1
                  FROM roles s2
                  WHERE s2.fk_priv_id = s1.priv_id
                  AND s2.fk_role_id = :P_4_LOV
                  );

应该是

SELECT priv_id
    FROM privileges s1
    WHERE EXISTS (SELECT 1
                      FROM roles s2
                      WHERE s2.fk_priv_id = s1.priv_id
                      AND s2.fk_role_id = :P_4_LOV
                      );

【讨论】:

以上是关于Oracle-Apex 分拣穿梭车的主要内容,如果未能解决你的问题,请参考以下文章

Oracle-Apex 链接显示不同的值

数学建模大赛赛题解析:Mathorcup高校数学建模挑战赛-环形穿梭车的设计与调度

数学建模大赛赛题解析:Mathorcup高校数学建模挑战赛-环形穿梭车的设计与调度

扫地机器人辞职做快递?200亿件/年大市场很蓝

Oracle Apex 4.1 复选框更新穿梭

Oracle Apex 18 穿梭项目在右侧显示最后选择的值