Pre-Query Trigger

In one of our form ( we generated this from Oracle Designer), we put the Pre-Query trigger to the first block of the form, where we override the default_where so that it includes something liek this
INSTR (cpb_order_title, 'housing', 1, 1) > 0   AND INSTR (cpb_order_title, 'review', 1, 1 )> 0
But when during execution, we found that alongwith the above filter, it also appends the regular default_where to the above condition. Something like this
INSTR (cpb_order_title, 'housing', 1, 1) > 0 AND INSTR (cpb_order_title, 'review', 1, 1 )> 0
AND (    UPPER (cpb.cpb_order_title) LIKE :1
AND (cpb.cpb_order_title LIKE :2 OR cpb.cpb_order_title LIKE :3)
Could not find how it is adding the default condition. Any help would be very much appreciated.
Thanks
Deb

Debra,
So, this is the default WHERE clause on the block?
AND ( UPPER (cpb.cpb_order_title) LIKE :1AND (cpb.cpb_order_title LIKE :2 OR cpb.cpb_order_title LIKE :3)>
I don't see anything in your code that would cause the new where clause to be appended to the original where clause, unless you have code somewhere else that automatically sets the default where clause programatically.
The fact that your code sample sets the block where clause to an empty string ( '' ) if the order_title is NULL makes me wonder why you have a DEFAULT_WHERE defined in the first place. Not to mention the fact that the first thing your Pre-Query trigger does is set the DEFAULT_WHERE to an empty string as well. My first suggestion is to simply eliminate the WHERE property default value.
What is the output of your call to "MESSAGE_POPUP?" Is the original WHERE clause listed in the resulting Alert? Have you displayed the contents of the vQuery variable before the DEFAULT_WHERE assignment and if so what it the output?
Craig...

Similar Messages

  • Pre-query trigger issue

    Hi,
    I have a datablock in the form that is based on a DB table. There are few queriable fields in the block including begin and end dates. If i dont use any pre-query trigger, the records are queried fine. But I want to do a range selection between begin and end_Date fields. Therefore I created a pre-query trigger and set a new_where_clause with all my query_fields and set that as defualt where for my DB block.
    SET_BLOCK_PROPERTY (block_id,default_where, where_clause);
    But when I see the query in toad session , the query looks like
    WHERE (field_1 = :1) and field_1 = :1
    that means its running the defualt where clause on the block and the new_where clause at the same time.
    I checked the form and I dont have any calls to execute query....
    what can be the problem?

    1. What is your new_where_clause? (example, please)It's hard to read. Use the \{code\} tag.
    FUNCTION get_comparison_phrase (database_column_name       VARCHAR2,
                                                             relational_operator       VARCHAR2,
                                                             selection_field_name       VARCHAR2)
              RETURN VARCHAR2 IS
         BEGIN
              RETURN CASE
                              WHEN NAME_IN (selection_field_name) IS NOT NULL THEN
                                        ' AND '
                                   || database_column_name
                                   || relational_operator
                                   || ' :'
                                   || selection_field_name
                              ELSE
                                   NULL
                         END;
         END get_comparison_phrase;
    where_clause := 'WHERE (1=1)';
    if NAME_IN (selection_field_name) IS NOT NULL THEN       ' AND '
                                   || database_column_name
                                   || relational_operator
                                   || ' :'
                                   || selection_field_name
                              ELSE
                                   NULL
                         END;
    where_clause :=
         where_clause
              || get_comparison_phrase (
                        'screening_group_num',
                        '=',
                        'EXCEPTIONAL_EVENTS.screening_group_num'
    WHERE (field_1 = :1) and field_1 = :1I do not see 'WHERE (1=1)'; there.
    Edited by: Michael Roy on Oct 21, 2009 9:47 AM

  • 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Setting item "database property" properties at pre-query trigger ?

    Hi all,
    I have a "from clause query" form and try to execute according
    to some field value that correspond to different queries.
    but my problem is ;
    to run from clause query form, all items should be Database item at the same block.
    So how can I set some item database properties to yes/No
    Is there any build in to achieve this?
    Thanks in advance.
    Regards,
    Defne

    Hi all,
    I have a "from clause query" form and try to execute according
    to some field value that correspond to different queries.
    but my problem is ;
    to run from clause query form, all items should be Database item at the same block.
    So how can I set some item database properties to yes/No
    Is there any build in to achieve this?
    Thanks in advance.
    Regards,
    Defne

  • Join with another table in pre-query

    Hi,
    We have a large data block and we need to order some columns based on street name for example, not id. The base table of db block contains an id_street column, and 'streets' table contains id and name.
    Ok, in pre-query trigger of that block, we have a complex logic and we dynamically build the where clause. At the end, we set the order_By clause of the block, to order the rows, for example we need to order by the 'my_date' column asc (it's a date type column), and street desc; but street NAME, not id. We don't want to use a from clause query, because the dynamically where clause logic it's complex.
    How can we join the db block table with 'streets' table in pre-query, so when constructing the order by clause to specify something like
    set_block_property('ADRESE_NEZONATE', order_by, 'my_date, name desc');where 'name' is the name of the street, from the 'streets' table.
    Is it possible in pre-query, somehow? Or, in my case where can I join with that table and use that column in pre-query at setting order by?
    Thanks!
    Edited by: Roger25 on 26.04.2013 12:31

    I understand what you say but partially.. please explain in more detail how to do that;
    How should look the adrese_nezonate block, then? I have to add a 'name' column and set copy value from item property to 'STREETS.NAME', and database_property No?
    Then the post-query trigger how should look like (the order by clause)? The post-query sends the entire query (with where/order by clauses) to the server, but in that "select... where... order by" (built dynamically) there are only columns from that block (adrese_nezonate). I need to join with streets, INSIDE that query.
    Thanks.

  • Post-query trigger ? save changes?

    I have a similar problem to that posted by 'nova' on Dec. 27, 2000. I have a form generated by Designer. The problem is that upon subsequent querying (F8 pressed twice), it asks me if I want to save my changes, when I have not made any changes.
    I looked in the generated code for the post-query trigger and found SET_RECORD_PROPERTY(:SYSTEM.TRIGGER_RECORD, 'NEW_CUST', STATUS, QUERY_STATUS) which is apparently not the problem, according to this prior post. I am at a loss and have tried everything I could think of.
    What else could be causing this? I checked to see if there were any items being set in the property sheet to default values, and removed the defaults - that did not work.
    ??? I would greatly appreciate any assistance. Thanks.

    Hi Pina,
    my similar problem I have solved like this:
    Post-Record trigger:
    BEGIN
    *** this is important to test the record status - without this I had the same problem
    IF :SYSTEM.Record_Status='INSERT' THEN
    IF :TRANZIT_ZADAJ.ID_SADZBY_TV_PRENOSOV IS NULL THEN
    :TRANZIT_ZADAJ.ID_SADZBY_TV_PRENOSOV:=:SADZBY_ZADAJ.ID;
    END IF;
    END IF;
    END;
    You can check Pre-... and Post-... triggers
    if there are any items being set to any values.
    I hope this will help you.
    Helena

  • FRM-40735:PRE-FORM trigger raise unhandled exception ORA-04067

    FRM-40735:PRE-FORM trigger raise unhandled exception ORA-04067:not executed, stored, procedure "PUBLIC.FND_TIMEZONES" does not exist.
    After I log into Applications, and when I click on responsibility, and when I'm in the Form to retreive the Navigator page, I got the above error.
    If I click on any one of the menu from the list, I automatically gets log off. "your logon session has become invalid".
    please help..

    Hi,
    Yes this was working befor enable rapid clone feature.How did you enable this feature? Did you apply any patches?
    Following Task has been made by me:
    Enable Rapid Clone Featue -------> execute pre clone -------> change IP and Hostname --------> execute post clone-----------> change has been made sucessfully.
    APPS.FND_TIMEZONE package is not avaliable .What does this query return?
    SQL> select object_name, object_type, owner
    from dba_objects
    where object_name = 'FND_TIMEZONES';Regards,
    Hussein

  • Pre-insert-trigger ignoring assignments

    Hi,
    I have this code in a PRE-INSERT-TRIGGER of a database table block:
    Select emp_seq.Nextval Into :EMP.EMPNO From dual;
    Select Sysdate Into :EMP.LASTCHANGED From dual;
    And i have this code in a PRE-UPDATE-TRIGGER of the same block:
    Select Sysdate Into :EMP.LASTCHANGED From dual;
    given scenario:
    1) query records from the table into a block:
    empno ename lastchanged
    1 Smith 01.12.2008
    2 Johnson 01.12.2008
    2) change empname in any record except no. 1:
    empno ename lastchanged
    1 Smith 01.12.2008
    2 Johannson 01.12.2008
    3) create a new record somewhere above the changed record
    empno ename lastchanged
    1 Smith 01.12.2008
    <null> <null> <null>
    2 Johannson 01.12.2008
    4) insert ename in new record
    empno empname lastchanged
    1 Smith 01.12.2008
    <null> Obama <null>
    2 Johannson 01.12.2008
    5) do_key('commit_form')
    with Forms 6.0.8.23.2 -> working fine
    with Forms 6.0.8.27.0 -> ORA-01400:: cannot insert NULL into ("EMP"."EMPNO")
    Any assignment in the pre-insert-trigger is ignored! Can anyone help me with this bug? Thanks in advance

    message(:EMP.EMPNO) is always Null ...
    Everything works if there's no update of a record with higher record-number in the transaction. But the scenario in post 1 doesnt work with Forms 6.0.8.27.0Ugh -- that's ugly!
    Unfortunately, opening a Service Request with Oracle will get you nowhere, since Oracle no longer supports Forms 6i.
    Yesterday, I experienced something very similar with the same version of Forms, specifically this part: Everything works if there's no update of a record with higher record-number in the transaction.*
    If I updated a higher record number in the block, I could NOT get Forms to subsequently store a value in a column in a prior record. I would set the value in the column, and immediately display the value, and it was null! Fortunately in my case, the stored value was only to enable skipping a database lookup in a subsequent pass, so I just skipped working on a solution.
    However, in your case, the problem is a show-stopper.
    What I found was that if I navigated back to the first record in the block, the problem went away. So maybe try this in your commit process:
        Go_block('ABC');
        First_Record;
        Synchronize;
        Commit_Form;Let us know if that works for you.

  • Pre query , post query where date = mon-yyyy

    I have a tabular block B2 with many records
    this block items are vouhcerno, voucherdate. voucherno number(6) and voucherdate date.
    when new form instance i execute query it shows me all the records working fine.
    I add one list item here when new form instance this list item got record like
    Jan-2009
    Feb-2009
    Mar-2009
    so on...
    I want that when i select Jan-2009 from list item and press button
    block B2 only show my January 2009 records.
    I tried to this in pre query and also post query trigger but not successful.
    Kindly guide me .

    Arun really tnx, you are helping me.
    I m sorry Your this code also not working.
    i want to add one more condition in this code
    SET_BLOCK_PROPERTY('b2',DEFAULT_WHERE, 'to_char(voucherdate,''fmmon-fmYyyy'')= ''' || Lower(:vdate ) || ''''  );
    And :vtype = "PV'
    {code}
    I m using this
    {code}
    SET_BLOCK_PROPERTY('b2',DEFAULT_WHERE, 'to_char(voucherdate,''fmmon-fmYyyy'')= ''' || Lower(:vdate ) || 'and :B2.vtype = PV'|| ''''  );
    {code}
    but Not return query.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

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

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

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

  • Problem with forms6i using Pre-Insert Trigger

    I created a block level pre-insert trigger to do some validations and when I save the first time with wrong data it is working fine and popping up alerts that I defined but if I press save the second time it is saving even though the data is wrong.
    This is in Applications 11.5.10 using all the property classes and running on the server.
    I created exact replica of the form(no applications, property classes
    just basic form but with same functionality) and ran it on my local machine it is working fine. It is giving error till the data is fixed.
    Anybody know why?
    Thanks in advance

    It did not work. It is still doing the samething. Actually it is popping up my alerts but saving the record first time itself. Is there any way I can tell it not to save if the data is wrong. My code is below it basically pops up the alerts but doesn't tell anywhere not to save it.
    Thanks
    VJ
    declare
         v_amount number;
         alert_id      ALERT := Find_Alert('amount_from');
         alert_id1 ALERT := Find_Alert('amount_to');
         dummy_var NUMBER;
    begin
         select max(ssibe_amount_to) into v_amount from ssibe_orderappr_tab where
              ssibe_account_number = :ssibe_orderappr.ssibe_account_number;
              if :ssibe_orderappr.ssibe_amount_from <= v_amount
              then
                   Set_Alert_Property(alert_id, ALERT_MESSAGE_TEXT, 'Amount_From should be greater than '|| v_amount);
                   dummy_var := Show_Alert(alert_id);
              else
                   IF (:SSIBE_ORDERAPPR.SSIBE_AMOUNT_TO <= :SSIBE_ORDERAPPR.SSIBE_AMOUNT_FROM)
                   THEN
                   dummy_var := Show_Alert(alert_id1);
                   end if;
              end if;
    end;

  • Pre-insert trigger is not firing after post built-in

    Hi,
    I have a 10g form in which Post built-in is used in When-button-pressed Trigger. After the post command I am checking some condition,by using the same record which I have posted.But it is not working.
    I have also put the message in the pre-insert trigger but the message is not displaying.
    But the same form iis working fine in form 6i, as I have migrated the forms from form 6i to 10g.

    Yes, In that block there are other items also. I have made the required property no for all the items.
    what exactly we have is
    (if x=y then)on some condition check
    POST;
    After that, form have a select statement in which it is selecting the same row which is being posted above.
    if the select statement gives count of row zero
    raise form_trigger_failure is fired.
    and in the pre-insert trigger form is assigning a value to a block item.

  • Unable to insert the record to table using pre-insert & pre-update trigger

    Hi All,
    I have tried to insert and update the backend table using the pre-update and pre-insert triggers. But its not working for me. Please find below the code which i have used in the triggers.
    Pre-insert trigger:
    DECLARE
    v_cust_num_cnt NUMBER;
    BEGIN
              SELECT      COUNT(customer_number)
              INTO      v_cust_num_cnt
              FROM cmw_bc_mobile_number
              WHERE substr(customer_number,1,15)=substr(:BLOCKNAME.CUSTOMER_NUMBER,1,15);
              IF      v_cust_num_cnt = 0 THEN
                        INSERT INTO cmw_bc_mobile_number (CUSTOMER_NUMBER
                                                                                                   ,MOBILE_NUMBER
    ,CREATION_DATE
    VALUES
    (substr(:BLOCKNAME.CUSTOMER_NUMBER,1,15)
    ,:BLOCKNAME.MOBILE_NUMBER
    ,SYSDATE
    COMMIT;                                                                                                    
    END IF;          
    END;
    PRE_UPDATE TRIGGER:
    BEGIN
              IF :SYSTEM.RECORD_STATUS = 'CHANGED' THEN
              UPDATE apps.cmw_bc_mobile_number
         SET mobile_number = :BLOCKNAME.MOBILE_NUMBER,
         creation_date = SYSDATE
              WHERE customer_number=substr(:BLOCKNAME.CUSTOMER_NUMBER,1,15);
              COMMIT;
         END IF;
    EXCEPTION
              WHEN OTHERS THEN
                   NULL;     
    END;
    Please let someone assist in gettting it resolved.
    Regards,
    Raj.

    Just use MESSAGE (we don't know what fnd_message is, that is some custom code):
    message('v_cust_num_cnt='||v_cust_num_cnt);
    IF v_cust_num_cnt = 0 THEN
      message('Now inserting...');
      INSERT INTO cmw_bc_mobile_number (CUSTOMER_NUMBER... 
    else
      message('Nothing to insert');
    end if;

  • What is a pre query and in what circumstances it is used?

    Please explain what is a pre query in BW mean,and when is it used...thank you for your answers...

    Hi,
    There is also a possibility to feed a variable with replacement path with a query result and use this variable for restriction in another query:
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/579b3c494d8e15e10000000a114084/frameset.htm
    Best regards,
    Eugene

  • LEFT OUTER JOIN, Problem in POST-QUERY TRIGGER

    Hi,
    Please guide for the following
    I wrote below query in POST-QUERY Trigger of a TABULAR DATA BLOCK, having only one text item, called INVENTORY_ITEM
    select c.cat||' '||s.subcat||' '||l1.lvl1 ITEM INTO :DATABLOCK.INVENTORY_ITEM
    from itemcat c
    LEFT OUTER JOIN itemsubcat s on (c.catid = s.catid)
    LEFT OUTER JOIN lvl1 l1 on (s.subcatid = l1.subcatid)
    When I compile the module an error is generated
    *" Encountered the symbol 'LEFT' when expecting one of the following ,; for group having intersect minus order start union where connect ".*
    Above query is working fine in ORACLE SQL DEVELOPER .
    Any solution please.
    Regards,

    Difference

Maybe you are looking for