Exit_form无法按预期工作

时间:2014-04-12 16:50:16

标签: oracle oracleforms

我使用exit_form来关闭表单。但是,当我从另一个表单调用该表单然后按退出键时,它将返回到调用它的表单。 例: 如果form_a调用form_b。在form_b触发器exit_forms触发器中,它将调用form_b。 好吧,我需要退出所有打开的表格。

感谢

2 个答案:

答案 0 :(得分:3)

您需要使用new_form语句而不是open_form或call_form:

new_form退出当前表单并输入指定的表单。调用表单作为父表单终止。如果调用表单已由更高的表单调用,则Oracle Forms会保持较高的调用处于活动状态,并将其视为对新表单的调用。 Oracle Forms释放已终止的表单正在使用的内存(例如数据库游标).Oracle Forms使用与父表单相同的“运行”表单选项运行新表单。如果父表单是被调用的表单,则Oracle Forms将使用与父表单相同的选项运行新表单。可以指示NEW_FORM继续数据库事务,回滚到当前保存点或执行完全回滚。还可以指示它在仅查询模式下打开新表单并共享或不共享库数据。

答案 1 :(得分:0)

根据oracle表单帮助

call_form: 运行指定的表单,同时保持父表单处于活动状态。 Oracle Forms使用与父窗体相同的Runform首选项运行调用的窗体。当退出调用的表单时,Oracle Forms处理将在您调用CALL_FORM的位置的调用表单中恢复。

open_form: 打开指定的表格。使用OPEN_FORM创建多表单应用程序,即同时打开多个表单的应用程序。


所以我建议尝试使用带有no_active参数的open_form然后调用exit_form退出表单(A),在表单(A)关闭后,焦点将通过打开的表单(B)获得。 所以你完成表格(B)并关闭它,它将退出你的所有表格。

简化: 在form_A上按钮触发when_pressed_button(负责打开form_B)你可以尝试

OPEN_FORM('form_b', NO_ACTIVATE, NO_SESSION, 'my_parameters');
exit_form(no_validate);