Row level validation for Master-Detail form

OA JDeveloper 9i (RUP5) 9.0.3.5 (Build 1453)
I have a form which is based on a master detail relationship.
- For each employees details (Advancetable) based on a EO (AbsenceInputsEO)
- For each employee you can add one or more allowances records (AdvanceTable) VO (AbsenceInputsVO)
Both the above VO and EO is based on the same table (XHR_BWCD_KRONOS_INTERFACE)
How do stop a user from selecting (radio button) the next employee in an advance table (master level), it the the records they entered at the detail level for the previous employee is not valid?
I used the the same validation method I used for the "APPLY" event to validate the records entered at detail level
to the "EmployeeSelect" event, but the error message showed only after the new employee has been selected. Thus the error message that is displayed does not relate to the employee record selected at that stage.
How do I prevent the user from selecting the next employee in the Master(Advancetable) if the records in the Detail(AdvanceTable) is not valid?

Thanks for you help,
Where able to reset the "SelectFlag" for the employee the error related to, but now I endup with two radio buttons being selected. One for the employee which the error relates to and one for the employee which triggered the validation when user navigated away from the current employee record.
I need to be able to set the attribute "SelectFlag" for any other employee selected in the master record to "N", before the error is thrown. I do not seem to be able to access the newly selected employee record to set the "SelectFlag" to "N" as I only have access to the currentrow SelectFlag in the processFormData.
It looks to be if I can only access the new selected employee in the processFormRequest(OAPageContext pageContext, OAWebBean webBean), but I never get to this method as the error message stop processing in the processFormData().
I have the following code in the processFormData(OAPageContext pageContext, OAWebBean webBean)
if ("EmployeeSelect".equals(event))
if (!IsValid(pageContext,am,true,AsgJobName,EmpStartDate.toString()))
// oracle.jbo.Row ValidationRow = vo.getFirstFilteredRow("SelectFlag", "Y");
// Set flag for employee record with error
Row [] rows = vo.getFilteredRows("SelectFlag", "Y");
// getFilteredRows returns a zero-length array if it finds no matches.
if ((rows != null) && (rows.length > 0))
// Set the master row and get the unique identifier.
Row masterRow = rows[0];
am.findViewObject("EmployeeAbsenceDetailsVO1").getCurrentRow().setAttribute("SelectFlag","Y");
vo.setCurrentRow(masterRow);
// Unselect new Employee
throw new OAException(ErrorMessage, OARowValException.ERROR);
} // EmployeeSelect-Event
Question:
=======
Can I access the newly selected employee rows from the processFormData to reset the "SelectFlag" to "N" before I through the error message? I would like to be able to do this in the section I have marked "// ?????", before I throw the error. How would I do this?

Similar Messages

  • Problem: trying to update all detail rows on pre-commit (MASTER DETAIL FORM

    Hi:
    I got a MASTER DETAIL form... and I need to update every detail row of this form (if the master was updated) before commiting the changes. the problem is that i cannot do that for instance in PRE-COMMIT or ON-COMMIT... it's an "illegal operation". I achieved part of it by coding KEY-COMMIT... but that did not solve the all problem. first take a look of the kind of code i want execute before commiting.
    form trigger key-commit code is is somehow like this:
    DECLARE
    tot_line NUMBER (3);
    line NUMBER (3);
    begin
    IF NAME_IN ('system.form_status') = 'CHANGED'
    THEN
    GO_BLOCK ('DETAIL');
    LAST_RECORD;
    tot_line := GET_BLOCK_PROPERTY ('DETAIL', current_record);
    FIRST_RECORD;
    line:= 1;
    LOOP
    :detail.quant := :detail.quant + 1;
    EXIT WHEN line= tot_line;
    next_record;
    line:= line+ 1;
    END LOOP;
    FIRST_RECORD;
    GO_BLOCK ('MASTER');
    END IF;
    COMMIT;
    end;
    The problem is for instance when the users close form in the "X" button (right top, near minimize form) ... If they do that Forms ask "Do you want to save changes?" ... and with this i do not execute the update of the detail rows...
    But there are other situations when this happens... for instance if EXECUTE_QUERY when i change a record...
    Anyone help?
    Joao Oliveira

    Use PRE-UPDATE trigger (Master block).
    begin
    update <detail_table>
    set quant + 1
    where <detail_table>.<relaition_column1> = :<Master_block>.<relaition_item1>
    and <detail_table>.<relaition_columnN> = :<Master_block>.<relaition_itemN>
    and <detail_block_WHERE>;
    EXCEPTION WHEN OTHERS THEN NULL;
    end;

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

  • Create Form setup for Master Detail Form

    Hello All,
    I have to create a Master Detail OAF Form where user will enter data in the header section and then fill the detail section on the same page. Now, I have created Header section but when I go to detail section and fill the information I got an error because HeaderId for header section is not passing to the detail section. I have created even VL also.
    Kindly let me know that what all steps are required to set the View Link for this Master Detail form.
    Many Thanks in advance.
    Thanks,
    Sandy

    Hello Gyan,
    Thanks for the prompt reply. I would also like to know that once AO will create what all steps I need to take. Like I have to create a VL and then I need to create two regions and now what all properties I need to update to work M-D relationship.
    Thanks,
    Sandy

  • Row level validations for JTable

    Is their a way to validate the row data of a editable JTable before moving out from that row, and if invalid data existings in that row then we need to display an error message and set the focus back to that row.
    Basically the user should not be able to move out from that row until he enters valid data for the row.
    I was able to do the validations at the cell level, by validating in the editor of that particular cell or in the SetValueAt() method. The reason i need the row level validations are for example if a required cell is left blank(if we don't tab into the cell then nor the editor is started nor the setValueAt() is called to do the validations) or if a cell's validation depends on the other cell's value in the same row.
    I can over write the valueChanged() method of the Jtable itself to trap the row change event. But the valueChanged() method only does the repainting for the new selection, the selectedRow index is changed even before the valueChanged is called. So in the valueChanged() method the selectedRow index is the row to which u are moving into rather than the row from which u are moving out and this is the row u need validations for. ListSelectionEvent has two methods getFirstIndex() and getLastIndex(), one among these two will return the row number from which u are moving out from, so based on this i can validate the row iam moving out from and set the focus back to that row if invalid data exists.(The valueChanged event is fired again when u are resetting back the focus).
    But the problem is when the row u are moving into and the row u are moving out from both have invalid data. Then it becomes an infinite loop as the valueChanged event is fired when u are setting back the focus.
    Any Suggestions ?
    Thanks

    DrClap:
    i need a editable JTable. so ur suggestion doesn't work.
    Jaredth :
    here is the code. I have over rided valueChanged method of JTable and called my validateRow in this method. I am just displaying a error msg for now, iam not setting the focus back to the row which has invalidate data. This code doestn't work for cases where when the row u are moving into and the row u are moving out from both have invalid data.
    public void valueChanged(ListSelectionEvent e){
    if( this.getSelectedRow() == -1) return;
    if(!e.getValueIsAdjusting() ) {
    int selRow = this.getSelectedRow();
    int firstIndex = e.getFirstIndex();
    int lastIndex = e.getLastIndex();
    int rowToValidate = selRow == lastIndex ? firstIndex : lastIndex;
    if( !isValidateRow( rowToValidate) ){
    JOptionPane.showMessageDialog(null,"Invalid Data at row: "+rowToValidate,
    "Row validation failed", JOptionPane.ERROR_MESSAGE);
    return;
    kenny_lee:
    I have already done what u explained above. This works fine for cases where u need to validate individual cells in a row. But what happens when the validation of a cell in a row depends on the value in a different cell in the same row and for which u didn't enter any value yet. So in these cases u need to do the validation when u are moving out from the row. So i need to know is their a way to handle this in a efficient way? There is a way by over loading the valueChanged method of the JTable as mentioned above but it will not work for cases where the row u are moving into and the row u are moving out from both have invalid data.
    Thanks for ur response.
    Let me know if u find a solution to this problem

  • Portal Master-detail form how to auto assign detail record sequence number

    Portal Master-detail form how to auto assign detail record sequence number.Please help me?

    You can just read the following section
    Can I specify a sequence number generator as the default value for a form column?
    Yes. Enter the following in the "default value" field for the column:
    #<schema name>.<sequence name>.nextval
    where <schema name> is the name of the schema containing the sequence, and <sequence name> is the name of the sequence. The entry is preceded by a "#".
    For example, if the schema name is "SCOTT", and the sequence name is "CUSTOMER_SEQ", the default value entry is:
    #SCOTT.CUSTOMER_SEQ.NEXTVAL
    same way you can do for master - detail form.
    for more information on forms please refer the following URL.
    http://otn.oracle.com/products/iportal/htdocs/portal_faq.htm#BuildingApplications
    hope it helps.

  • Master Detail Form - unable to add detail row

    Dear,
    I have a test application that runs for years on apex.oracle.com.
    Since 3rd of june 2010 I am unable to add rows on a detail form.
    Any ideas?
    Help is welcome!
    Kind regards
    Lorenz

    4.0 Conversion Issue
    Lorenz stated I can create the orderheader, but unable to create orderlines.Simply nothing happens, when I click the add row button.>
    I share the same issue as Lorenz, on a Master/Detail form, I am able to create my Master row and but nothing happens when attempting to create detail rows. I was able to switch my application to theme 13 (Traditional Blue) from 2 (Blue and Tan) and was then able to create and add details rows.
    My dilemma. When switching to theme 13 and others, none appear to support Two Level Tabs in the same manner as Theme 2. Essentially the applications look and feel is not going to go over well with my user base of 3+ years.
    Is there another standard theme that will support Two Level Tabs like Theme 2 and allow the addition of detail rows on a Master/Detail form?
    Is this a reported 4.0 conversion issue?
    Jeff

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

  • Add a new row in Detail form in MASTER DETAIL FORM

    Hello Everyone,
    I need help on the following.I have master detail form .In detail form i have Add Row button which adds a new row and i have save button to save the record .But now if i am adding a row its not adding a new row .It says it process but didn't show the new row .
    Can somebody help me on this
    thanks in advance

    Hello,
    How many records do you show in your detaii region and how many are there for that master? Maybe the new row is in the next set of records - or at the 'bottom' of the last set of records?
    Did you check if the row is inserted in the database (and just didn't show up for one reason or another)?
    Greetings,
    Roel
    http://roelhartman.blogspot.com/
    http://www.bloggingaboutoracle.org/
    http://www.logica.com/

  • Populate row of master detail form with selection from LOV?

    Hi Guys,
    Total noobe, Hope you can help me out with a project I am working on in Oracle Apex 4.1 with 11g XE
    I am sure this is a simple enough issue but I just can’t see the solution.
    I have a table called ‘STOCK’ this contains all new parts and delivery details.
    ‘STOCK_ID’ NUMBER PK
    ‘DELIVERY DATE ‘ DATE
    ‘PART’ VARCHAR2
    ‘PART_SN’ VARCHAR2
    ‘PART_AN’ VARCHAR2
    ‘INSTALLED’ CHECKBOX
    I have a table that list all the current physical locations of hardware for example
    ID, Till number, store location etc…
    I have an table to list the devices and modification to the hardware in these store locations.
    Move Date, Device, Device Serial number, Device Asset Number, Comments
    I have a report & form that displays all the current physical locations of hardware and a master detail form linked to this to add devices and modifications to each store location.
    I have a LOV setup on the Devices column that is based on a simple select query
    SELECT PART from STOCK
    ORDER BY 1
    This provides me the list of parts in the stock table.
    What I need to figure out is how do I get the data from the ‘STOCK’ table when I select a part in the LOV to auto populate ‘DEVICE_SN’ ‘DEVICE_AN’ in my master detail tubular form. this information is contained in the 'PART_SN' & 'PART_AN' columns of the STOCK table.
    I also need to figure out how to identify the part because by default the LOV only displays one column and I have no idea which part I am selecting other than by name. i could use a popup LOV and scan a barcode into the search box and get the retuen value to display the part name in the field.
    I also would like to reduce the number of records displayed in the LOV by using the ‘INSTALLED’ checkbox i.e. if checked this part has been used and will not be available for selection. The ‘PART_SN’ field can be duplicated as we often get the same part back again as a replacement after repair but this should be valaditated against i.e if the parts is ticked as installed and not available for selection in the list it can be added again this could possibly be validated based on the ‘DELIVERY DATE‘?
    I hope this make some sense to you guys if you need any further details let me know.
    Cheers
    Darren

    Hi,
    I am from the Oracle Forms background too and I have been using Oracle Apex for a while. Oracle Forms is just like client-server application although it uses the Forms servlet to render its Web front-end. I think...if you're really trying to develop true-Web application, you should try to forget such features as "master with many details" in Oracle Forms. Loading all the details in a single page will cause overheads anyway. When you discover more about ajax and such third-party javascript libraries as jquery and mootools, you'll have a different mind of Web development.
    Thanks.
    Andy

  • How to access detail-rows in master-detail form?

    I have a master-detail form(one to many relationship). The master and detail are in separate blocks. The detail rows are displayed in a tabular form.
    I need to access the detail-rows since the database writes for the detail rows will be managed by a procedure.
    I have been looking through the documentation and have been unable to find any syntax for iterating through the detail-rows.
    Any help is appreciated. Thanks.

    go_block(detail)
    first_record;
    in a loop while not last_record
    -- do your stuff
    next_record;
    end loop;

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

  • Master Detail Form - Update Statement for Column in the Detail Section

    Hello,
    I've posted a demo application to apex.oracle.com
    Application# 49298
    Application Name: Street_Inventory
    Basically, on page 3 I have a Master Detail Form. In the Detail section, I want the value of On_hand to save to table ITEMS. Here's my code below.
    SOURCE
    select
    "CONSUME_DETAIL"."CONSUME_DETAIL_ID",
    "CONSUME_DETAIL"."CONSUME_HEADER_ID",
    "CONSUME_DETAIL"."ITEM_ID",
    "CONSUME_DETAIL"."CONSUMED_QUANTITY",
    ("ITEMS"."ON_HAND" - "CONSUME_DETAIL"."CONSUMED_QUANTITY") as "ON_HAND"
    from "CONSUME_DETAIL",
    "ITEMS"
    where "CONSUME_HEADER_ID" = :P3_CONSUME_HEADER_ID
    and "CONSUME_DETAIL"."ITEM_ID"="ITEMS"."ITEM_ID"
    UPDATE INVENTORY PROCESS
    UPDATE ITEMS
    SET ON_HAND = :P3_ON_HAND - :P3_CONSUMED_QUANTITY
    WHERE ITEM_ID = (select     ITEM_ID
    from     CONSUME_DETAIL
    where CONSUME_DETAIL_ID = :P3_CONSUME_DETAIL_ID);
    My code isn't working. What am I doing wrong?

    WReed,
    The first thing I see "off the bat" is that you don't have items named P3_ON_HAND and P3_CONSUMED_QUANTITY which are referenced in your code. Although it's possible to do what you want with just SQL, I updated your code with a little PL/SQL to make it easier to understand...
    As you'll see the problem now is that the design/db model is not quite right as your getting a too many rows error.
    Regards,
    Dan
    http://danielmcghan.us
    http://sourceforge.net/projects/tapigen

  • Field values erases when Add Row button is pressed in Master Detail Form

    Hi,
    I am using APEX 4.0. There is a master-detail form in a page, this has 5 rows in it by default, has a Add row and a Delete button. I face two problems now:
    1. When the values are entered in all the 5 rows, that are in default, and Add Row button is clicked, these values are entered in the DB, but they are erased from the interface. Means when user clicks Add row he don't see the old values he has entered. All new empty rows are only seen. This might confuse the user. How can I resolve this.
    2. The values are saved to the DB only when the Add row button is clicked, so suppose if the user enters some wrong values in the default rows and after he clicks Delete button, all the field values are erased. Is there a way to delete only that particular row? (Please note: the values are not saved to the DB, unless the Add Row button is clicked)
    Please let me know how to resolve these 2 issues.
    Thanks.

    So let me get this straight:
    You enter information into a tabular form and then click the add row and the data is being duplicated from the prior row or being inserted into the table ?
    Thank you,
    Tony Miller
    Webster, TX
    A lady came up to me on the street, pointed at my suede jacket and said "Do you know a cow was murdered to make that jacket?"
    "I didn't know there were any witnesses", I replied " Now I'll have to kill you too"

  • Problem in Master Detail form when using ADF table for Detail

    hi,
    jdev version-11.1.2.1.0
    i have create Master detail form using datacontrol drag as ADF Master Form Detail Table.
    Now when i create a new row in Detail table using CreateInsert button a blank new row created on the top of detail table.
    and other row show that data of previous record based on master.
    problem is that i want when i click on createInsert button all row of detail table should be blank and when user fill two or three row then commit.
    Thanks in Advance

    Hi,
    if a detail table has data, then createInsert adds to these. If you want to hide existing rows, create a new View Object instance and set its "Retrieve from the Database" option to "No Rows". The use an af:switcher to change the table shown when the user clicks the createInsert button. There is a bit of coding required to have this use case in ADF, but its mostly declarative. Bottom line is that there is no automated option other than creating new rows in a separate page or dialog if you are bothered by existing rows
    Frank

Maybe you are looking for