我需要有关Oracle APEX 4.2中表单页面上的动态操作的帮助。我有许多项目设置,当在下拉列表中更改时触发动态操作以返回“完成”或“在Porgess中”。当页面加载或项目更改时,我一直变为空。我也检查了调试,它已经验证我刚刚变为null。这是我的PL / SQL函数体。
declare l_status varchar2(255);
begin
if
:p2_dbst_1_1 = 'Complete' AND
:p2_dbst_1_2 = 'Complete' AND
:p2_dbst_1_3 = 'Complete' AND
:p2_dbst_2_1 = 'Complete' AND
:p2_dbst_2_2 = 'Complete' AND
:p2_dbst_2_3 = 'Complete' AND
(:p2_dbst_2_3A = 'Complete' OR
:p2_dbst_2_3A = 'NA') AND
:p2_dbst_2_4 = 'Complete' AND
:p2_dbst_3_1 = 'Complete'
THEN l_status := 'Complete';
ELSE l_status := 'In Progress';
end if;
end;
唯一可以是'完整'或'NA'的项目是3A。
我确实用逗号分隔了更改项中的所有这些项目,并且我将l_status作为仅显示项目返回到dbst_3_1。
关于为什么我一直变为空而不是完整或正在进行的任何想法?此外,我需要它继续在用户正在更改项目时一遍又一遍地在页面上动态运行。是否存在“动态范围”的来源?
谢谢,
答案 0 :(得分:2)
您的PL / SQL在结束之前就丢失了:
return l_status;
但是我认为可以使用这个Javascript表达式而不是PL / SQL,这会更有效:
(
$v('P2_DBST_1_1') == 'Complete' &&
$v('P2_DBST_1_2') == 'Complete' &&
$v('P2_DBST_1_3') == 'Complete' &&
$v('P2_DBST_2_1') == 'Complete' &&
$v('P2_DBST_2_2') == 'Complete' &&
$v('P2_DBST_2_3') == 'Complete' &&
($v('P2_DBST_2_3A') == 'Complete' ||
$v('P2_DBST_2_3A') == 'NA') &&
$v('P2_DBST_2_4') == 'Complete' &&
$v('P2_DBST_3_1') == 'Complete'
)
? 'Complete'
: 'In Progress'
答案 1 :(得分:1)
确保您不要忘记提交并返回页面项。您可以在PL / SQL代码框下找到列出它们的位置,名为要提交的页面项,要返回的页面项
您应该在dbmst_3_1上添加一行以保存l_status。然后将其添加到页面项目以返回。
declare
l_status varchar2(255);
begin
if
:P2_DBST_1_1 = 'Complete' AND
:P2_DBST_1_2 = 'Complete' AND
:P2_DBST_1_3 = 'Complete' AND
:P2_DBST_2_1 = 'Complete' AND
:P2_DBST_2_2 = 'Complete' AND
:P2_DBST_2_3 = 'Complete' AND
(:P2_DBST_2_3A = 'Complete' OR
:P2_DBST_2_3A = 'NA') AND
:P2_DBST_2_4 = 'Complete' AND
:P2_DBST_3_1 = 'Complete' THEN
l_status := 'Complete';
ELSE
l_status := 'In Progress';
end if;
:dbst_3_1 := l_status;
end;
您的要提交的网页项目应包含以下内容: P2_DBST_1_1,P2_DBST_1_2,P2_DBST_1_3,P2_DBST_2_1,P2_DBST_2_2,P2_DBST_2_3,P2_DBST_2_3A,P2_DBST_2_3A,P2_DBST_2_4,P2_DBST_3_1
而要退回的网页项目应包含以下内容:
DBST_3_1
希望这有帮助。