oracle形式。子表单看不到主表单发布的更改

问题描述 投票:1回答:1

我在使用Oracle表单时遇到麻烦。场景是:

  1. 存在具有包含来自TABLE_A的记录的数据块的主窗体。

  2. 用户在数据块中选择一条记录,然后按“生成详细信息”按钮,此时将为TABLE_A中的主记录生成TABLE_B中的记录。

  3. 用户按下按钮“详细信息”,执行下一个代码:

    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;
  1. 已打开详细信息表单,但是数据块中没有任何记录链接到详细信息表。

如果我使用“ Call_Form”功能注释行,并取消注释“ Open_Form”,则会显示数据。另外,如果我将“发布”更改为“提交”,则会显示数据。似乎子窗体正在使用其他会话。是否有人知道可能是问题的原因以及如何解决?

谢谢!

oracle plsql oracleforms
1个回答
0
投票

表单帮助为OPEN_FORMsession_mode说以下:]

NO_SESSION(默认值。)指定打开的表单应与当前表单共享相同的数据库会话。任何形式的POSTCOMMIT操作都将导致在同一会话中运行的所有表单进行发布,验证和提交处理。

CALL_FORM中没有这样的东西,因此很明显-将OPEN_FORMNO_SESSION一起使用。然后,您可以使用POSTCOMMIT(适合您的需要)。

© www.soinside.com 2019 - 2024. All rights reserved.