Trigger Firing Sequence?

Hei Guys
I have a form where I have a date and time field(text fields). I have a OK/SAVE button, which is subclassed, and executes do_key(commit_form), which in turn executes form level key-commit trigger. On the key-commit trigger, I have some program units, which basically validate the form, and then commit the form.
On the time field, if I change the time(which the system calculated when I hit a button), I do some validation in the when-validate-item of the field.
The code in the time text-fields, when-validate-item is as follows.
fp_check_time(:BL_COMPLAINT.APPT_TIME);
declare
     lnu_error number;
     alrt_id alert := find_alert('AL_CONFIRM');
     some_number number;
begin
     --some_number := fpkg_error_handler.fp_message('UEM','0000','ERROR','@when-validate APPT_TIME');
     --set_item_property('bl_ok_cancel.pb_ok', enabled, property_true);     
     if :BL_COMPLAINT.APPT_time <> nvl(:parameter.APPT_TIME, '*')     then
set_alert_property(alrt_id, alert_message_text, 'You have changed the system recommended date. This could lead to double booking. Do you want to continue ?');
if show_alert(alrt_id) = ALERT_BUTTON1 then
if spkg_med_schedule.sf_chk_valid_datetime
          (:BL_COMPLAINT.SICK_CALL_SERVICE_GROUP,
'1',--check nurse
:parameter.p_clinic,
:BL_COMPLAINT.APPT_DATE,
:BL_COMPLAINT.APPT_time) = 'N' THEN
     lnu_error := FPKG_ERROR_HANDLER.FP_MESSAGE('UEM','0000','ERROR','The date/time you have selected is not valid. Please change the date/time.');
     :BL_COMPLAINT.APPT_TIME := :parameter.APPT_TIME;
     --set_item_property('bl_ok_cancel.pb_ok', enabled, property_false);
      raise form_trigger_failure;
end if;
else
          some_number := fpkg_error_handler.fp_message('UEM','0000','ERROR','@when-vaidate APPT_TIME not ab1');          
     :BL_COMPLAINT.APPT_TIME := :parameter.APPT_TIME;
--     :parameter.error_occur := 'TRUE';
     --set_item_property('bl_ok_cancel.pb_ok', enabled, property_false);
     raise form_trigger_failure;      end if;
end if;     
end;
I have this code even in the date field. which is also a text item.
I am hoping you might have noticed, a couple of Raise form_trigger_failure in the code. But, the processing, does not stop there and continues processing and tries to commit the form.
[b1.]Why does that happen?

> continues processing and tries to commit the form
It would help if you would describe what you mean by "tries to commit". What does the form do?
The first thing you need to do in your commit processing sequence is:
  Validate(form_scope);
  If not form_success then
    Raise form_trigger_failure;
  End if;The above code will stop the commit if an edit error occurs. If you don't validate and check for success, commit processing continues, and you will probably get multiple error messages popping up before the commit process finally stops.

Similar Messages

  • Is it possible to change trigger firing sequence by program?

    Hi,
    I would like to know if there is a command like set_item_property or set_block_property or set_lov_property which can allow to change by program a trigger firing sequence. I do not find any, so i think i have to do it manually in property palette of the trigger. Thanks for your answer.

    Thx
    To change Execution Hierarchy of a trigger, we go into Property palette of that trigger to change this property, i want to know if it is possible to change this property by program without need to go into Property palette of that trigger, EXECUTE_TRIGGER executes an indicated trigger but how to change Execution Hierarchy (for example set_lov_property sets the given LOV property for the given LOV, we use set_lov_property in the program and do not need to go into property palette of this lov), hope you understand what i would like to do. thanks for your help.
    Edited by: Tabit7 on Mar 20, 2011 4:40 AM

  • Forms trigger Firing Sequence

    Does anyone know where I can find details on firing sequence of each type of triggers on Item, Block and Form levels?
    Can I set the Debugger to trace the actual sequence of firing of triggers at run-time?
    Message was edited by:
    wyfwong

    i hope that the document may help!
    (V45) Trigger Execution Sequence in Forms 4.5
    =============================================
    Introduction
    This document lists the order in which triggers fire in Oracle Forms 4.5:
    o The first column, Action, describes the function to be performed
    (e.g. deleting a record).
    o The second column, Trigger Firing Order, describes the order
    in which triggers fire after a function is performed.
    o The third column, Level, describes the level (form, block, item)
    at which the trigger fires. This was accomplished by creating a form
    with all the triggers invoked. If a trigger could fire at all levels,
    it was included at all levels. Such a trigger fires at the lowest level
    at which it is defined.
    Key triggers and triggers which fire via buttons or check boxes are
    not included.
    This bulletin does not cover every contingency and covers only the
    most commonly used actions.
    Action Trigger Firing Order Level
    Runform 1. Pre-Logon Form
    2. On-Logon Form
    3. Post-Logon Form
    4. Pre-Form Form
    5. When-Create-Record Block
    6. Pre-Block Block
    7. Pre-Record Block
    8. Pre-Text-Item Item
    9. When-New-Form-Instance Form
    10. When-New-Block-Instance Block
    11. When-New-Record-Instance Block
    12. When-New-Item-Instance Item
    Enter Query 1. Post-Text-Item Item
    2. Post-Record Block
    3. When-Clear-Block Block
    4. When-New-Record-Instance Block
    5. When-New-Item-Instance Item
    Note: If you define the Key-ENTQRY trigger, this is the only trigger
    which fires in an Enter Query situation.
    Execute Query
    After Enter Query 1. Pre-Query Block
    2. Pre-Select Block
    3. On-Select Block
    4. When-Clear-Block Block
    5. Post-Select Block
    6. On-Fetch Block
    7. On-Close Form
    8. When-Clear-Block Block
    Note: If you define the Key-EXEQRY trigger, this is the only trigger
    which fires in an Execute Query situation.
    Execute Query
    Without Enter
    Query 1. Post-Text-Item Block
    2. Pre-Query Block
    3. Pre-Select Block
    4. On-Select Block
    5. Post-Select Block
    6. On-Fetch Block
    7. On-Close Form
    8. When_Create_Record Block
    9. Pre-Record Block
    10. Pre-Text-Item Item
    11. When-New-Record-Instance Block
    12. When-New-Item-Instance Item
    Exit 1. Post-Text-Item Item
    2. Post-Record Block
    3. Post-Block Block
    4. Post-Form Form
    5. On-Rollback Form
    6. Pre-Logout Form
    7. On-Logout Form
    8. Post-Logout Form
    Next Field and
    Previous field 1. When-New-Item-Instance Item
    Next Record and
    Previous Record 1. When-New-Record-Instance Block
    2. When-New-Item-Instance Item
    Next Block and
    Previous Block 1. Post-Text-Item Item
    2. Post-Record Block
    3. Post-Block Block
    4. When-Create-Record Block
    5. Pre-Block Block
    6. Pre-Record Block
    7. Pre-Text-Item Block
    8. When-New-Block-Instance Block
    9. When-New-Record-Instance Block
    10. When-New-Item-Instance Form
    Records Are Queried 1. Post-Query Block
    2. Post-Change Block
    3. Post-Change Item
    4. Post-Change Block
    5. Post-Change Block
    Go back to Post-Query
    NOTE: This cycle is repeated for each record retrieved.
    No Records Are Queried 1. When-New-Record-Instance Block
    2. When-New-Item-Instance Item
    NOTE: To observe this Trigger Firing Order:
    a. Enter a query.
    b. Enter a nonexistent record.
    c. Execute the query.
    The two triggers listed above, the Enter Query triggers, and
    the Execute Query triggers fire.
    Create Record 1. Post-Change Block
    2. When-Validate-Item Block
    3. Post-Text-Item Block
    4. When-Validate-Record Block
    5. Post-Record Block
    6. Post-Block Block
    7. On-Savepoint Form
    8. Pre-Commit Form
    9. Pre-Insert Block
    10. On-Insert Form
    11. Post-Insert Block
    12. Post-Forms-Commit Form
    13. On-Commit Form
    14. Post-Database-Commit Form
    15. Pre-Block Block
    16. Pre-Record Block
    17. Pre-Text-Item Block
    18. When-New-Item-Instance Form
    Update Record 1. When-Database-Record Block
    2. Post-Change Block
    3. When-Validate-Item Block
    4. Post-Text-Item Block
    5. When-Validate-Record Block
    6. Post-Record Block
    7. Post-Block Block
    8. On-Savepoint Form
    9. Pre-Commit Form
    10. Pre-Update Block
    11. On-Update Block
    12. Post-Update Block
    13. Post-Forms-Commit Form
    14. On-Commit Form
    Here the transaction is complete and one record added.
    15. Post-Database-Commit Form
    16. Pre-Text-Item Block
    17. When-New-Item-Instance Form
    NOTE: To observe this Trigger Firing Order:
    a. Execute a query.
    b. Change a value.
    c. Choose Action->Save from the menu.
    d. Record the triggers from that point.
    Delete Record 1. On-Lock Block
    2. When-Remove-Record Block
    3. Post-Change Block
    4. Post-Change Block
    5. Post-Change Block
    6. Post-Change Block
    7. Post-Change Block
    8. Post-Change Block
    9. Post-Change Item
    10. Post-Query Block
    11. Post-Text-Item Block
    12. Post-Record Block
    13. Pre-Record Block
    14. Pre-Text-Item Block
    15. When-New-Record-Instance Block
    16. When-New-Item-Instance Form
    NOTE: To observe this Trigger Firing Order, delete a detail record.

  • Sequence of trigger firing in forms 6i

    hai,
    please reply soon ..
    i need full details about sequence of trigger firing when form initiate,
    query mode,modify mode,delete mode and insert mode in forms 6i .
    regards,
    B.prakash

    please look into the forms 6i online help manuals. There are the trigger flows of all events

  • Sequence of trigger firing in Forms

    hi all,
    can any one tell me sequence of trigger firing in forms
    regards,
    Ajay

    Sorry boss,
    the actual link is:-
    Forms trigger Firing Sequence

  • Triggers Firing Sequence Of Forms 10g after commit_form trigger.

    hi all,
    please tell me Triggers Firing Sequence Of Forms 10g after commit_form trigger.
    thanks,
    Regards,
    Ambarish

    Hi,
    I have a doubt regarding the sequence of events when COMMIT_FORM is fired.
    Using the following to trigger the event.
    DO_KEY('COMMIT'_FORM');
    Added debug messages in my form triggers and found that after the ON-INSERT trigger is fired, the WHEN-VALIDATE-RECORD is fired and then the PRE-RECORD.
    However this sequence is not specified in the lists of firing sequences mentioned here.
    Is it possible to change the sequence programmatically.
    In my ON-INSERT trigger, calling a DB procedure to insert row in the table.
    Thanks
    Asfa

  • Firing sequence of Oracle forms 6.0 triggers

    Hi All,
    Pls tell anyone what is the sequence of trigger firing in oracle 6.0 (oracle apps).
    Thanks in advance

    Hi,
    Please see if these links/docs help.
    Note: 61675.1 - Trigger Execution Sequence in Oracle Forms
    firing sequence of triggers in oracle forms
    http://tinyurl.com/2wyffj6
    Thanks,
    Hussein

  • Oracle Forms Trigger firing hierarchy flowchart

    Greetings,
    In 1994, there was a "Oracle Forms Processing Manual" (Oracle part# A11990-2).
    This book contained the visual representation of Oracle Forms processes showing where each trigger fires.
    Where is this "flow-chart" in documentation available today?
    I need to know the explicit chronological sequence of each trigger firing....
    Pre-Form trigger fires first...then the When-New-Form-Instance....etc
    Thank you for your support!

    Sorry.
    Let me clarify.
    Need to know where it is defined about which trigger fires before or after which other trigger….
    The whole sequence…every trigger…
    Example:
    Document must show stuff like ON-COMMIT fires before(or after) POST-DELETE.
    So I am certain that when a delete is initiated by the user, the ON-COMMIT fires before(or after), and so data in the database record is still available(or not available) to the code in the ON_COMMIT trigger.
    This helps me know for certain what really happens, step-by-step, when Forms deletes a record.
    So the document must show a visual representation of the DELETE EVENT.
    This visual representation must explicitly show the ON-COMMIT trigger and the PRE-DELETE trigger and the ON-DELETE trigger and the POST-DELETE trigger…
    Thank you!

  • Firing sequence of forms6i  triggers

    Good Morning,
    Is the firing sequence of forms6i triggers is same as forms 4.5 . Is there any difference ? If so, please provide the sequential order of trigger
    Thanks,
    Rinz

    Rinz wrote:
    Good Morning,
    Is the firing sequence of forms6i triggers is same as forms 4.5 . Is there any difference ? If so, please provide the sequential order of trigger As i know and i used there is no difference in sequence of firing triggers in forms.
    For the sequence of trigger see the below link
    http://blog.donews.com/DennisLan/archive/2006/04/23/842198.aspx
    -Ammad

  • Trigger Firing in Form6i

    Hi all
    ill explain detail my situation
    In my forms
    my menu contain icons like new(+),save,e.t.c.
    when I click on new(+) icon one additional record comes for inserting
    But i don't want it. I tried to know the trigger fired for adding record to disabling the trigger action.
    ex;
    icons: new ,save,cut and so.on
    My form records are like this e.g.
    A
    B
    C
    If I click on NEW icon, one record was added like this for inserting
    A
    B
    C
    My requirement is even if I click on NEW icon, no action will be performed. Can you Plz give me the idea?
    Thanks
    RangaReddy

    Instead of breaking the WHEN-BUTTON-PRESSED trigger that fires for that button, you should disable the button. Otherwise, a user may think the form is "broken."
      set_item_property ('ADD', ENABLED, PROPERTY_FALSE);Replace "ADD" with whatever your button is named.

  • How can I get/Catch the information about Trigger firing?

    How can I get/Catch the information about Trigger firing?

    I am running one application (backend is Oracle) and have written one trigger, which will insert one row in two tables depending on user event (After Update Trigger).
    I want know last fired Trigger Information.
    Thanks

  • Before report trigger execution sequence

    Hi,
    What is the execution sequence of the before report trigger ?
    In the report builder help, the definition says "The Before Report trigger fires before the report is executed *but after queries are parsed and data is fetched*."
    But the oracle document "Oracle iDS Reports: Build Internet Reports: Volume 2: Student Guide" says
    "Before a report executes; *after queries are parsed, but before records are fetched*
    I have built a report where, i am populating a table A with some data in the before report trigger. The data model query is a "select * from A ". But the report o/p is blank since the before report trigger was fired after the query was parsed and fetched. My understanding is that the queries should only be parsed but not fetched before the "before report trigger"
    Regards,
    Suresh

    Hi,
    this is an important question.
    In fact the online help is right: Before its execution the query is parsed and data fetching is strarted.
    Thus any plsql operation that may influence the query and the data accessed is too late in the BEFOREREPORT trigger.
    THe issue is that there is no error message or warning. THe problem scenario bandwidth is wide: From "no problem at all" to constant or intermittent error scenarios or worst case unrecognized problems like missing records or any strange behavior in the layout.
    So very carefull while using BEFOREREPORT trigger
    Ciao
    Markus

  • Trigger with sequence question

    figured it out
    Edited by: Jay on Apr 24, 2012 9:49 AM

    If we believe that your BEFORE INSERT trigger compiles successfully (it will not if your CREATE SEQUENCE DDL is actually using case-sensitive identifiers)
    CREATE OR REPLACE TRIGGER user_UPDATE
      AFTER UPDATE ON table1
      FOR EACH ROW
    BEGIN
      INSERT INTO table2
        change_id,
        change_date
        user,
        address,
        phone
      VALUES
        SEQ_user_update.NEXTVAL,
        sysdate
        :new.user,
        :new.address,
        :new.phone
    END;If we believe that the CREATE SEQUENCE DDL statement you posted is correct and that your BEFORE INSERT trigger does not compile then you'd need to put double-quotes around the sequence name
    CREATE OR REPLACE TRIGGER user_UPDATE
      AFTER UPDATE ON table1
      FOR EACH ROW
    BEGIN
      INSERT INTO table2
        change_id,
        change_date
        user,
        address,
        phone
      VALUES
        "SEQ_user_update".NEXTVAL,
        sysdate
        :new.user,
        :new.address,
        :new.phone
    END;Justin

  • Error while using trigger and sequences

    hi friends
    i am leraning oracle now. i have confronted a difficulty while working with triggers and sequence . iF anybody knows this problem ,please help me
    i created atable with the specifications given below
    CREATE TABLE TESTSEQ
    idno NUMERIC(10),
    data1 VARCHAR2(50)
    and i created a sequence named seqcol1
    CREATE SEQUENCE seqcol1
    MINVALUE 1
    MAXVALUE 100
    START WITH 1
    INCREMENT BY 1
    CACHE 20;
    I created a trigger also named
    CREATE OR REPLACE TRIGGER trigADD2
    BEFORE
    INSERT ON TESTSEQ
    FOR EACH ROW
    BEGIN
    SELECT seqcol.NEXTVAL INTO idno;
    END;
    My plan is to add the idno automatically from sequence while inserting a value in data1 column
    while doing insert operation ,
    INSERT INTO TESTSEQ (data1) VALUES ('ram1')
    some error is showing
    the error is SCOTT.trigADD2 is invalid and failed re-validation
    if anybody can help me please help me
    thanks and regards

    ops$oskar@test9i$ create table t (n number, s varchar2(1));
    Table created.
    ops$oskar@test9i$ create sequence s;
    Sequence created.
    ops$oskar@test9i$ insert into t values (s.nextval,'X');
    1 row created.
    ops$oskar@test9i$ insert into t values (s.nextval,'Y');
    1 row created.
    ops$oskar@test9i$ insert into t values (s.nextval,'Z');
    1 row created.
    ops$oskar@test9i$ select * from t;
             N S
             1 X
             2 Y
             3 ZWhat do you need a trigger for?

  • Pre-query trigger firing twice

    I have a pre-query trigger on a block in a form to set the "default where" as
    SET_BLOCK_PROPERTY (BLOCK_ID, default_where,where_clause);
    but when I look at the current query for the session the where clause looks like
    WHERE screening_group_num = :1 AND (screening_group_num = :2)
    Why is this firing twice?
    I checked this thread : Re: pre-query firing twice but I dont have any calls to execute_query in the form.

    I am setting the where_clause in the pre_query trigger for that block.
    and the copy value is not set for the screening_group_num item or for that matter any other item in the block. For all other items, it dosent really matter if the comparison is done twice (as the values will be same) , but when I have text (string) items, then its a problem. For example:
    Where
    (event_description LIKE '%test%') --- this is from the pre_query trigger where I am doing a string_comparison using 'Like and %%'
    AND (event_description = :1) --i suppose this is from the default where clause of the block                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Maybe you are looking for