Null item (pk) in master detail form

Hello
I use two tables to create a master detail form, in the master table I use a PK based on an existing trigger on the db and that same field is used in the detail table as an FK.
When I create a new master detail form I want to insert all the items I need, but after I hit create button to insert the values into the master table, the pk item keeps a null value, so I would not be able to insert nothing in the details table.
How can I resolve this?
Thanks in advance
Ownr

Have a look at the update / insert process on submit. There is a place to determine where to return the primary key. Put your primary key item there
P1_PRIMARY_KEY
and the record will stay there after creation.
Denes Kubicek
http://deneskubicek.blogspot.com/
http://www.opal-consulting.de/training
http://apex.oracle.com/pls/otn/f?p=31517:1
------------------------------------------------------------------------------

Similar Messages

  • Old items are not populated after adding items into a master/detail form

    Hi,
    I am relatively new to APEX. I am creating a master/detail form. It works well. When I add new items the older items are no more populated. Why ?
    For example I have an itme which is a select list as a Named LOV. At creation of the row I want the user to choose from this select list. It works well.
    But when modifying the record, I don't want the user to change this name. For that purpose, I create an item which is a display only item. This item is conditional and appear only when the record has been created.
    And this is where the problem comes. It seems to work but, if I logout of the application and login, then values are no more populated to the items and I get an error when trying to update the form.
    I hope I make it clear. I have been trying a lot of times and found that if I add items, then everything goes wrong.
    Thank you for your kind help.
    Christian

    Hi Christian,
    You don't say what the error is that you are getting - this may help us with your problem!
    On the form, do you now have TWO fields - one being the original select list and the other being a read-only version of it? Is it likely that BOTH fields could appear on the page at the same time AND that both are connected to the field on the table?
    You can set the select list to be read-only conditionally - in this case you could make it read-only on the condition of the primary key field not being null.
    Andy

  • File Browse Item in Master-Detail Form

    Hi,
    This is what I need to do.
    I have a master table called Regulations. As part of the Regulation Creation process, users need to upload supporting files. The number of files is not fixed, so I have a detail table for the uploaded files. I was planning to create a Master Detail form and have a File Browse item in the detail region? Is there a way I can put a File Browse item in the detail region of the Master Detail form?
    Any other implementation suggestions are welcome.
    Thanks,
    Ramesh

    See
    http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/
    It has some interesting implementation ideas relating to your question.
    Also see
    Upload Multiple Files
    Re: insert multiple files from a single form

  • Make detail items in master/detail form read only

    I want to make detail items in master/detail form read only for certain conditions (master STATUS = Closed). I see how to do this on the master record items but not on detail items.

    Take a look at this thread: Re: Conditionally make a tabular form uneditable
    You will need to modify the code, but it should help since a master detail is just a standard form with a tabular form attached to it..
    Thank you,
    Tony Miller
    Webster, TX
    Time flies like the wind, but fruit flies like bananas.

  • Master-Detail Form (How to pass an item value in Master to Detail field

    I have a Master-Detail form. When adding a new record in the Detail section, I expect the primary key in the master record will copy down to the detail record. But, it is not doing that. Does anyone know how to pass the master primary key down to the detail record field.
    By the way, query works fine. It knows the master-detail relationship. It is just when creating a new detail record, the key not pass down from the master record.
    thanks - Patty

    hi,you can do it by:in detail form's foreign key field,set it's default value as master primary key ,example master page p1,primary key as p1_master,detail form p2,foreign key p2_foreign, set p2_foreign key 's default value &p1_master.
    Message was edited by:
    lixinzhu

  • Master-Detail Form - implementing some thing like Post-Query trigger

    Hi all,
    I am struggling to implement an eqivalent of a post-query trigger in Oracle Forms. Please bear with me as I am trying to explain in detail what the problem is.
    Here is my situation.
    I have three tables EMP, DEPT and LOCATION. I created a Master/Table pages on EMP and DEPT.
    Basic relationships.
    Each LOCATION has one or more DEPTs; Each DEPT is at one and only one LOCATION.
    Each DEPT has one ore more EMPs; Each EMP is assigned to only and only DEPT.
    Not getting too complicated, here are the table layouts:
    LOCATION:
    ID number(10,0) not null,
    NAME varchar2(20) not null
    DEPT
    ID number(10,0) not null,
    NAME varchar2(20) not null,
    LOC_ID number (10,0) not null foreign key from LOCATION
    EMP
    ID number(10,0) not null,
    NAME varchar2(20) not null,
    DEPT_ID number (10,0) not null foreign key from DEPT
    Assume I have all the constraints, BIU triggers, sequences defined properly.
    I am using the APEX page wizard to create a Master/Detail Form on DEPT and EMP. The first page is the Master Report on DEPT. I want to display the Location Name on this page also. Because the Master Report allows
    you to change the query, I was able to add the Location Name as part of the
    query. This was very simple.
    Select a.name "Department_Name",
    b.name "Location"
    from dept a, location b
    where a.loc_id = b.id
    Moving on, In the Master Detail Form, I would like to get the Location Name as part of the first Region (Dept Region).
    In this region, I would like to include the Location Name also. So my first region on the Master Detail form includes:
    Dept Id: ________
    Dept Name: _______
    Location Name: __________
    As Region are automatically populated using using a Fetch Row from EMP table (Automated Row Fetch) on an After Header process point, I don't have a way of including the Location as part of query. So I created a Region level Item called Location Name, made it Display only.
    In the old SQL*Forms, or Oracle Forms days, I used to use a Post-Query trigger, or Post-Change trigger to fire on the Loc_Id column to populate the Location Name. Simple fetch like:
    Select name
    into :P80_location_name
    from location
    where loc_id = :P80_loc_id
    However, I am struggling to implement some thing simple like this in APEX. Tried creating a processes, computatations etc, but nothing is working.
    I have seen some previous responses to fetching values from a foreign table
    using a button or AJAX script, but this should be very basic. What am I
    missing here?
    Appreciate any insights.
    Thanks.
    John

    Hi John,
    I'm not too familiar with the post-query triggers in Oracle Forms, but the use of a List of Values (LOV) on your LOCATION table might do the trick for you. If you create a dynamic LOV based on your LOCATIONS table, it can then be referenced by the LOC_ID item on the Master-Detail page, to display the Location Name. You could try doing the following:
    1. Create a new dynamic LOV, LOCATIONS, using a query similar to the following:
    select Name d, ID r
    from LOCATION
    order by 1
    2. Edit the "Create" button on the Master report page, and in the "Optional URL Redirect" section set "Request" to CREATE. Click Apply Changes, to save the setting.
    3. Edit the LOC_ID item on your Master-Detail page, and set the following:
    * in the "Name" region change the "Display As" setting to Select List
    * in the "Label" region change the Label to Location Name.
    * in the "List of Values" region set the "Named LOV" to LOCATIONS
    * in the "Read Only" section, set the condition to Request != Expression 1, and set Expression 1 to CREATE.
    Click Apply Changes to save the settings.
    When you run the pages now, the Location Name field will appear as Read-Only when editing a selected Master row. The item will appear as a Select List when the user clicks "Create" on the Master page, to create a new Master row.
    I hope this helps.
    Regards,
    Hilary

  • 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

  • Master-detail form (my detail is in a new canevas-- new window)

    Hello,
    I have a Master-detail form, in my detail when i select a row i want to show an other canevas that becomes a detail for this selected row. i constructed the relationship between my first detail block and my new canevas that contains the detail for the selected row. When I select a row Oracle didn't show me the deatil for this row in the other canevas, i wondered me why? because I thought the relationship between them should atomatically drive the data for the other canevas. If i 'm wong, does someone could tell me what to do to call my canevas detail.
    Master--->details(selected row become master)--->new canevas(contains details)
    the relationship is done between my first detail block and my new details block.
    Charly

    Hi,
    POST-QUERY is definitly the wrong trigger to do what you want to achieve.
    1. The usage of GO_BLOCK in POST-QUERY is not allowed and it will not work.
    2. The detail must be synchronized when navigating in the master-record, not when populating the block
    So the right trigger to do what you want to is the ON-POPULATE-DETAILS-Trigger.
    Problem on this: It will only work if you have a relation on the master-block to the detail block.
    But that's also possible even if you do not have a "direct" relation between the master and the detail block.
    Just create a relation between the blocks based on some dummy-item and then go to the item in the detail-block and set its property "Copy value from" to NULL.
    Now you can add your logic in the ON-POPULATE-DETAILS-Trigger.
    Still one problem left: Where is the window you're going to show placed? If it's on to of the window where the items from the master-block are displayed, then immediately after querying the records in the detail-block the navigation back to the master-block will cause the other window to be shown again (and therefore your detail-window to be hidden again).
    hope this helps

  • Session storage errors in master-detail form

    hi,
    as the sequences do not work in master detail forms, i'm using session variables but the form does not compile and gives error.
    following is my code in the SAVE button of the master-detail form -
    declare
    new_prod_id number(10);
    begin
    select BPSIDEV.PRODUCT_ID_SEQ.NEXTVAL
    into new_prod_id
    from dual;
    p_session.set_value
    p_block_name => 'MASTER_BLOCK',
    p_attribute_name => 'A_PRODUCT_ID',
    p_value => new_prod_id
    doSave; -- This is generated code
    end;
    the action item values is as foloows -
    Master - INSERT
    Detail - INSERT
    am i missing here something ? or is anything wrong here ?? pls advise ...
    after the above changes the form would not compile at all.
    also how would i populate the the detail records with the foreign key ??
    thanx...
    null

    This problem is fixed in 3.0.8 release of Portal which will be available with the next release of iAS.
    Actuallty the fix is simple look at the generated package of EXAMPLE_MD_FORM from EXAMPLE_APP, onSave event handler looks like this:
    procedure onSave
    p_block_name in varchar2,
    p_object_name in varchar2,
    p_instance in integer,
    p_event_type in varchar2,
    p_user_args in varchar2,
    p_session in out WWV_30898.wwa_api_module_session
    is
    "_master_block" varchar2(30) := 'MASTER_BLOCK';
    Some more code.......
    And then closer to the end in detail processing section there is something like:
    "_d_data_rec".COMM:=p_session.get_value_as_NUMBER(
    p_block_name => "_detail_block",
    p_attribute_name => 'A_COMM',
    p_index => "_cnt"
    "_d_data_rec".DEPTNO:=p_session.get_value_as_NUMBER(
    p_block_name => "_detail_block",
    p_attribute_name => 'A_DEPTNO',
    p_index => "_cnt"
    ===========================================
    You'll need to insert following code, just one if statement, that's it. Please note every time you regenerate the package this code will be lost, so you'll need to add this agains and again. Not a perfect solution, that's why I like JS workaround better.
    ============================================
    if "_d_data_rec".DEPTNO is NULL and "_m_data_rec".DEPTNO is NOT NULL
    then
    "_d_data_rec".DEPTNO := "_m_data_rec".DEPTNO;
    end if;
    ============================================
    ============================================
    if "_detail_action" = 'DELETE' and "_DETAIL_ROWID" is not null then
    DELETE FROM WWV_30898_DEMO.EMP WHERE ROWID = "_DETAIL_ROWID";
    "_detail_deleted" := "_detail_deleted" + 1;
    elsif "_detail_action" = 'UPDATE' then
    UPDATE WWV_30898_DEMO.EMP SET EMPNO="_d_data_rec".EMPNO,ENAME="_d_data_rec".ENAME,JOB="_d_data_rec".JOB,MGR="_d_data_rec".MGR,HIREDATE="_d_data_rec".HIREDATE,SAL="_d_data_rec".SAL,COMM="_d_data_rec".COMM,DEPTNO ="_d_data_rec".DEPTNO WHERE ROWID = "_DETAIL_ROWID" ;
    "_detail_updated" := "_detail_updated" + 1;
    elsif "_detail_action" = 'INSERT' then
    INSERT INTO WWV_30898_DEMO.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES ("_d_data_rec".EMPNO,"_d_data_rec".ENAME,"_d_data_rec".JOB,"_d_data_rec".MGR,"_d_data_rec".HIREDATE,"_d_data_rec".SAL,"_d_data_rec".COMM,"_d_data_rec".DEPTNO) RETURNING ROWID INTO "_DETAIL_ROWID";
    "_detail_inserted" := "_detail_inserted" + 1;
    end if;
    ............................

  • 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 form issue

    Hello,
    I am unsure if this is a bug or how I'm doing things. I'm using version 4.1.
    I am creating a master/detail report (on the same page) using the wizard to create the page. I have no problem creating the page and it works. The only changes I make to the detail region (which is a report) is to set it to display one record at a time, enable partial page refresh and change the layout to a vertical list including null columns. Essentially I want to see one record at a time. I can certainly page through them one at a time. However if I press "Add Row" it creates a new blank record below my existing one. If I keep pressing "Add row" I keep getting more blank rows. Shouldn't this blank row overwrite the currently displayed row so that there is only one row at any given time (whether its blank or a populated line). If I'm saying I only want one shouldn't it only ever display just one record regardless of whether your adding or reviewing existing detail records. It seems to me that if I tell it I only want one row, it shouldn't allow me to keep adding rows indefinitely which end up getting added to rows already on the screen. On a vertical listing with a lot of fields, you could end up scrolling for days.

    Hi -
    My assumptions are:
    1) That you have created Master/Detail form with both Master and Detail regions on the same page.
    2) The problem of NOT seeing the Detail happens when you are inserting (not updating) on Master,
    in other words when you are creating a new user in Master section.
    The Detail section (as created by Apex Master/Detail wizard) is a Report with a Condition set for display:
    "Value of Item in Expression 1 Is Not Null" with Expression 1 populated with PK of Master.
    So, change this condition to None and empty Detail section will appear in Create mode.
    Note that you must now set the Form object that holds the PK for new Master record by some means,
    (maybe a Page Process or such) before the Save is done, otherwise Detail record will not have FK.
    Also you are going to have to play with the Conditions on the ApplyMRU and ApplyMRD Processes created
    by the wizard to make sure they are only firing in Create mode when the Save for the whole page is submitted.
    Lastly you can clear the values on the page with a Process of type "Clear Cache for all Items on Pages" that fires
    last after page submission, again this may need a Condition to prevent clearing items before you are ready...

  • Master detail form initial insert issue on details sub-region

    Hello,
    I created a master detail form with report which should do insertion on master and detail region/subregion.
    On insert mode I enter with data master and detail block, when I press "Create" button, insertion happens only on master block (order table) not and on detail block (order_item table).
    On EDIT mode it does insertions/updates on master and detail block without problems.
    Application Express 4.2.1.00.08
    Oracle Database 11g Express Edition Release 11.2.0.2.0
    I appreciate your help.
    Regards

    Something like this should do the work:
    CREATE OR REPLACE TRIGGER order_item_table_tr
       BEFORE INSERT
       ON order_item_table
       FOR EACH ROW
    BEGIN
       IF :NEW.order_id IS NULL
       THEN
          :NEW.order_id := v ('P1_ORDER_ID');
       END IF;
    END order_item_table_tr;
    /Make sure the Automatic Row Processing (DML) of the order table returns key into item > Return Key Into Item > P1_ORDER_ID (or however the primary key of the order table is named)
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://www.apress.com/9781430235125
    http://apex.oracle.com/pls/apex/f?p=31517:1
    http://www.amazon.de/Oracle-APEX-XE-Praxis/dp/3826655494
    -------------------------------------------------------------------

  • Insert multiple row of BLOB using Master Detail Form

    Hi,
    I try to insert multiple photos in a master detail form (just like we upload attachments when sending email), but it seems that the Tabular Form doesn't support adding a row with BLOB. I have searched the User's Guide and API Reference, but no answer on this issue.
    Anyone can help?
    regards,
    Wei

    Many thanks,
    I find another way. I released the FK of these two tables and used the code:
    Insert into PRODUCT_INFO (TITLE) values(:P1_TITLE);
    IF ( :P1_PHOTO1 is not null ) THEN
    INSERT INTO PRODUCT_IMG(PHOTO, MIMETYPE, PROPERTY_ID)
    SELECT blob_content,mime_type, "PRODUCT_INFO_SEQ".currval
    FROM APEX_APPLICATION_FILES
    WHERE name = :P1_PHOTO1;
    DELETE from APEX_APPLICATION_FILES WHERE name = :P1_PHOTO1;
    END IF;
    IF ( :P1_PHOTO2 is not null ) THEN
    INSERT INTO PRODUCT_IMG(PHOTO, MIMETYPE, PROPERTY_ID)
    SELECT blob_content,mime_type, "PRODUCT_INFO_SEQ".currval
    FROM APEX_APPLICATION_FILES
    WHERE name = :P1_PHOTO2;
    DELETE from APEX_APPLICATION_FILES WHERE name = :P1_PHOTO2;
    END IF;
    The disadvantage is that I have to set a certain number of items for inserting photos; the max numbers of uploaded photos cannot decided by users.
    Regards.

  • Master Detail form - Problems

    We are facing problems for a master detail form using Wizard. The details are as follows : >>
    1) Master table : TS_ENTRY_TXN
    trans_id P.K.
    2) Detail table : TS_ENTRY_TXN_DETAIL
    a)trans_id
    b)sub_trans_id Composite P.K.(trans_id,sub_trans_id) & these are based on sequences.
    If i try to build a master detail form using the Wizard, the options for providing P.K. for master & detail are listed which we used.
    As it is a master detail form, we want to carry trans_id to the detail for updations/insertions which doesn't happen.
    The MRU fails with oracle error :
    Error in mru internal routine: ORA-20001: Error in MRU: row= 1, ORA-01400: cannot insert NULL into ("TS_APEX"."TS_ENTRY_TXN_DETAIL"."ENTRY_ID"), insert into "TS_APEX"."TS_ENTRY_TXN_DETAIL" ( "ENTRY_ID", "SUB_ENTRY_ID", "SMR_ID", "TASK_ID", "SUB_TASK_ID", "TIME_SPENT", "REMARKS") values ( :b1, :b2, :b3, :b4, :b5, :b6, :b7)
    Is there any other way to build master detail wihout wizard.
    Could you please suggest us better way to complete this task.

    Hi San Mat,
    I would never recommend having a composite PK on any table. Use the sub_trans_id as the PK in its own right and have trans_id as a Foreign Key pointing to the master table.
    However, given your existing table structure, what you need to do is add a Default value for the ENTRY_ID field on the child table that points to the Page Item used for the PK field on the master table (you've said trans_id but do you mean ENTRY_ID??). On the column's Column Attributes page, set Default Type to Item (Application or page item name) and the Default to P1_ENTRY_ID (or whatever the name is of field is on the master table's form that holds the PK)
    When a new row is added to the child table, the ENTRY_ID from the master table is inserted automatically.
    Regards
    Andy

  • 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.

Maybe you are looking for