Master-detail form in HTML DB

Is there any way to create a master form with multiple detail tabs on the same page? This can be easily done in Oracle Forms by creating a master block and several child blocks on the same form.
Thanks.

Andy,
The master-detail wizard generates only one detail tabular form or report. When using the master-detail wizard, you’re asked whether you want to edit the detail records on the same page as the master record using a tabular form, or if you want to display the detail records as a report with links to a form page that lets you edit the detail records individually. If you want to have more than one detail report on your page, you can easily do that by adding additional reports manually. However those reports can’t be tabular forms, because you can only have one tabular form per page. So those detail reports need to link to form pages, where you then can edit your detail records.
Regards,
Marc

Similar Messages

  • Master/Detail form with modal edit

    I have a master/detail form that I generated using the wizard that I want to change to have a modal Edit button; i.e. the behavior I want is that the form view is initially read-only and you then have to click an Edit button to make the form editable.
    I figured out how to do this for the master row by making the edit button redirect back to the same page with the request set to 'EDIT' and then making all the page items read-only with a condition REQUEST <> 'EDIT'.
    I cannot find a good way to do this for the detail rows, which are actually a report with editable columns. The problem is that the 'Tabular Form Element' section of the 'Column Attributes' page does not have a read-only condition.
    The only work around I can come up with so far is to have a second read-only report region with the same SQL query and then display either the editable or non-editable report region conditionally depending on whether the request is EDIT. But this obviously not ideal (having same SQL in two places, etc.).
    If anyone can think of a better way to do this, I'd be grateful.
    HTML DB Team: Can you log the addition of a read-only condition attribute on editable report columns as an enhancement request?

    Simply add the lookup table to the FROM clause and join its PK with the FK in the master table in your query. That's basic SQL, and you definitely must get a good grasp of SQL to do more than very basic work in APEX.
    For a good example, please see http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/build_app.htm#BCEBJJGB
    While you're at it, read and implement the tasks outlined in the 2 Day + Application Express Developer's Guide - http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/toc.htm. After that, read the "Oracle Application Express 3.0-- Building a Functional Application" OBE in http://www.oracle.com/technology/obe/apex/obe30/apexdev30.htm - great stuff.
    Georger

  • Master-Detail-Form; Hide/Show columns in detail form depending on column

    Hi,
    i have a master detail form. In the detail form i have the columns:
    ID, MASTER_ID_FK, PC_SOURCE, A_C1, A_C2, A_C3, B_C1, B_C2, B_C3
    The Column PC_SOURCE should be a LOV with values
    NULL
    A
    B
    So if i choose or enter a master record the detail form appears and i can enter one or more detail records.
    PC_SOURCE is the first column.
    If i choose A, the columns B_C1, B_C2, B_C3 should disappear as there should no entry possible.
    If i chhose B, the columsn A_C1, A_C2, A_C3 should disappear as there should no entry possible.
    Is that possible?
    I tried a little on my own but without success. I tried to put into the first column (PC SOURCE lov) in Element Attributes a javascript call like onChange="do_Refresh('#PC_SOURCE#');"
    The javascript funktion do_Refresh tries to catch the column value and set a hidden item P1_SOURCE like document.getElementById('P1_SOURCE').value = v_source;
    But this does not work, as there is not the value of the column fetched.
    And probably can´t work because of the more than one detail rows.
    Thanks & regards,
    Matthias

    Hi,
    The html for your detail form will be a table of input elements with names f01,f02,etc. The columns for the key fields are normally hidden so your PC_SOURCE column will probably use the name f03. The name for column A_C1 will be f04 etc.
    Once you have the input names for your columns you can create a dynamic action (DA) to hide the elements you want.
    You want the DA to fire when any PC_SOURCE element is changed so you want the when to be:
    Event: Change
    Selection Type: jQuery Selector
    jQuery Selector: input[name="f03"]
    Condition: no condition
    The action is to hide an element in the same row if the changed element is a value. So the action should be:
    Action: Execute JavaScript Code
    Fire when Event is: true
    Code: if(this.triggeringElement.value=="A"){$x_Hide('f04_'+this.triggeringElement.id.split('_')[1])}
    You then need lots of true actions for each element you want to hide.
    Rod West

  • Auto Query in Master Detail Form using dynamic page doesn't work

    I created a Master-Detail form, and implement AutoQuery using a dynamic page
    with the following code :
    <HTML>
    <BODY>
    <ORACLE>DECLARE
    nre_ VARCHAR2(100);
    BEGIN
    nre_ := emp_nre;
    if nre_ is not null then
    net_portal.Popula_Agregados(nre_);
    net_portal.Popula_Docs_Agregados (nre_);
    htp.p('<iframe id=myFrame name="myFrame" frameborder=0 width="250%"
    height="300"
    src="/pls/portal/PORTAL.wwa_app_module.link?p_arg_names=_moduleid&p_arg_values=
    3
    388118140&p_arg_names=_show_header&p_arg_values=NO&p_arg_names=_cad_nre_cond&p_a
    rg_values=%3D&p_arg_names=cad_nre&p_arg_values='||nre_||'">
    </iframe>');
    end if;
    EXCEPTION
    WHEN OTHERS THEN
    htp.p(SQLERRM);
    END;
    </ORACLE>
    </BODY>
    </HTML>
    It works fine when we access the first time to the page, but if i press the
    save button after inserting or updating a detail record, the header record is
    lost. How can i avoid this situation ?

    I changed query:
    select
    Replace(
    '<img src="#IMAGE_PREFIX#ed-item.gif" border="0" alt="EditMap" usemap="#editmap***id***"></img>
    <map name="editmap***id***">
    <area shape="rect" coords="0,0,16,16" href="http://apex.oracle.com/pls/otn/f?p=&APP_ID.:'
    || decode ( type, 'FOLDER', '33', '22' )
    || ':&APP_SESSION.::&DEBUG.::P'
    || decode ( type, 'FOLDER', '33', '22' )
    || '_ID,P'
    || decode ( type, 'FOLDER', '33', '22' )
    || '_CALLING_PAGE:' || id || ',&APP_PAGE_ID." ></area></map>' ,
    '***id***', id
    ) Edit,
    id,
    type,
    name,
    decode ( type, 'FOLDER', 33, 22 ) target
    from tThe idea is - each img uses its own map.
    It works now.
    Check:
    http://apex.oracle.com/pls/otn/f?p=20980:13
    Lev
    Edited by: le on Nov 3, 2010 11:11 AM

  • Master Detail Forms with 2 composite primary keys - Is there a workaround?

    Hello All,
    I have been searching for a workaround to the maximum 2 part primary key restriction on the multi-row updates, and master-detail forms, and am hoping that someone can help me. I am using HTMLDB v2.0.0.00.49 with IE 6 against a 9.2 DB.
    I successfully implemented the workaround of Fred Stoopendaal's (see Updata PK on HTML DB ) and it works fine for single page multi-record updateable forms, but alas I haven't been able to extend it to master detail forms (I think it is something to do with Oracle not allowing the "returning" clause on views).
    Here is what I tried:
    two tables, one with a 2 part composite primary key, which is the master table, and a detail table with 3 part composite primary key -
    --------- BEGIN SQL ---------
    create table master_table
    ( master_col1 number
    , master_col2 number
    , master_col3 varchar2(30)
    , constraint master_pk primary key (master_col1,master_col2));
    create table detail_table
    (detail_col1 number
    ,detail_col2 number
    ,detail_col3 number
    ,detail_col4 varchar2(30)
    , constraint detail_pk primary key(detail_col1,detail_col2,detail_col3)
    , constraint master_detail_fk foreign key (detail_col1,detail_col2) references master_table(master_col1,master_col2));
    create or replace view v_master_table as
    select rowid mata_rowid,mata.*
    from master_table mata;
    create or replace view v_detail_table as
    select rowid deta_rowid,
    (select rowid from master_table mata where mata.master_col1 = deta.detail_col1 and mata.master_col2 = deta.detail_col2) deta_mata_rowid
    , deta.*
    from detail_table deta;
    create or replace trigger mata_ins_upd_trg
    instead of insert or update on v_master_table
    referencing new as new old as old
    for each row
    begin
    if inserting then
    insert into master_table (master_col1, master_col2, master_col3)
    values (:new.master_col1, :new.master_col2, :new.master_col3);
    end if;
    if updating then
    update master_table
    set master_col1 = :new.master_col1,
    master_col2 = :new.master_col2,
    master_col3 = :new.master_col3
    where rowid = :old.mata_rowid;
    end if;
    end;
    create or replace trigger deta_ins_upd_trg
    instead of insert or update on v_detail_table
    referencing new as new old as old
    for each row
    begin
    if inserting then
    insert into detail_table ( detail_col1, detail_col2, detail_col3, detail_col4)
    values (:new.detail_col1, :new.detail_col2, :new.detail_col3, :new.detail_col4);
    end if;
    if updating then
    update detail_table
    set detail_col1 = :new.detail_col1,
    detail_col2 = :new.detail_col2,
    detail_col3 = :new.detail_col3,
    detail_col4 = :new.detail_col4
    where rowid = :old.deta_rowid;
    end if;
    end;
    --------- END SQL ---------
    Then I created a master-detail form in Apex on the two views, using the mata_rowid and deta_rowid as primary keys, and mata_rowid=deta_mata_rowid as the link. I realise that using a function to fetch the master rowid within the detail view query is costly, but it was my intention to modify the record fetch queries to use the real FK columns once things were up and running.
    It seems to generate the pages ok, and I can insert/update master table records, but as soon as I modify records in the detail table things go a bit haywire. I can't find any documentation on how the inbuilt MRU/MRD logic works, so can't figure out the issue.
    Can anyone out there tell me what the problem is with the logic above, or if they have come up with a neat solution to this annoying limitation. I know that many will say that I should modify the data model to use surrogate primary keys, but many of the uses for HTMLDB are new interfaces for old schemas, so a workaround that doesn't involve wholesale data model changes would be preferable.
    Thanks in advance,
    Mike Cretan

    Hi, this is likely not the most elegant way...but perhaps the simplest -- and I didn't have much time to play.
    I used Wizard to create two separate Master Detail forms, each with a separate detail table. Thus I ended up with four pages:
    Page "A" - "Selector" page for Master (Report), with Edit link driving to Detail-1
    Page "B" - Editable Master/Detail-1 page (HTML / Report)
    Page "C" - "Selector" page for Master (Report), with Edit link driving to Detail-2
    Page "D" - Editable Master/Detail-2 page (HTML / Report)
    Then I selected the primary key column TWICE on the Report on Page A. Modified the second instance of this column to navigate to Page D (passing primary key) exactly the way the original instance of this column navigates to Page B. Then I deleted Page C.
    Since you can have only one Tabular Entry form per page, this seemed the best way to drive two separate detail tables from a common interface.

  • Master/detail form - Detail columns lack help information

    I have a master/detail form. All the fields in the master block have help information attached to assist the user when entering data. The detail block, which is more of a multi-row based block, has column headings along the top. However, no where can I insert "help" text for these particular columns. Although self explanatory, it still would be nice to be able to incorporate "help" text for these columns. Am I missing something? Can this be done? I've thought about a button on top of the region which could call an html page with help for these columns, it just seems to be a "rougher" solution than whats available to the individual fields in the master block.

    Hi,
    Nope, you're not missing anything - there is no Help functionality. This is probably because the Help on page items is available for "Labels", which do not exist for tabular forms, which are based on a report structure.
    You would, if you wanted, update the heading to include a "tooltip":
    Instead of, for example:
    HiredateYou could enter:
    &lt;span title="Enter the employee's hire date"&gt;Hiredate&lt;/span&gt;It should also be possible to mimic the popups you get for page items if that is what you need
    Andy

  • Add multiple rows in detail form in master detail form

    Hi,
    I have a master detail form to enter survey responses. The master form captures the participant information and the detail form will carry the survey responses. After entering the master record, I need the detail rows to be populated with the survey questions stored in another table. The respondent will then update the response for each row in the detail form. Only after all the responses are filled out, clicking the save button should the detail records be committed.
    Is there a good way to achieve this.
    Thanks in advance
    Gopal

    Sorry, did not check OTN until this afternoon. Busy checking existing Apex pages on my project :)
    Our region to populate the tabular form has the tabular form fields defined as Display As Text (saves state). Non-enterable fields are defined as "Display as Text (saves state)". A tabular form results from these definitions.
    Because Apex won't generate code to handle multipe row tabluar form inserts we wrote our own as an After Submit PL/SQL process, something like
    DECLARE
      v_rows_found_n number;
    BEGIN
      --code for debugging
      raise_application_error(-20000,'Hello World: '||
        apex_application.g_f03(12)||':'||
        apex_application.g_f04(12)||':'||
        apex_application.g_f05(12)||':'||
      for i in 1..apex_application.g_f01.count loop
        BEGIN
          --attempt update first
          update whatever
             set field4 = apex_application.g_f05(i)
           where field1 = apex_application.g_f03(i)
             and field2 = apex_application.g_f04(i)
             and field3 = apex_application.g_f02(i);
          v_rows_found_n := SQL%rowcount;
        --if no rows were updated perform an insert
        if (v_rows_found_n = 0) then
           insert into oe_metric_values(
             field1,         --1
             field2,         --2
             field3,         --3
             field4          --4
          values(
            apex_application.g_f02(i), --1: field1
            apex_application.g_f03(i), --3: field2
            apex_application.g_f04(i), --2: field3
            apex_application.g_f05(i)  --4: field4
        end if; --did update operate on any rows?
      --exception
      --  when others then
      --    raise_application_error(-20000,'i'||':'||
      --      apex_application.g_f03(i)||':'||
      --      apex_application.g_f04(i)||':'||
      --      apex_application.g_f05(i)||':'||
        END; --internal loop block
      end loop; --loop through tabular form submit elements
    end; --pl/sql blockI had to get the identities of the f01, f02 etc. identifiers by looking at the HTML code in the rendered form because Apex assigns those values as it will. Anytime the column display changes in any way i have to go through and make sure the identifers have not changed.
    Hope this helps.

  • Wizard generated Master-Detail form issues

    The wizard-generated master/detail forms have several severe usability issues when the "Choose Layout" option is set to "Builder master detail with: edit detail as tabular form on same page".
    Some of these issues are:
    - The form has two Apply Changes buttons, one to save the master row and one to save the detail row. Users find this very confusing. If you save the master row changes, any changes to the detail rows are lost and vice versa.
    - The form has two Delete buttons, one to delete the master row and one to delete the checked detail rows. Users find this confusins also. Clicking the lower delete button discards any other changes that were made.
    - The Add Row button also discards any other changes that were made.
    The first two issues are easily fixed. With a few simple changes to the generated page, I can make it so there is a single "Apply Changes" button that 1) saves any changes to the master row, 2) saves any changes to detail rows and 3) deletes any checked detail rows.
    I cannot figure out how to solve the third issue (that the add row button discards any changes). I can make it so the "Add Row" button saves the changes, but this isn't user friendly either; I don't think any changes should be comitted unless the user specifically presses 'Apply Changes'.
    So far, I thought of several ways to possibly fix this but can't get any of them to work. Some of the ideas were:
    1. The 'Add Row' button could run the automatic row processing and MRU processes, but not do a commit untill/unless Apply Changes is pressed. I don't think this is feasible because http is stateless and connection pooling may be used, so we can't have a transaction that spans http requests.
    2. Move the Add Row process to page rendering so that the detail table always has an empty "add row" row thereby making the Add Row button unnecessary. I tried this, but it looks like the add row process was designed to run during the page processing, not during rendering, and it fails with a divide by 0 error when it is run during page rendering.
    3. Use client-side DHTML (instead of the HTML DB add row process) to add an empty row to the html table (i.e. add row button does not do a submit, it is handled entirely on the client). I tried this, but the MRU process fails because it doesn't expect the added row.
    If anyone has any other ideas on how to fix this problem, they would be greatly appreciated.
    HTML DB solves this problem in the SQL workshop create table wizard.
    In HTML DB 1.6, the "Add Column" button does a submit but somehow saves any changes that were entered.
    In HTML DB 2.0 beta, client-side DHTML is used (my approach 3 above).
    Can someone from Oracle share how the HTML DB create table wizard solves this problem?

    Eric,
    Thanks for your feedback. I’ll add your suggestions to our list of tabular form enhancement request.
    The wizard generates a regular form for the master record and a tabular form for the detail records. As you pointed out, it’s quite easy to customize this to your individual needs.
    Unlike regular forms, there’s currently no session state concept for tabular forms, so you either need to write your data to the database, or you will loose any changes if you e.g. paginate. For the same reason, the “Add Row” button and the associated process is generated so that any changes are saved to the database before adding a new row. Of course the MRU process that is executed on “Add Row” can be removed, if that is the preferred behavior.
    A work around would be to code the DML processes for tabular forms manually, and temporary store the data in HTML DB collections to simulate a stateful behavior.
    In HTML DB 2.0 we started adding DHTML features, such as the create table wizard you’re referring to. Some features, like the pull down menus, will be available to be used in your own applications. Other features, like the DHTML tabular form, won’t be available for custom applications in 2.0.
    Regards,
    Marc

  • Master detail form issue retrieving service price automatically

    Hi,
    I developed a master detail form in order to process service requests.
    On details block I'm trying to retrieve automatically service price after I select service name from LOV.
    For this purpose I created a application plsql process
    declare
    v_price service.price%type;
    begin
    select     price into v_price
    from      service
    where      service_no = 1;
    htp.prn(v_price);
    exception when others then htp.prn('An error occurred retrieving the PRICE');
    end;
    Which process I'm calling through javascript function in order to retrieve service price.
    <script type="text/javascript">
    function GetServicePrice(pThis)
    var vRow = pThis.id.substr(pThis.id.indexOf('_')+1);
    html_GetElement('f07_'+vRow).value = new htmldb_Get(null,html_GetElement('pFlowId').value,'APPLICATION_PROCESS=getPrice',0);
    </script>
    Instead of price it returns this value: "[object Object]".
    Is it possible to work as I intended or it should other way around?
    I appreciate your help/comments.
    Application Express 4.2.1.00.08
    Oracle Database 11g Express Edition Release 11.2.0.2.0
    Regards,

    Tonito99 wrote:
    Hi Tom,
    I applied these changes on page HTML Header, but now it's not returning nothing.
    f07_ (price column) is empty.
    <script type="text/javascript">
    function GetServicePrice(pThis)
    var ajaxRequest = new htmldb_Get(null, $v('pFlowId'), 'APPLICATION_PROCESS=getPrice', 0);
    var ajaxReturn = ajaxRequest.get();
    $s('f07_'+vRow, ajaxReturn);
    </script>
    Any other suggestion?
    Regards,
    Edited by: Tonito99 on Mar 8, 2013 3:32 PMIf you are on apex 4.2 why are you still using the legacy/undocumented methods?
    You should use new javascript API apex.server.process
    apex.server.process ( "getPrice", {
    success: function( pData ) { $s('f07_'+vRow, pData);}
      } );

  • Unable to View records in a master-detail form

    In a master-detail form, I am not able to view records of the master/detail table
    by accepting the values of the PK of the header table items.
    Please tell me the exact steps, so that I can view the detail table records based on the header table PK items.
    Thanks.

    Yes I wrote the LOV code in a different procedure. Now, the view is showing correctly. But I am now trying to update the viewed records.
    The steps I am following in View Option is as below:
    go_block('header');
    clear_block(no_validate);
    execute_query;
    proc_lov;
    go_block('item');
    execute_query;
    I am unable to commit the changes made in the blocks
    The reason it is showing is : UNABLE TO update.....I saw the display_error.
    The system is trying to update the PK part also..Why....Though PK party is clearly defined in the table as well as property palette. Pl. explain how to go about it. Uregent help is required once again.

  • To attach a RTF template(Report for printing ) in the master detail form

    I have an application in which I have 3  master detail forms  of which one of the form is a gate pass form . Now this gate pass form has a report region as the detail.
    All that i need help is to print the Gate Pass with few fields as information in the gate pass form , where an image or picture of the visitor is also a filed .
    Now I have created an RTF Template  which is the Gate pass layout with the pic.
    So ultimately I have the application for the gate pass form and the RTF template ready with me .. Fixing this template with the application with a BUTTON called PRINT is the challenge am facing !
    SELECT XVH.GPDATE
           , TO_CHAR(XVH.VISITORTIMEIN, 'HH:MI') VISITORTIMEIN --, (XVH.VISITORTIMEIN )
           , (TO_CHAR(XVH.VISITORTIMEOUT, 'HH:MI'))VISITORTIMEOUT
           , XVH.VISITOR_NAME --, = XVH.PERSON_ID
           , XVH.COMAPANY_NAME
           , XVH.PURPOSE_OF_VISIT
           , (SELECT A.FULL_NAME
                FROM PER_ALL_PEOPLE_F A
               WHERE A.PERSON_ID = XVH.PERSON_ID
                 AND SYSDATE BETWEEN A.EFFECTIVE_START_DATE AND A.EFFECTIVE_END_DATE) To_meet
           , XVH.VISITOR_PHONE
           ,APPS.GETBASE64 (XVH.VISITOR_PHOTO)
      FROM xxcdot.XXBCT_VGPF_HEADER XVH
    WHERE XVH.GP_HEADER_ID =  :P_HEADER_ID
    This is the query for the template ..
    Please help me with this. I am very new to apex and learning it with help of online tut

    Pars I need another Help
    I am working with a master detail form where in the form region i have a Radio group . Lets say the Radio group is
    o Returnable
    o Non Returnable
    o Other
    so when i select Non returnable I want a particular column called
    Line Status to get Disabled .
    I have done that by a dynamic action - using jquery statement (.Disable) .
    Defining the element attributes as Disable .
    Now the problem is that ,, Line status is getting disabled on the selection of Non returnable radio button. but unless and until i dont press the Add row button it does not work ,, else i will have to switch over between the radio buttons to get this action done !!

  • Adding button to report to link to master detail form

    I want to add a button to a report to direct me to a blank master detail form to insert a new record. I have used the following code in the additional PL/SQL code section:
    htp.formopen('PORTAL30.wwa_app_module.new_instance?p_moduleid=1271601405');
    htp.formsubmit('p_request','Create New');
    htp.formClose;
    When I click this I get 'Page Not Found'.
    But if I hit refresh I am directed to the correct form with the same url.
    Any ideas on what the issue is?
    Thanks.

    Hi,
    Check this sample code.
    tables:sscrfields. "Fields on selection screens
    selection-screen function key 1.
    selection-screen function key 2.
    Initialization.
      sscrfields-functxt_01 = 'Report'.
      sscrfields-functxt_02 = 'Exit'.
    at selection-screen.
       if sscrfields-ucomm = 'FC01'.
      perform f_alv_sub.
       elseif sscrfields-ucomm = 'FC02'.
       endif.
    Hope it helps.

  • Search on Master Detail form/report

    Hi,
    I noticed that when I created a new application in Apex 4.01 basing the intial page on a Master Detail form/report, I was able to add a search item to the initial page. When I go to add another page with a different Master detail form/report, I did not have any option for adding a search item to the report page. Seems like an oversight?
    I would appreciate any hints as to how to add same search item to my 2nd Master/Detail form/report.
    Thanks,
    Pat

    Me too facing the some problem can some one pls help

  • Parameter on Master Detail Form

    How do I set a bind variable in a Master Detail Form?

    I suspect that he may have the same question I do. Namely, if I have four tables (employees, projects, tasks, and project_assignments) how do I create a master detail form where I can specify the project and the employee via LOVs? The project_assignments table contains foreign keys for employee, project, and task, as well as additional fields relating to the task status.
    Currently, I have it set up so that the employee name can be selected and the project is hard coded to the current project.
    Is there an easy way to populate the detail records based on two LOVs in the master form?
    Thanks in advance,
    Fritz

  • Requerying on Master Detail form

    Hi,
    Does anyone know how to set up PL/SQL code to automatically requery on a master detail form after insert/update? For example, if I insert a record on the master part of the form, I would like that record to automatically show up after the insert/update. Also, if I insert a record on the detail part of the form, I would like that record to automatically show up after an insert/update.
    Thanks,
    Martin

    Hi Krishnamurthy,
    Thank you very much for the code. The code for the most part acts like I want it to except when I initally insert a master record. In my case, I have the form set up so you have to insert a master record before you can insert any detail records. Therefore, after the user clicks save, that master record needs to come up. The code you gave me only brings up the current master record if you are inserting detail records (which is great, that is what I want it to do). I have modified the code you gave me so when a user is just inserting the master record, the master record automaticaly comes up rather than the first record in the table. However my code makes the form run slow (about 13 seconds to save). Do you know of another way that I can make the form act like I want it to. Below is my code.
    Thanks again,
    Martin
    declare
         l_msg                varchar2(255);
         l_key_value      number(10);
         l_key_value2      number(10);
         v_get_id           number(9);
         v_check_detail      number(9);
         CURSOR GET_ID IS
              SELECT MAX(A.PCH_ID)
              FROM PORTAL30.PCHEADER A;
         CURSOR CHECK_DETAILS IS
              SELECT DISTINCT B.PCD_ID
              FROM PORTAL30.PCDETAILS B WHERE B.PCD_PHC_ID = v_get_id;
    begin
         /*get the key field value from the Master Detail form to requery the details since the form will be cleared out after update */
         l_key_value := p_session.get_value_as_NUMBER(
         p_block_name => 'MASTER_BLOCK',
         p_attribute_name => 'A_PCH_ID',
         p_index => 1
         doSave;--- This is the default handler
         OPEN get_id;
         FETCH get_id into v_get_id;
         CLOSE get_id;
         OPEN check_details;
         FETCH check_details into v_check_detail;
    IF check_details%NOTFOUND
    THEN
         CLOSE check_details;
         /*get the key field value from the Master Detail form to requery the details since the form will
         be cleared out after update */
         l_key_value2 := v_get_id;
         /*get the message which is going to be displayed after update */
         l_msg := p_session.get_value_as_varchar2(
         p_block_name => 'MASTER_BLOCK',
         p_attribute_name => '_STATUS');
         /*now set the key field value in the Master Detail */
         p_session.set_shadow_value(p_block_name => 'MASTER_BLOCK',
         p_attribute_name => 'A_PCH_ID',
         p_value => l_key_value2,
         p_language => PORTAL30.wwctx_api.get_nls_language);
         WWV_MASTER_GENSYS_1(p_block_name => null,
         p_object_name => null,
         p_instance => null,
         p_event_type => null,
         p_user_args => null,
         p_session => p_session);
         /*put the message(like 'Updated one master record' ) back in the screen */
         p_session.set_value(p_block_name => 'MASTER_BLOCK',
         p_attribute_name => '_STATUS',
         p_value => l_msg);
         p_session.set_value
         (p_block_name => 'MASTER_BLOCK'
         ,p_attribute_name => '_MASTER_ACTION'
         ,p_value => 'NONE');
         p_session.save_session();
    ELSE
         CLOSE check_details;
         /*get the message which is going to be displayed after update*/
         l_msg := p_session.get_value_as_varchar2(
         p_block_name => 'MASTER_BLOCK',
         p_attribute_name => '_STATUS');
         /*now set the key field value in the Master Detail*/
         p_session.set_shadow_value(p_block_name => 'MASTER_BLOCK',
         p_attribute_name => 'A_PCH_ID',
         p_value => l_key_value,
         p_language => PORTAL30.wwctx_api.get_nls_language);
         WWV_MASTER_GENSYS_1(p_block_name => null,
         p_object_name => null,
         p_instance => null,
         p_event_type => null,
         p_user_args => null,
         p_session => p_session);
         /*put the message(like 'Updated one master record' ) back in the screen*/
         p_session.set_value(p_block_name => 'MASTER_BLOCK',
         p_attribute_name => '_STATUS',
         p_value => l_msg);
         p_session.save_session();
    END IF;
    END;

Maybe you are looking for