我在使用Oracle表单时遇到麻烦。场景是:
存在具有包含来自TABLE_A的记录的数据块的主窗体。
用户在数据块中选择一条记录,然后按“生成详细信息”按钮,此时将为TABLE_A中的主记录生成TABLE_B中的记录。
用户按下按钮“详细信息”,执行下一个代码:
DECLARE
L_Item item_master.item%TYPE;
L_pl_id PARAMLIST;
BEGIN
Post;
P_Destroy_Parameter_List('RTVDTL');
L_pl_id := Create_Parameter_List('RTVDTL');
L_Item := :B_RTV_DETAIL.Item;
Add_Parameter(L_pl_id, 'PM_RTV_ORDER_NO', Text_Parameter, To_Char(:B_RTV_HEAD.Rtv_Order_no));
Add_Parameter(L_pl_id, 'PM_ITEM', Text_Parameter, To_Char(L_Item));
--Open_Form('xxlmrtvdetail', ACTIVATE, No_Session, L_pl_id);
Call_Form('xxlmrtvdetail', No_Hide, No_Replace, No_Query_Only, No_Share_Library_Data);
END;
如果我使用“ Call_Form”功能注释行,并取消注释“ Open_Form”,则会显示数据。另外,如果我将“发布”更改为“提交”,则会显示数据。似乎子窗体正在使用其他会话。是否有人知道可能是问题的原因以及如何解决?
谢谢!
表单帮助为OPEN_FORM
的session_mode说以下:]
NO_SESSION
(默认值。)指定打开的表单应与当前表单共享相同的数据库会话。任何形式的POST
和COMMIT
操作都将导致在同一会话中运行的所有表单进行发布,验证和提交处理。
CALL_FORM
中没有这样的东西,因此很明显-将OPEN_FORM
与NO_SESSION
一起使用。然后,您可以使用POST
或COMMIT
(适合您的需要)。