WHEN-VALIDATE-ITEM results at a block/form

Hello friends at www.oracle.com ,
as we know, WHEN-VALIDATE-ITEM is a trigger used for item validation. But if I use WHEN-VALIDATE-ITEM at a block, or even at a form (since Oracle Forms editor allows me to add a WHEN-VALIDATE-ITEM trigger at a block/form), what's the effect of it? How will WHEN-VALIDATE-ITEM behave in such situation?
Thanks, and best regards,
Franklin Gongalves Jr.

From forms documentation (ever considered to read it?):
A trigger must be attached to a specific object in the form, either an item, a block, or the form itself. The object to which a trigger is attached defines the scope of the trigger, and so helps Form Builder decide which trigger to fire when the corresponding event occurs. Not all triggers are relevant to all objects. For example a When-Button-Pressed trigger would not be attached to a display item.
That means, a when-validate-item-trigger at block level fires for ALL items of the block,
except those ones who have an own when-validate-item-trigger at item level that has the
property "Execution hierarchy" set to "override".

Similar Messages

  • When-validate-item trigger restriction on open form or call form

    W have when-validate-item trigger. I need to place a code here that will bring up a form when the "valid entry" on the item has been made. I am getting a frm-40737:Illegal restricted procedure COMMIT...
    Code snippet on the procedure that I am calling from the when-validate-item:
    IF :System.Form_Status = 'CHANGED' THEN
    Commit_Form;
    end if;
    Call_Form ('MY_FORM', HIDE, NO_REPLACE, NO_QUERY_ONLY,'PARAM');
    Is there a work-around. We also cannot use timers here.
    Any help is appreciated?
    TIA

    Thanks Sudha, I tested and it worked with the key-next-item trigger.
    The only thing though, I was told that the users will not use the enter key when they navigate out of the field, it is either clicking on an exit button or function key F4...so I am still stuck with the same problem.
    This site is really helpful and I hope to receive more ideas.
    Thanks!

  • In Oracle Forms, to run all the When-Validate-Item of all the items at once

    In Oracle Forms, is there any built-in / procedure / function which is used to run all the When-Validate-Item triggers of all the Items at once ?
    I will put it in detail :
    When a form is run and while entering the data..
    when we enter some data and try to move out of that item then the When-Validate-Item trigger of that item is fired and the code in that trigger is executed..
    Similarly there may be many items and many When-Validate-Item triggers correspondigly in a form..
    My requirement is to run all the When-Validate-Item triggers of a form at once when we click a button which is created for that purpose only..
    So is there any built-in / procedure / function (to run all the When-Validate-Item triggers of all the items), which can be called in the When-Button-Pressed trigger of that particular button..
    If any one having any solution/suggestion, please let me know..
    Thanks..
    Edited by: user2938447 on Nov 8, 2010 9:03 PM
    Edited by: user2938447 on Nov 8, 2010 9:12 PM
    Edited by: user2938447 on Nov 8, 2010 10:19 PM

    Hi Sandy,
    Thanks for your suggestion..
    The validations should be done at Item level (When-Validate-Item as usually) and seperately again when a button is pressed.
    So to put all the code in another block-level When-Validate-Item trigger or in any When-Button-Pressed trigger will be duplication of the code.
    Actually I have around 30 Fmbs to be modified and each Fmb is having around 20 Items and almost all Items are having When-Validate-Item trigger.
    So,I wanted to know whether there is any Built-in / Procedure in Oracle Forms which runs all the When-Validate-Item triggers once it is called.
    Thanks..

  • Diffrence between when-validate-item and post-text-item trigger

    What is the Diffrence between when-validate-item and post-text-item trigger, when they are written for the same item and the basic diffrence between when-validate-item and post-text-item trigger.

    Two big differences:
    1. post-text-item is only available to, and only triggered when leaving a text item, whereas when-validate-item is triggered by the forms validation process, and is available for any item type.
    2. p-t-i is a navigation trigger and you cannot invoke it programmatically, whereas the 'validate' built-in can be used to execute validation which fires the w-v-i trigger(s).

  • Question on WHEN-VALIDATE-ITEM Trigger in Forms 6i

    Hi,
    I am working with a form which has two different database blocks. When I enter some valid data in block 1 and hit tab, a key-nxtblk trigger navigates the cursor to the next block. Now this second block has some fields which were disabled at the design time and I have a procedure which sets the properties of these items to enabled when required during runtime. From the first run, when I run this procedure and go to one of these items which has no data filled in yet and press tab, when-validate-item trigger is fired (I am confused with this kind of behavior).
    Does anyone know why is it firing when-validate-item trigger and if yes how can we fix it?
    My goal is to disable Block2.Item2 only if Block2.Item1 has some value in it.
    Can anyone please look into it?
    Thanks for your time.

    Thanks Steve, Vikas and Craig for your valuable suggestions.
    Craig, to answer your question, I have no "Copy Value from Item" or "Synchronize with Item" property set on these disabled fields.
    To elaborate my problem, I have three non database items in a database block. I have to set the properties during the runtime. Suppose the fields are named as field1, field2, field3. Now I have to have when-validate-item triggers on each item with the following content.
    WVI trigger on field1
    IF field1 IS NULL
    THEN
          activate field2 and field3.
    ELSE
          Disable field2 and field3.
    END IF;
    WVI trigger on field2
    IF field2 IS NULL
    THEN
          activate field1 and field3
    ELSE
          Disable field1 and field3.
    END IF;
    WVI trigger on field3
    IF field3 IS NULL
    THEN
          activate field1 and field2
    ELSE
          Disable field1 and field2.
    END IF;I have a procedure which is called in WHEN-NEW-BLOCK-INSTANCE trigger to assign NULL to some fields and set the properties in the block and during this process when I first run the form, the record_status is set to NEW and after setting some fields to NULL the record_status is changed to INSERT. But both the times when-validate-item trigger on each of the fields 1,2, & 3 are fired. No matter we enter any value or not.
    can you help in understanding the mistake I am doing or fixing this?
    Thanks for your time.
    Edited by: new_user on Oct 31, 2008 1:00 PM

  • When-validate-item at form level do not fire

    Hi, I wrote a when-validate-item at form level to do same check in all items of a screen and note that this trigger do not fire when executing the form. does someone know why this form-level when-validate item do not fire. Are there some conditions i probably forgot to have? Thnaks very much.

    Hi, if you also have a validate-item trigger on the item itself, this may be overriding the form-level validate item.
    At the ITEM-LEVEL:
    if a when-validate-item trigger exists and the Execution Hierarchy property of the trigger is set to override then the item-level trigger will fire instead of any trigger by the same name at any higher scope.
    So make sure you do not have validate-item triggers at the item or block level that may be overriding the form-level when-validate-item.
    To see the properties of a trigger, highlight the trigger and press F4
    Hope this helps!

  • When-validate-item firing on block level.

    Hi all
    i have six fields and when-validate-item trigger is working on block level, i want to display records in one field,i want when-validate-item trigger work on item level not on block level,any help will be greatly appreciated.
    here is the code.
    When-Validate-Item Trigger.
    declare
         Str_Space VARCHAR2(20);
    begin
    Str_Space := ' ';
    :ins1.ref := :ins1.branch || Str_Space || :ins1.class || Str_Space || :ins1.year || Str_Space || :ins1.serial || Str_Space || :ins1.cno || Str_Space || :ins1.edno;
    end;
    sarah

    Francois Degrelle.
    just look the following code.
    DECLARE
         Str_Space VARCHAR2(20);
    begin
         Str_Space := ' ';
    :ins1.ref := :ins1.branch || Str_Space || :ins1.class || Str_Space || :ins1.year || Str_Space || :ins1.serial || Str_Space || :ins1.cno || Str_Space || :ins1.edno;
    END;
    by using the above code i am passing branch,class,year,serial,cno and edno to Ref column( 1 G01 2009 13112 00 01). and Str_space variable is creating space for each item.i want the above code work at item leavel instead of block level.Is it poassibl?
    sarah

  • How to use when-validate-item in the form personalization?

    Dear all,
    I want to use when-validate-item trigger in the form personalization on a specific item. while in the same time the when-validate-item is not included in the trigger event list.
    Please advice & Thanks in advance
    Ashraf Ashour

    Use condition. If you are validating a record, just out the desired check in the condition field for that specific item.
    Thanks
    Nagamohan

  • Issue with WHEN-VALIDATE-ITEM trigger in Forms 6i

    I am working with a form(A) which displays a modal window(B) with some database fields on it when a button on the form was pressed.
    First as soon as I pressed the button on the form A the modal window B appears with the values as (for example)
    Scenario - 0
    field 1 - OTHER
    field 2 - 123-456
    field 3 - 14-JUN-2006
    field 4 - Old Contract
    Scenario - 1
    If field 1 is changed/updated to a value NONE then the remaining fields should grey out and should not allow the user to edit/update those fields. Also it should clear all the data in the fields and should display only blank fields. Now the only updatable field in this case is field 1 which has value NONE at this moment.
    field 1 - NONE
    field 2 - NULL
    field 3 - NULL
    field 4 - NULL
    Only if the user exits the modal window B and clicks on SAVE button which is on the form A then only the data changes are committed to the database tables.
    At this moment I don't want to exit the modal window B which means the data changes are not yet committed to the database.
    Scenario - 2
    Now if field 1 is again changed/updated to a value ANOTHER then the remaining fields has to be populated accordingly using the values from the form A and B and it should allow the user to edit/update the remaining fields in window B.
    field 1 - ANOTHER
    field 2 - 123-456
    field 3 - 14-JUN-2006
    field 4 - Old Contract
    Now if you observe Scenario - 0 and Scenario - 2 only field 1 is differing. Rest of the three fields are same. As I didn't exit from the modal window the changes were not committed to the database.
    If the order of the scenarios is like below:
    Case1 : Scenario - 1 & Scenario - 2
    Case2 : Scenario - 1 & Scenario - 0
    I am able to successfully handle the above two cases as initially the three other fields are set to NULL and the user will be able to update the data and can commit the data.
    If the order of the scenarios is like below:
    Case3 : Scenario - 0 & Scenario - 1
    Case4 : Scenario - 0 & Scenario - 2
    I am also able to successfully handle the above two cases as finally the three other fileds are set to NULL and the user will be not be able to modify them and obviously NULL values will be stored in the database when committed.
    Now the problem is with the following order.
    Case5 : Scenario - 0 & Scenario - 1 & Scenario - 2
    Case6 : Scenario - 2 & Scenario - 1 & Scenario - 0
    In the above cases we can successfully handle until Scenario - 1 but when comes to Scenario - 2 how can we be able to display the data as shown.
    I have tried to perform this using WHEN-VALIDATE-ITEM on field 1. When the field 1 is changed from OTHER to NONE I have assigned NULL to the remaining fields. So it's working fine as I mentioned earlier. Now if I change field 1 from NONE to ANOTHER its allowing to update the remaining fields but its not populating the data.
    Can anyone help with this?
    Thanks for the patience in reading the problem....

    Yes, if you use the debugger as Gerd said you can get and see the data as the code executes line-by-line. You can also use message statements in your code to display the data.

  • ORA-01403: no data found ---- FRM-40735: WHEN-VALIDATE-ITEM trigger raised

    Scenario: I have one Master Detail form. after entering values in master Form, Navigate to Detail form, there I have to enter more that 5000 lines, it's very tough for user to enter huge amount of data.
    Workaround: Give one button on Master form and written a cursor to populate all the 5000(relavent) number of record on detail block.
    Issue: while populating detail data block after around 3000 record detail form start showing Error as
    ORA-01403: no data found
    FRM-40735: WHEN-VALIDATE-ITEM trigger raised unhandled exception ORA-06502.
    Need suggestion
    Code Written on find button as below
    BEGIN
              --XX customized
              if (:ADJ_IP_CTRL.DUE_DT_FROM is null OR :ADJ_IP_CTRL.DUE_DT_TO is null) then
              fnd_message.set_string('Due Date from and Due Date To Must be entered.');
              fnd_message.Show;
              raise form_trigger_failure;
              end if;
         BEGIN     
              go_block('ADJ_INV_PAY');
    clear_block(no_validate);
         for inv_rec in (
                             SELECT v.invoice_num,
              v.invoice_id,
              v.invoice_type,
              v.pay_alone,
              v.exclusive_payment_flag,
              v.payment_num,
              v.amount_remaining,
              --TO_CHAR (v.amount_remaining,fnd_currency.get_format_mask(v.currency_code, 42)) char_amount_remaining,
              TO_CHAR (v.amount_remaining,'FM999G999G999G999G999G999G999G999G990D00') char_amount_remaining,
              ap_payment_schedules_pkg.get_discount_available (
              v.invoice_id,
              v.payment_num,
              :pay_sum_folder.check_date,
              :pay_sum_folder.currency_code)
              discount_available,
              /*TO_CHAR (ap_payment_schedules_pkg.get_discount_available (
              v.invoice_id,
              v.payment_num,
              :pay_sum_folder.check_date,
              :pay_sum_folder.currency_code),
              fnd_currency.get_format_mask (v.currency_code, 42))*/
              TO_CHAR (ap_payment_schedules_pkg.get_discount_available (
              v.invoice_id,
              v.payment_num,
              :pay_sum_folder.check_date,
              :pay_sum_folder.currency_code),'FM999G999G999G999G999G999G999G999G990D00')
              char_discount_available,
              ap_payment_schedules_pkg.get_discount_date (
              v.invoice_id,
              v.payment_num,
              :pay_sum_folder.check_date)
              disc_date,
              v.always_take_disc_flag,
              v.discount_amount_available,
              v.discount_date,
              v.second_discount_date,
              v.second_disc_amt_available,
              v.third_discount_date,
              v.third_disc_amt_available,
              v.gross_amount,
              v.description,
              v.accts_pay_code_combi_id,
              v.due_date,
              v.REMIT_TO_SUPPLIER_NAME,
              v.REMIT_TO_SUPPLIER_ID,
              v.REMIT_TO_SUPPLIER_SITE,
              v.REMIT_TO_SUPPLIER_SITE_ID,
              v.RELATIONSHIP_ID,
              v.external_bank_account_id,
              ieba.bank_account_num external_bank_account_num,
              ieba.bank_account_name external_bank_account_name
              FROM ap_invoices_ready_to_pay_v v, iby_ext_bank_accounts ieba
              WHERE v.party_id = :pay_sum_folder.party_id /* and v.invoice_num like :adj_inv_pay.invoice_num||'%' */
              AND ( (:pay_sum_folder.payment_type_flag =
              'M')
              OR (:pay_sum_folder.payment_type_flag =
              'R'
              AND v.invoice_type IN
              ('CREDIT',
              'STANDARD',
              'DEBIT',
              'EXPENSE REPORT',
              'MIXED',
              'AWT'))
              OR /*Bug5948003, Bug6069211*/
              (:pay_sum_folder.payment_type_flag =
              'Q'
              /*AND (v.vendor_site_id =
              :pay_sum_folder.vendor_site_id
              OR v.invoice_type =
              'PAYMENT REQUEST')*/
              AND ( (:SYSTEM.LAST_RECORD =
              'TRUE'
              AND :SYSTEM.cursor_record =
              '1')
              OR (NVL (
              v.exclusive_payment_flag,
              'N') =
              'N'
              AND NVL (
              :parameter.pay_alone,
              'N') =
              'N'))))
              AND v.currency_code = :pay_sum_folder.currency_code
              AND v.payment_method_code = :pay_sum_folder.payment_method_code
              AND NVL (v.payment_function, 'PAYABLES_DISB') =
              NVL (:pay_sum_folder.payment_function, 'PAYABLES_DISB')
              AND v.set_of_books_id = :pay_sum_folder.set_of_books_id
              AND NVL (v.future_dated_payment_ccid, -1) =
              DECODE (:parameter.manual_fdp_site_acct_src_flag,
              'Y', NVL (:parameter.site_fdp_account_ccid, -1),
              NVL (v.future_dated_payment_ccid, -1))
              AND v.external_bank_account_id = ieba.ext_bank_account_id(+)
              AND v.due_date BETWEEN :ADJ_IP_CTRL.DUE_DT_FROM and :ADJ_IP_CTRL.DUE_DT_TO
                                  ORDER BY v.due_date, UPPER (invoice_num)          
                        --added 08apr2012 (end)
              removed 08apr2012 ORDER BY UPPER (invoice_num)
              ) loop
                   :ADJ_INV_PAY.INVOICE_NUM := inv_rec.INVOICE_NUM;
    :ADJ_INV_PAY.INVOICE_ID := inv_rec.INVOICE_ID;
    :ADJ_INV_PAY.INVOICE_TYPE := inv_rec.INVOICE_TYPE;
    :ADJ_INV_PAY.EXCLUSIVE_PAYMENT_FLAG := inv_rec.EXCLUSIVE_PAYMENT_FLAG;
    :ADJ_INV_PAY.PAYMENT_NUM := inv_rec.PAYMENT_NUM;
    :ADJ_INV_PAY.AMOUNT_REMAINING := inv_rec.AMOUNT_REMAINING;
    :ADJ_INV_PAY.DISCOUNT_AVAILABLE:= inv_rec.DISCOUNT_AVAILABLE;
    :ADJ_INV_PAY.DISC_DATE := inv_rec.DISC_DATE;
    :ADJ_INV_PAY.ALWAYS_TAKE_DISC_FLAG := inv_rec.ALWAYS_TAKE_DISC_FLAG;
    :ADJ_INV_PAY.DISCOUNT_AMOUNT_AVAILABLE := inv_rec.DISCOUNT_AMOUNT_AVAILABLE;
    :ADJ_INV_PAY.SECOND_DISCOUNT_DATE := inv_rec.SECOND_DISCOUNT_DATE;
    :ADJ_INV_PAY.SECOND_DISC_AMT_AVAILABLE:= inv_rec.SECOND_DISC_AMT_AVAILABLE;
    :ADJ_INV_PAY.THIRD_DISCOUNT_DATE:= inv_rec.THIRD_DISCOUNT_DATE;
    :ADJ_INV_PAY.THIRD_DISC_AMT_AVAILABLE := inv_rec.THIRD_DISC_AMT_AVAILABLE;
    :ADJ_INV_PAY.GROSS_AMOUNT := inv_rec.GROSS_AMOUNT;
    :ADJ_INV_PAY.ACCTS_PAY_CODE_COMBINATION_ID := inv_rec.ACCTS_PAY_CODE_COMBI_ID;
    :ADJ_INV_PAY.DUE_DATE := inv_rec.DUE_DATE;
    :ADJ_INV_PAY.REMIT_TO_SUPPLIER_NAME := inv_rec.REMIT_TO_SUPPLIER_NAME;
    :ADJ_INV_PAY.REMIT_TO_SUPPLIER_ID := inv_rec.REMIT_TO_SUPPLIER_ID;
    :ADJ_INV_PAY.REMIT_TO_SUPPLIER_SITE := inv_rec.REMIT_TO_SUPPLIER_SITE;
    :ADJ_INV_PAY.REMIT_TO_SUPP_SITE_ID := inv_rec.REMIT_TO_SUPPLIER_SITE_ID;
    :ADJ_INV_PAY.APS_EXTERNAL_BANK_ACCOUNT_ID := inv_rec.EXTERNAL_BANK_ACCOUNT_ID;               
    --               go_item ('ADJ_INV_PAY.INVOICE_NUM');
    --               EXECUTE_TRIGGER('WHEN-VALIDATE-ITEM');
              validate(record_scope);
              if form_success then
              next_record;
              end if;
              end loop;
              first_record;
         exception
                   when others then
                   raise form_trigger_failure;
              END;
    synchronize;
    END;
    Thanks
    -Krishn

    Hello Krishn,
    Welcome to the Oracle Forums. Please take a few minutes to review the following:
    <ul>
    <li>Oracle Forums FAQ
    <li>Before posting on this forum please read
    <li>10 Commandments for the OTN Forums Member
    <li>How to ask questions the smart way
    </ul>
    Following these simple guidelines will ensure you have a positive experience in any forum; not just this one!
    user12266683 wrote:
    Scenario: I have one Master Detail form. after entering values in master Form, Navigate to Detail form, there I have to enter more that 5000 lines, it's very tough for user to enter huge amount of data.
    Workaround: Give one button on Master form and written a cursor to populate all the 5000(relavent) number of record on detail block.
    Issue: while populating detail data block after around 3000 record detail form start showing Error as
    ORA-01403: no data found
    FRM-40735: WHEN-VALIDATE-ITEM trigger raised unhandled exception ORA-06502.
    Need suggestion
    ORA-01403: no data found clearly indicate that you have SQL Select statement in WHEN-VALIDATE-ITEM trigger and does not handled EXCEPTION
    add exception in your select statement.
    Hope it's clear..
    Hamid
    If someone's response is helpful or correct, please mark it accordingly.*

  • Need code for this Small validation on when-validate-item

    Hi All,
    I have a text item(date datatype) in forms 4.5 I need to do a small validation want to write on when-validate-item. When I enter a date in that text item (Ex 10-JUN-2005) it has to check
    1) It Cannot be "blank"
    2) It cannot be "Not older than today"
    can you please put me code for this small validation. I am new to Forms.
    Thanks in Advance,
    Reddy

    I always put code in the when-validate-RECORD trigger to ensure fields are entered, rather than setting the property. That way, the user can enter other fields within the record, and then gets a message that the field is required only when leaving the record.
    ...of course, if the date item is the only field in the block, then the when-validate triggers will not run unless the user at least types a space in the date. In that case, you need to check in the key-commit trigger.

  • When-Validate-item question

    Dear all,
    I have a block have 3 database items (seq_no, sname, svalue). seq_no and sname are text item and svalue is a list item.
    Number of records display for this block is 3.
    In when-validate-item of sname, I wrote a validation if sname = 'xxx' then svalue will be 'yyy'.
    The problem now I am facing is, when I changed the svalue to 'aaa' and then click the text item in another block, the validation in sname is triggered and I cannot change the value of svalue.
    Per my knowledge, the when-validate-item will be fired only when the value was changed.
    Therefore, I don't know why it was happened...
    I am using Oracle forms 10g.
    Please help. Thanks for advance.
    Regards.

    Indeed..
    Steve's suggestion about block level trigger is the right approach for this case. So I don't have to put code in many items.
    Splazm also had this nice idea about PRE-TEXT-ITEM.. It saves me from copying NULL to the item. Plus I don't have to worry about reseting the record's status cause user doesn't have the chance to set a value to the item cause he won't be able to navigate into it in the first place.
    Plus GO_ITEM is not needed cause if item is question is NULL that means that user is coming from this item and failure of trigger will just keep the focus there!
    So I combined all and came only with the following lines in PRE-TEXT-ITEM that fits perfectly for my requirement (ADEIA_ID is the item in question):
    IF NOT :SYSTEM.TRIGGER_ITEM = 'ADEIA_DETAILS.ADEIA_ID' AND :ADEIA_DETAILS.ADEIA_ID IS NULL THEN
    error message
    RAISE FORM_TRIGGER_FAILURE;
    END IF;
    Thanks all you've been of great help for this!

  • Workarounds for clear_form in when-validate-item  trigger

    Hi,
    I'm using forms6i
    I want to call clear_form in when-validate-item trigger.
    Since they are restricted procedures, i cant do that.
    So what are the workarounds available?
    There are items which are in control block and also records of a datablock available in the form,
    I want to clear everything(control block items and datablock items)
    Thanks

    Divya wrote:
    Hi,
    I'm using forms6i
    I want to call clear_form in when-validate-item trigger.
    Since they are restricted procedures, i cant do that.
    So what are the workarounds available?
    There are items which are in control block and also records of a datablock available in the form,
    I want to clear everything(control block items and datablock items)
    ThanksYou want the clear the form when you fire when-validate-item trigger
    inside the when-validate-item trigger after you commit
    COMMIT_FORM;
    if form_success then
    GO_ITEM(-------);
    clear_form(no_validate,full_rollback); EXECUTE_TRIGGER('WHEN-NEW-FORM-INSTANCE');

  • Return to item after when-validate-item raises form_trigger_failure

    sorry for this simple question but its been awhile since i've had to program forms...
    i am doing item validation in a when-validate-item trigger. the trigger raises form_tirgger_failure on item validation failure.
    is there an easy way to return focus to the item after the failure gets raised?
    any insight most appreciated.

    no, i'm hitting the 'save' button... so, focus is returning to the first item in the first block on the form.
    does the validation unit matter as well? when i enter out then the trigger doesn't fire so i am assuming that the validation unit for the form is not at the item level.

  • When-validate-item fires at the wrong time?

    Hi,
    I have a custom form that contains a header block and line block. Once I enter the header info, then I enter the first line that contains transaction num and amount fields. Then I hit down-arrow to go to enter the second line, at this point when-validate-item triggers for all the line fields fire again (these triggers already fired one at a time when i navigated through the line).
    Supposedly ONLY when-create-record, when-new-record-instance and when-new-item should fire when I just move to a new line, any ideas?
    Thanks! Mike.

    Thanks for all the inputs. The user can either use txn number or BOL number to populate the line info and I have LOV (list of values) for both numbers. The problem turned out is that each LOV updates the other value (e.g. the txn number's LOV returns the txn number AND the BOL number). This in turn changed the value of a validated item and that causes when-validate-item to fire when I just tried to leave the record.
    The solution is to set IS_ITEM_VALID property for Txn Number to TRUE after BOL number's LOV updates the Txn number's value. This tells the system there is no need to revalidate the value.

Maybe you are looking for