oracle apex排序穿梭程序

goqiplq2  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(431)

我已经创建了“使用穿梭机的多对多关系”,当我从lov中选择角色名称时,我想在右侧看到所选角色的权限,在左侧看到角色没有的权限。
相反,我在右边看到了角色没有的特权,在左边看到了这个角色的特权。

zz2j4svz

zz2j4svz1#

有各种各样的问题导致了这种行为。
您看到的条目是错误的,因为您已经切换了值列表“sql query”和“source”。sql查询应返回所有可能的值。““源”是选定的值。
航天飞机上有一个爱的级联。这不是层叠的爱所做的。级联lov控制可供选择的值(例如,如果lov 1是regions,lov 2是countries,则级联lov将仅将lov 2限制为lov 1中区域中的国家/地区-在值列表中不是这种情况)。要更改选定角色的选定值。因此,您需要对lov执行动态操作来刷新shuttle值,而不是级联lov。
存在提交页面的现有动态操作。这是不需要的。相反,您可以使用带有操作“set value”的动态操作将shuttle值设置为所选角色的值。
数据库操作只执行插入操作。这意味着,如果您再次单击已具有权限的角色的“保存”,您将创建重复的值。
我已经修复了所有的问题(除了最后一个,页面进程),在一个名为“穿梭机测试-koen”的应用程序在您的工作区
还有一件事:apex中页面项的命名约定是p#page#u number##u itemname。我强烈建议你坚持这一点。
rgds科恩

fivyi3re

fivyi3re2#

您正在选择未分配给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
                      );

相关问题