How to identify rows to update on tabular form?

Application Express 3.2.1.00.10
Hello!
I have a tabular form in my application that I created through the wizard. The form is based on a table with a primary key and a trigger to populate the next key upon insert, so as a result going through the wizard was not a problem. It created page processes for ApplyMRU, ApplyMRD, AddRows, etc. I'm curious how APEX knows which row is updated without the user having to select the checkbox and clicking Submit. It seems the checkbox is only for cases where the user wants to delete a record.
I want to be able to replicate this in another tabular form page which I am manually creating, although it will be based on a view without a PK (which I had to "fake" by concatenating unique identifying columns). In this form page, when I make attempt to make an update to a record, nothing happens in the database, unless I actually check a checkbox and click on Submit. How do I get around having the user to click off records to update? I want the form to just accept changes, and "know" which records to update in the table, similar to how APEX does it out of the box.
Any ideas? Thanks!

Denes,
I tried as you have suggested, but for some reason, it doesn't seem that any action is taking place. Either the column arrays are empty or apex_application.g_f01(i) does not have a value. I've verified that none of the records in the database have changed. Any ideas?
The Process Success Message is set to:
Changes successful. &P7_REC_UPDATE_COUNT. records updated.  &P7_REC_INSERT_COUNT. records inserted. ... and it shows Changes successful. 0 records updated. 0 records inserted.
This is the Page Process executed on submit of the "Submit" button:
DECLARE
  v_return  NUMBER;
  v_msgcode NUMBER;
  v_message VARCHAR2(250);
  v_row     BINARY_INTEGER;
  v_insert_cnt INTEGER := 0;
  v_update_cnt INTEGER := 0;
BEGIN
   FOR i IN 1..apex_application.g_f01.COUNT  LOOP
      IF  apex_application.g_f10(i) IS NOT NULL             -- CHECKSUM FIELD
         AND wwv_flow_item.md5 (apex_application.g_f01(i),   -- PK_COLUMNS
                                apex_application.g_f05(i),   -- org_code
                                apex_application.g_f07(i),   -- access_flag
                                apex_application.g_f08(i),   -- external_flag
                                apex_application.g_f09(i)   -- confid_ind
                               ) != apex_application.g_f10(i)
      THEN
      ROLLBACK;
      RAISE_APPLICATION_ERROR(-20001,'Current version of data in database has changed '||
                               'since user initiated update process.');                      
      RETURN;
    END IF;
  END LOOP;
  FOR i IN 1..apex_application.g_f01.COUNT LOOP
   IF apex_application.g_f01(i) IS NOT NULL THEN
     -- update existing record if PK value exists
     USER_SEC_UPDATE (I_ACTION        => 'U',
                      I_WK            => apex_application.g_f02(i),
                      I_USER_ID       => apex_application.g_f03(i),
                      I_ORG_CODE      => apex_application.g_f05(i),
                      I_ACCESS_FLAG   => apex_application.g_f07(i),
                      I_EXTERNAL_FLAG => apex_application.g_f08(i),
                      I_RPT_LEVEL     => NULL,
                      I_CONFID_IND    => apex_application.g_f09(i),
                      O_RETURN        => v_return,
                      O_MSGCODE       => v_msgcode,
                      O_MESSAGE       => v_message);   
     v_update_cnt := v_update_cnt + 1;
   ELSE
     -- insert new record if PK value doesn't exist
     USER_SEC_UPDATE (I_ACTION        => 'I',
                      I_WK            => NULL,
                      I_USER_ID       => apex_application.g_f03(i),
                      I_ORG_CODE      => apex_application.g_f05(i),
                      I_ACCESS_FLAG   => apex_application.g_f07(i),
                      I_EXTERNAL_FLAG => apex_application.g_f08(i),
                      I_RPT_LEVEL     => NULL,
                      I_CONFID_IND    => apex_application.g_f09(i),
                      O_RETURN        => v_return,
                      O_MSGCODE       => v_msgcode,
                      O_MESSAGE       => v_message);   
     v_insert_cnt := v_insert_cnt + 1;              
   END IF;
  END LOOP;
  :P7_REC_UPDATE_COUNT :=  v_update_cnt;
  :P7_REC_INSERT_COUNT :=  v_insert_cnt;
END;

Similar Messages

  • Multi Row Update for Tabular Form

    1) I'm trying to understand how the built-in MRU works for tabular forms: While running through every row, does it check for changes before issuing an UPDATE or does it blindly UPDATE every row in the current pagination range?
    2) If I need to write my own Multi Row Update process for tabular forms, could someone give me some tips on how to do that?
    Thanks,
    Pavel

    1) It stored a checksum for each row that it renders. It calculates the checksum again before processing the rows. The UPDATE statement it issues has a predicate like where old_checksum!=new_checksumSo, it only updates the rows that have at least 1 column value that is different (causing the row checksum to be different)
    2) See the howto at http://www.oracle.com/technology/products/database/application_express/howtos/tabular_form.html

  • How to avoid submitting a page when tabular form rows are empty

    Hi,
    I have a master detail form in my application. There are 2 tables that are used Table A and Table B. Table A contains Ticket number and Table B refers to Table A through a foriegn key and Table B have columns like Date,Name, Age, ticket_id (that refers to the ticket_number of the Table A).
    This is how the application works:
    In a page there is a field for Ticket Number, once the user enters the Ticket Number and click Add Details, a tabular Form with 5 empty field appears... (Done through Page Process->Data Manipilation->Add Rows)
    This form contains fields Date, Name and Age. Once the user fills in all the details and click Submit button, the page is submitted. Whatever values that was entered is saved in Table B. Page Sucess message appears. This works fine.
    But once the Ticket Number is entered and Add Details is clicked, and without entering the values in the Tabular Form, if Submit button is clicked, there is no error showing up neither I see Page success message. But this should not be allowed. There should be some error showing up...
    Tabular Form Validations works only when user enters some values in the Tabular Form and click Submit. For the above scenario, where the form is untouched the validation doesnt work.
    How can I get this done? Any ideas?

    Hello Suzi,
    >> if (document.wwv_flow==null)
    The document.wwv_flow is an object representing the current form that was just rendered on your screen. As such, it can never be null.
    >> How to avoid submitting a page when tabular form rows are empty
    The correct way, especially for versions prior to APEX 4.0 is to use JavaScript, but for that, you need to know and understand how APEX generates your tabular form, HTML wise.
    To be very brief, APEX attached a unique ID to every updatable cell in the tabular form, using a certain pattern – each updatable column is getting a unique name (e.g. ‘f01’,’f02’ etc.) and the ID of a cell is a combination of this name with the serial row number the cell is on. For example, a cell on the third row in an updatable column called ‘f04’ will be given an ID of f04_0003. (More detailed explanation, with an example, can be found in my book).
    What you should do is to check these cells according to your validation policy (e.g. is all five row must be filled, is all the columns in a specific row must be filled, etc.).
    Regards,
    Arie.
    ♦ Please remember to mark appropriate posts as correct/helpful. For the long run, it will benefit us all.
    ♦ Author of Oracle Application Express 3.2 – The Essentials and More

  • How to identify transfer and update routines are applied to my ods/ cubes?

    hi all,
    how to identify transfer nor update routines are been applied to my ods/ cube?
    regds
    hari

    You need to go through the update Rule and Transfer Rule mapping and if you see any routine then there is a routine. Only manual process and also that is not too bad to go through them.
    thanks.
    Wond

  • How to set value on MRU insert Tabular Form

    This post refers to the forum article found How to set value on MRU insert Tabular Form
    I have included the problem and proposed solution below. My problem follows
    Problem
    Hi,
    I am using a Tabular Form. I used the wizard and it created all of the items (Cancel, Submit, Add, Multidelete buttons, etc.). I have a table that is like an FK table. For instance, we could have a customer table, and then a customer address table. Each customer could have multiple addresses. In the address table, the first ID column is the customer ID. So in using the tabular form for the addresses, I need to make the first column the same when I insert. But when I choose add row, everything works fine except it tries to insert a null into customer id. The uniqueness of the row is determined by customer ID and address string.
    Any time I make it to this screen, all new rows will have the same ID with I have in a variable that I can reference from the page called :P0_ITM_CUST_ID.
    How do I set the first value for all inserts? My guess is I need to do this in Computations. I'm also guessing I need to do this with a replace statement. I'm just not sure how to reference the first column of the new row.
    Thanks!
    Tim
    Solution
    The way to do this is by using the "Default" value for that Column. Go to
    Home>Application Builder>Application xxx>Page yyy>Report Attributes>Column Attributes
    Set the default value for newly added rows as in
    http://img237.imageshack.us/img237/5758/screenshot012di2.jpg
    Hope this helps.
    Un-resolved problem
    have also tried to do this but the fields I see are not the same.
    Please see screenshot=http://krisjones.freewebspace.com/apex.JPG
    I am using the Oracle hosted environment, so 2.2.1.
    To my knowledge I have done the same as the user in the first post. Am I doing something incorrectly or should I have created the tabular form differently?
    Many thanks. Kris

    Kristian - You see a different version of the form depending on whether the selected column is the primary key column or not.
    Scott

  • How to make a column in a tabular form required?

    How to make a column in a tabular form required ?

    the column name is test_id , and the debug report is :
    0.00000
    0.00000
    ...NLS: Set Decimal separator="."
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    Metadata: Fetch application definition and shortcuts
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    NLS: wwv_flow.g_flow_language_derived_from=FLOW_PRIMARY_LANGUAGE: wwv_flow.g_browser_language=ar-eg
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    alter session set nls_language="EGYPTIAN"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    alter session set nls_territory="EGYPT"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    NLS: CSV charset=AR8MSWIN1256
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.01500
    A C C E P T: Request="CREATE"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    ...NLS: Set NLS Group separator=","
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    ...NLS: Set g_nls_date_format="DD/MM/RR"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    ...NLS: Set g_nls_timestamp_format="DD/MM/RR HH12:MI:SSXFF PM"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    ...NLS: Set g_nls_timestamp_tz_format="DD/MM/RR HH12:MI:SSXFF PM TZR"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    ...Setting session time_zone to +02:00
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.00000
    0.00000
    ...metadata, fetch translated app info
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...fetch session state from database
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    fetch items
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...fetched 14 session state items
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Check session 8341322256175063 owner
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Check for session expiration:
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Metadata: Fetch Page, Computation, Process, and Branch
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Session: Fetch session header information
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...metadata, fetch page info
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Validate item page affinity.
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Validate hidden_protected items.
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Check authorization security schemes
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Initialize tabular form column mapping
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Session State: Save form items and p_arg_values
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Save "P38_CLIENT_ID" - saving same value: ""
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Saved Item "P38_CLIENT_NAME" New Value="asdf"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Saved Item "P38_AGE" New Value="23"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Saved Item "P38_SEX" New Value="ذكر"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Saved Item "P38_PHONE" New Value="23"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Save "P38_EMAIL" - saving same value: ""
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Saved Item "P38_DOC_NAME" New Value="adsf"
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Save "P38_NOTES" - saving same value: ""
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Save "P38_CLIENT_ID_NEXT" - saving same value: ""
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Save "P38_CLIENT_ID_PREV" - saving same value: ""
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Session State: Save "P38_CLIENT_ID_COUNT" - saving same value: ""
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Processing point: On Submit Before Computation
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Branch point: Before Computation
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Computation point: After Submit
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Tabs: Perform Branching for Tab Requests
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Branch point: Before Validation
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Validations:
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    Perform basic and predefined validations:
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Validate is not null for P38_CLIENT_NAME
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.00000
    ...Validate is not null for P38_AGE
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.01500
    0.01600
    ...Validate is not null for P38_PHONE
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.03100
    0.00000
    ...Validate is not null for P38_DOC_NAME
    4
    http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2http://127.0.0.1:8080/apex/f?p=4000:939:8341322256175063::NO:939:P939_PAGE_VIEW_ID:2
    0.03100
    0.00000
    Perform custom validations:

  • How to hide and show button based on if row is selected in tabular form

    Hi,
    Im pretty new to apex. I am using version 4.1. I have a tabular form and what i want to do is only have the delete button show if i select a row from the [row selector] column. Can this be done using a dynamic action? I have tried it that way unsuccessfully. Please help or let me know if you need any more information.
    Thanks

    Do you mean if the check box is selected in the row?
    Assign a static ID to the delete button, e.g. MY_DEL_BTN. Look for "Static ID" under the Attributes section of the button.
    If so, make an advanced Dynamic Action based on Click and a jQuery selector. Usually, this element is name "f01" but, you need to make sure. Assuming it is "f01" then your jquery selector would be:
    input[name="f01"]set the event scope to live.
    Your dynamic action will fire JavaScript. (BE SURE TO UNSELECT FIRE ON PAGE LOAD). To make sure you have the right jQuery selector, at first just put a pop up message in the JavaScript.
    alert('You Clicked the Row Selector!');Run the page. Click the row selector. If you get the pop up you have specified the jQuery selector correctly. Yay!
    Then, assuming the above is correct. You can now determine if any have been selected.
    Now, set it back to SELECT TO FIRE ON PAGE LOAD (You want the delete to be hidden when you first open the page).
    Change your JavaScript to this:
    var checkedCnt = $("input:checked").length;
    if( checkedCnt > 0 )
       $('#MY_DEL_BTN').show();
    else
       $('#MY_DEL_BTN').hide();
    };-Joe

  • How to update Manual Tabular Form

    Hi There,
    I have a manual tabular form on an apex 4.1 page and I would like to update the records when I click on a submit button.
    Below is the query of the form:
    SELECT '#ROWNUM#' sno,
    apex_item.checkbox(01, wo_line_id) del,
    apex_item.hidden(02,wo_line_id)||apex_item.hidden(03,wwv_flow_item.md5(adjusted_amount)) wo_line_id,
    apex_item.text(17, adjusted_amount, 10, 10,'onchange="set_innerHTML(this);"','f17_' ||'#ROWNUM#') adjusted_amount
    from work_order_lines
    where wo_header_id = :P302_WO_HEADER_ID;
    Below is the code in the "After Submit" process
    DECLARE
    v_header_result VARCHAR2(1);
    v_line_result VARCHAR2(1);
    v_error_count NUMBER:= 0;
    BEGIN
    FOR i in 1..apex_application.g_f02.COUNT
    LOOP
    BEGIN
    update_wo_lines_prc(:APP_USER
    ,:P302_WO_HEADER_ID
    ,APEX_APPLICATION.G_F02(i)
    ,APEX_APPLICATION.G_F17(i)
    ,v_line_result);
    END;
    END LOOP;
    COMMIT;
    END;
    Somehow the LOOP doesn't get executed.
    Please advise.
    Thanks
    Yogi

    Hi,
    I found the reason for this.
    For the column wo_line_id the show option in the report attributes was not checked.
    Thats why apex_application.g_f02.count is returning 0 and the loop was never executed.
    Thanks
    Yogi

  • Does anyone know a way of making primary keys updatable in tabular forms

    Is there a way i can make my primary key updatable in a tabular form.
    I have two tables one called proposal details and one called student current details. Bascially you select one of your proposal details to become your current project this is done via the proposal id. The problem is that i cannot make this field editable in a tabular form. Does anyone know how i could make this primary key updatable?

    Hi Dan,
    One suggestion, perhaps, would be to base the tabular form on a View rather than directly off of the table. The view could include two instances of the proposal id field - the actual field and a second field called, say, PROPOSAL_ID_EDITABLE. You can then use an INSTEAD OF trigger on the view to update the actual table data with the value entered/selected in this second field.
    The reason why Apex will stop you updating primary keys is that it needs to be able to use these to get back to the original record to apply any changes. If you use a view instead, ensure that the primary key fields are not editable but allow the user to change a dummy field instead, the pk fields are available for Apex to get back to the data but the trigger will change the value instead.
    Regards
    Andy

  • How to save all records in the Tabular form page temoprarily

    Hi All,
    I am very new for HTML DB. I created 5 tabular form using HTML DB Wizard. I want that whenever I open any tabular form page and click the add row button in that page then I should add as many record as we need but it should not save in the database but want to save all the page record temporarily in the page. When save button should click then it should save in the database. Can anyone suggest how to do in stepwise. It will be a great help for me.
    Thanks.
    Amit

    Hi,
    Anyone, can help me with this scenario.
    Brgds,
    Mini

  • Add row in manually created tabular form

    Hi,
    I have created a manual tabular form in one of my pages, as I need 2 tabular forms.
    In my manual tabular form i have used collection, so while adding a row into it, the whole page get submitted.
    Do some have any idea how to add a row without refreshing the page, also kindly let me know all the steps for it, as I am new to Apex.
    Thanks,
    Rupak

    Hi Kiran,
    My code for tabular form is as below:
    SELECT apex_item.checkbox (40,
    seq_id,
    'onclick="highlight_row(this,' || seq_id || ')"',
    NULL,
    'f40_' || LPAD (seq_id, 4, '0')
    ) DELETE_CHECKBOX,
    APEX_ITEM.hidden (41, seq_id)
    ||
    APEX_ITEM.TEXTAREA (42,
    c001,
    5,
    80,
    'f42_' || LPAD (seq_id, 4, '0'),
    NULL) Major_Risks_Issues,
    APEX_ITEM.TEXTAREA (43,
    c002,
    5,
    80,
    'f43_' || LPAD (seq_id, 4, '0'),
    NULL) Mitigation_Plan_Action,
    APEX_ITEM.SELECT_LIST (44,
    c003,
    'Open;Open,Closed;Closed',
    'f44_' || LPAD (seq_id, 4, '0'),
    NULL) Status,
    APEX_ITEM.hidden (45,
    c004,
    'f45_' || LPAD (seq_id, 4, '0'),
    NULL) RISK_ID
    FROM apex_collections
    WHERE collection_name = 'COLLECTION_GT'
    UNION ALL
    SELECT apex_item.checkbox (40,
    NULL,
    'onclick="highlight_row(this,' || TO_NUMBER (9900 + LEVEL) || ')"',
    NULL,
    'f40_' || LPAD (9900 + LEVEL, 4, '0')
    ) DELETE_CHECKBOX,
    APEX_ITEM.hidden (41, NULL)
    ||
    APEX_ITEM.TEXTAREA (42,
    NULL,
    5,
    80,
    'f42_' || LPAD (9900 + LEVEL, 4, '0'),
    NULL) Major_Risks_Issues,
    APEX_ITEM.TEXTAREA (43,
    NULL,
    5,
    80,
    'f43_' || LPAD (9900 + LEVEL, 4, '0'),
    NULL) Mitigation_Plan_Action,
    APEX_ITEM.SELECT_LIST (44,
    NULL,
    'Open;Open,Closed;Closed',
    'f44_' || LPAD (9900 + LEVEL, 4, '0'),
    NULL) Status,
    APEX_ITEM.hidden (45,
    NULL,
    'f45_' ||LPAD (9900 + LEVEL, 4, '0'),
    NULL) RISK_ID
    FROM DUAL
    WHERE upper(:request) = 'ADD'
    CONNECT BY LEVEL = 1
    My Code for adding a row is as below:
    DECLARE
    vupdatecount NUMBER := 0;
    vinsertcount NUMBER := 0;
    BEGIN
    FOR ii IN 1 .. apex_application.g_f41.COUNT -- SEQ_ID
    LOOP
    -- if it's an existing record
    IF apex_application.g_f41(ii) IS NOT NULL -- contains SEQ_ID
    THEN
    apex_collection.update_member (p_collection_name => 'COLLECTION_GT',
    p_seq => apex_application.g_f41
    (ii),
    p_c001 => apex_application.g_f42
    (ii),
    p_c002 => apex_application.g_f43
    (ii),
    p_c003 => apex_application.g_f44
    (ii),
    p_c004 => apex_application.g_f45
    (ii)
    vupdatecount := vupdatecount + 1;
    ELSE
    apex_collection.add_member (p_collection_name => 'COLLECTION_GT',
    p_c001 => apex_application.g_f42
    (ii),
    p_c002 => apex_application.g_f43
    (ii),
    p_c003 => apex_application.g_f44
    (ii),
    p_c004 => apex_application.g_f45
    (ii)
    vinsertcount := vinsertcount + 1;
    END IF;
    END LOOP;
    END;
    Kindly look into this and let me know if any thing is wrong here.
    Regards
    Rupak

  • Cannot perform insert/update on tabular form, because of dynamic action

    Hello all,
    I have created dynamic action which computes value from several tabular form cells.
    This functionality works nice, when I change value in associated cell then the computed value is changed by the dynamic action.
    But I am not able to insert or update the row in tabular form when the dynamic action is enabled. When I set condition to "Never", then the row is inserted or updated without any problems.
    Any guess where is the problem?
    Apex version: 4.1.1.00.23
    Jiri

    Ok, below are details related to my DA. Sorry for the poor description in previous posts.
    Triggered by: Chnage event
    Selection type: jQuery Selector
    jQuery Selector
    td[headers='SPECIESCODE'] input,td[headers='MEASURETYPE'] input,td[headers='TRUNKLOGID'] input,td[headers='LOGCLASS'] input,td[headers='LENGTH'] input,td[headers='PIECES'] input,td[headers='DIAMETER'] inputTrue Actions:
    *1.*
    //get element id which was changed by user
    var v_elementid = (jQuery(this.triggeringElement).attr('id'));
    switch(v_elementid.substr(0,3))
      case "f05":
       //assign value from triggered element to hidden field     
       $s("P210_HIDDEN_SPECIES",jQuery(this.triggeringElement).val());   
       //assign actual values also to other hidden elements     
       $s("P210_HIDDEN_MEASURE",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='MEASURETYPE'] input").val());
       $s("P210_HIDDEN_TRUNKLOGID",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='TRUNKLOGID'] input").val());
       $s("P210_HIDDEN_LOGCLASS",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LOGCLASS'] input").val()); 
       $s("P210_HIDDEN_LENGTH",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LENGTH'] input").val()); 
       $s("P210_HIDDEN_PIECES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='PIECES'] input").val()); 
       $s("P210_HIDDEN_DIAMETER",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='DIAMETER'] input").val()); 
       break;
      case "f06":
       $s("P210_HIDDEN_MEASURE",jQuery(this.triggeringElement).val());
       //assign actual values also to other hidden elements     
       $s("P210_HIDDEN_SPECIES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='SPECIESCODE'] input").val());
       $s("P210_HIDDEN_TRUNKLOGID",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='TRUNKLOGID'] input").val());
       $s("P210_HIDDEN_LOGCLASS",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LOGCLASS'] input").val()); 
       $s("P210_HIDDEN_LENGTH",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LENGTH'] input").val()); 
       $s("P210_HIDDEN_PIECES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='PIECES'] input").val()); 
       $s("P210_HIDDEN_DIAMETER",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='DIAMETER'] input").val());      
       break;
      case "f07":
       $s("P210_HIDDEN_TRUNKLOGID",jQuery(this.triggeringElement).val());
       //assign actual values also to other hidden elements     
       $s("P210_HIDDEN_MEASURE",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='MEASURETYPE'] input").val());
       $s("P210_HIDDEN_SPECIES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='SPECIESCODE'] input").val());
       $s("P210_HIDDEN_LOGCLASS",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LOGCLASS'] input").val()); 
       $s("P210_HIDDEN_LENGTH",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LENGTH'] input").val()); 
       $s("P210_HIDDEN_PIECES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='PIECES'] input").val()); 
       $s("P210_HIDDEN_DIAMETER",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='DIAMETER'] input").val());
       break;
    }*2.*
    //get element id which was changed by user
    var v_elementid = (jQuery(this.triggeringElement).attr('id'));
    switch(v_elementid.substr(0,3))
      case "f09":
       $s("P210_HIDDEN_LOGCLASS",jQuery(this.triggeringElement).val());
       //assign actual values also to other hidden elements     
       $s("P210_HIDDEN_MEASURE",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='MEASURETYPE'] input").val());
       $s("P210_HIDDEN_TRUNKLOGID",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='TRUNKLOGID'] input").val());
       $s("P210_HIDDEN_SPECIES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='SPECIESCODE'] input").val());
       $s("P210_HIDDEN_LENGTH",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LENGTH'] input").val()); 
       $s("P210_HIDDEN_PIECES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='PIECES'] input").val()); 
       $s("P210_HIDDEN_DIAMETER",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='DIAMETER'] input").val());      
       break;
      case "f12":
       $s("P210_HIDDEN_LENGTH",jQuery(this.triggeringElement).val());
       //assign actual values also to other hidden elements     
       $s("P210_HIDDEN_MEASURE",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='MEASURETYPE'] input").val());
       $s("P210_HIDDEN_TRUNKLOGID",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='TRUNKLOGID'] input").val());
       $s("P210_HIDDEN_SPECIES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='SPECIESCODE'] input").val());
       $s("P210_HIDDEN_LOGCLASS",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LOGCLASS'] input").val());
       $s("P210_HIDDEN_PIECES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='PIECES'] input").val()); 
       $s("P210_HIDDEN_DIAMETER",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='DIAMETER'] input").val());
       break;
      case "f13":
       $s("P210_HIDDEN_PIECES",jQuery(this.triggeringElement).val());
       //assign actual values also to other hidden elements     
       $s("P210_HIDDEN_MEASURE",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='MEASURETYPE'] input").val());
       $s("P210_HIDDEN_TRUNKLOGID",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='TRUNKLOGID'] input").val());
       $s("P210_HIDDEN_SPECIES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='SPECIESCODE'] input").val());
       $s("P210_HIDDEN_LENGTH",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LENGTH'] input").val()); 
       $s("P210_HIDDEN_LOGCLASS",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LOGCLASS'] input").val());
       $s("P210_HIDDEN_DIAMETER",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='DIAMETER'] input").val());  
       break;
      case "f14":
       $s("P210_HIDDEN_DIAMETER",jQuery(this.triggeringElement).val());
       //assign actual values also to other hidden elements     
       $s("P210_HIDDEN_MEASURE",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='MEASURETYPE'] input").val());
       $s("P210_HIDDEN_TRUNKLOGID",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='TRUNKLOGID'] input").val());
       $s("P210_HIDDEN_SPECIES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='SPECIESCODE'] input").val());
       $s("P210_HIDDEN_LENGTH",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LENGTH'] input").val()); 
       $s("P210_HIDDEN_PIECES",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='PIECES'] input").val()); 
       $s("P210_HIDDEN_LOGCLASS",jQuery(this.triggeringElement).parents("tr:first").find("td[headers='LOGCLASS'] input").val());
       break;
    }*3.*
    call PL/SQL function (values from hidden fields are used as input params)
    begin
    :P210_HIDDEN_VOLUME :=  function(:P210_HIDDEN_SPECIES,:P210_HIDDEN_MEASURE,:P210_HIDDEN_TRUNKLOGID,:P210_HIDDEN_LOGCLASS,:P210_HIDDEN_LENGTH,:P210_HIDDEN_DIAMETER,:P210_HIDDEN_PIECES, :G_USERLANG);
    end;*4.*
    here I want to set computed value from hidden field to VOLUME cell in tabular form. And it seems there is some problem, because not only the corresponding VOLUME cell is changed, but also several other cells. I realized that also several cells which are hidden to user has same value as computed VOLUME field. Including ROWID and then the insert/update operations are not done.
    // find the VOLUME-Field and set it to the computed value
    jQuery(this.triggeringElement).parents("tr:first").find("td[headers='VOLUME'] input").val($v("P210_HIDDEN_VOLUME"));I hope I have provide more information and somebody will be able to he help me. maybe the problem is clear, but with my poor jQuery knowledge i am not able to find it.
    Thanks in advance!
    -Jiri
    Edited by: Jiri N. on Aug 10, 2012 3:24 AM

  • Adding new row at top of tabular form In APEX 4.0

    I havea tabular form and when addrow() it is adding at bottom of the existing rows. Is there a way I can add new row at the top of the rows?
    Thanks.
    Edited by: Badari on Oct 19, 2011 12:07 PM

    Hi Raj,
    I'm trying to implement your solution to add the empty row of a tabular report to the top of the page but I can't get it to work. I've identified two errors in your code, namely
    1) semi-colon after mytable.moveRow(mytable.rows.length-2,1) is missing
    2) You say to use "ABC_REPORT" as the region id but you use "report_ABC_REPORT" in the code.
    I've fixed these but still I cannot get it to work.
    Could you check the code again and see if there are any other errors that we may have missed.
    thanks in advance
    PaulP
    <script language="JavaScript" type="text/javascript">
    function addTop()
      addRow();
      var mytable=document.getElementById("report_ABC_REPORT");
      mytable.moveRow(mytable.rows.length-2,1) // depending on the report template selected use either length-2 or length-1
    </script>

  • How to dynamically change the column in tabular form

    Hi!
    Is there any way to show notice in tabular form if value entered is not in some range?
    eg. I click on button add row, and then I fill out values and if one value is not within a certain range then in last column (this column is not included in table) is notice out of range or something else. I know that this can be achieved with validations but this must be just notice, not some restriction. Values I wrote must be inserted into table.
    I hope you understand me. I use Apex 4.1 and 11g Oracle database.
    Regards,
    drama9346

    Sure you can. If you edit your page attributes you have a field javascript on load. Here you can enter code that does checks or actions depending of user events. Example in the case of a tabular form:
    $('input[name=f01]').live('change', function(){
    if($(this).val()=='1'){
    alert('value is 1');}
    This will give an alert if you change the item in the first column to 1.
    More about jQuery & events at
    http://api.jquery.com/category/events/

  • How to assign a URL in the Tabular Form

    Hi,
    I am using the htmldb.item api's to create manually,the Tabular form. I have got a column in the database(View) like
    ''||substr(DESCRIPTION,1,30)||decode(substr(DESCRIPTION,30,1),null,null,'...')||'' DESCRIPTION,
    which displays as a URL and when the user clicks this URL, the page will have a popup page(in this case it is redirected to page 52).
    My probelm is , if I use wwv_flow_item.display_and_save for this column, I dont see the URL, but it displays the above entire string (along with the HTML tags).
    If I do not use wwv_flow_item.display_and_save, I can not use this item in the COllections as I am using the some validations to display an Error message (Inline with field and in Notification)
    I cannot display the Validation error in the - On Error Page as I should prevent the user to use the browser buttons
    Please let me know how to display the URL and to have this information in the Collection
    TIA
    Ravi

    Ravi,
    Can you fetch the column twice, once into a non-escaped display type that does not generate a form item and again into a hidden item for your collection?
    Scott

Maybe you are looking for

  • Cannot install Windows 7 with bootcamp

    Ok, I am getting really frustrated at this point with bootcamp. I have previously installed win7 on this same computer I'm working with, I reformatted the drive and uninstalled windows with bootcamp, the reason I did this was because I needed more sp

  • New and reply emails from blackberry unreadable

    can somebody give me a hint how to solve that emails sent from my blackberry can be read on a  computer. Now it shows as: TmVlIG5vZyBzdGVlZHMgZXJnIGxhbmd6YWFtDQpDaXNjbyB6YWwgaWsgbW9yZ2VuIGNoZWNr

  • HT5622 while updating, after submission of rescue email next button is not taking next step. what should I do?

    while updating, after submission of rescue email next button is not taking next step. what should I do?

  • Cs6 for color blind people

    Hi, I'm color blind. Which means I can't see color. Dogs are like that too I think... they see in black and white. Something about rods and cones in the eyeball. anyway, I wonder... since I'm about to get into editing etc... if there is a plug in or

  • Migration Tool Upsert question

    Target Server Property No. Name Suite No. <Custom Field> Source Server Suite No. Name Property No. <Custom Field> I want to update Target Server and I got the below error after running Upsert A custom field of type 'Name' in 'Custom Object 07' alread