kinderproc
kinderproc

Reputation: 308

oracle forms. child form doesn't see main form posted changes

I have a trouble with oracle forms. The scenario is:

  1. There is main form with a data block that contains records from TABLE_A.

  2. User selects a record in data block then press button "Generate details", at that moment records in TABLE_B are generated for the master record in TABLE_A.

  3. User press button "Details", the next code is executed:

    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. Detail form is opened, but there are no any records in data block that is linked to the detail table.

If I comment row with "Call_Form" function and uncomment "Open_Form" the data is shown. Also, if I change "Post" with "Commit", the data is shown. It seems that child form is using the other session. Does some one know what could be the reason of the problem and how to fix it?

Thanks!

Upvotes: 1

Views: 394

Answers (1)

Littlefoot
Littlefoot

Reputation: 143103

Forms help says the following for OPEN_FORM's session_mode:

NO_SESSION (The default.) Specifies that the opened form should share the same database session as the current form. POST and COMMIT operations in any form will cause posting, validation, and commit processing to occur for all forms running in the same session.

There's no such thing in CALL_FORM so it is quite obvious - use OPEN_FORM with NO_SESSION. Then you can use POST or COMMIT, whichever suits your needs.

Upvotes: 2

Related Questions