Sup*_*ero 1 oracle oracle-apex
我有一个Oracle APEX页面,它通过带有apex_item动态生成项目的经典报告来收集数据.像这样的东西:
select apex_item.radiogroup(qt.save_position, 1, qt.answer, null, null, null, null) col01
from xxpay_360_questions qt
where qt.questionnaire_id = 21
Run Code Online (Sandbox Code Playgroud)
然后,我使用提交按钮保存答案,该按钮使用"提交页面"并调用PL/SQL从上面插入/更新动态生成的项目.像这样的东西:
insert into xxpay_360_answers values (apex_application.g_user, APEX_APPLICATION.G_F01(1));
commit;
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在单击提交按钮时转换到动态生成的项目的下一页(因为我每页只有50个顶点变量).
提交按钮只有"提交页面"和"转换到页面"的选项,而不是"提交页面然后转换到页面".
有没有一种方法通过PL/SQL过渡作为提交代码的一部分?或者是否有一个事件可以在页面提交后转换?
此外,这如何处理错误和漂亮的"保存"飞过该顶点?
您需要在后处理区域上创建一个分支:

然后,您需要设置为分支点:在处理后提交(计算,验证和处理后)和分支类型为:分支到页面

然后指定您要去的页码:

最后,只有在按下一个特定按钮并且某个特定条件的计算结果为true时,才能将分支设置为触发:

我认为这将满足您的需求.
但是如果你想用PL/SQL做,你可以这样做:
将页面ID替换为要将用户重定向到的实际页面ID.
BEGIN
IF(CONDITION)THEN
htp.init;
owa_util.redirect_url('f?p=&APP_ID.:10:&APP_SESSION.'); /*Replace 10 with actual Page Number*/
apex_application.stop_apex_engine;
ELSE
htp.init;
owa_util.redirect_url('f?p=&APP_ID.:20:&APP_SESSION.'); /*Replace 20 with actual Page Number*/
apex_application.stop_apex_engine;
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
或者您可以使用APEX_UTIL.REDIRECT_URL过程.