Oracle APEX基于多个项目设置值的动态操作

时间:2015-11-20 15:34:44

标签: plsql oracle-apex

我需要有关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。

关于为什么我一直变为空而不是完整或正在进行的任何想法?此外,我需要它继续在用户正在更改项目时一遍又一遍地在页面上动态运行。是否存在“动态范围”的来源?

谢谢,

2 个答案:

答案 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

希望这有帮助。