Prevent interpretation of special characters in enter-query mode
My problem goes as follows:
- forms version: Forms [32 Bit] Version 6.0.8.10.3 (Production)
- non-database item block.X, char
- block.X is filled in post-query trigger. The post-query logic cannot be integrated in a view because it uses procedures, and usage of a pipelined function + view is currently not allowed due to "internal restrictions". Put simply: all logic to fill the field must remain in the post-query trigger
- user wants the field to be queryable. This is achieved by storing the entered criterium in a variable in the pre-query trigger, and using it in the post-query trigger to exclude records. E.g.
pre-query ==> help_block.query_X := block.X;
post-query ==> if help_block.query_X is not null and block.X is null or not block.X like help_block.query then raise form_trigger_failure; end if;
- this works fine for "regular" search strings. However:
- whenever the search string starts with <, <=, >, >=, !, forms seems to interpret the leading characters before doing anything else. During pre-query, block.X is null, and as soon as I use it in pl/sql, I get FRM-40831: Truncation Occured: value too long for field. E.g.
user puts the following in block.X ==> '<X', so he wants to search for records with value '<X' (text; not 'smaller than ...')
pre-query => msg.show(block.X) ==> appears to be empty/null, but right after the message, I get FRM-40831 Truncation Occured: value too long for field ...
This only happens if < is the first non-space character in the search string.
Does anyone know of a way to prevent oracle from interpreting the <, <=, ... characters entered in enter-query mode?
I'm sorry for not making myself clear; I'll give it another go:
The problem is that, if I enter '<abc' in a form field in enter-query mode (so during creation of the "example record"), forms immediately interprets the < as 'smaller than' and does some obscure things with it (my guess: converting to a where clause, but since I'm using a non db field, this actually does nothing), and finishes by erasing the field contents (in the example record). In the pre-query trigger, I can no longer get the '<abc' and store it. I want one of the following:
- prevent forms from interpreting the '<' in front (same thing happens for !=, <=, >=, =, ...)
or
- capture the entered string ('<abc') before forms reacts to the '<' in front
Edited by: [email protected] on Feb 17, 2009 12:30 PM
Similar Messages
-
Suppress the enter-query mode when no-data-found after execute a query.
HI,
Greetings of the day, Can any one suggest me that how to Suppress the enter-query mode when no-data-found after execute a query on the form by a button.
whenever i execute query on form and result is no data found then form :system.mode is still in enter-query mode.
i want that if result is no data found then form comes back it initial state.
i will thank full of him who will help me..
Thanks in Advance..Put this in your Key-ExeQry trigger:Execute_Query;
If Get_block_property(:System.current_block,query_hits)=0 then
Exit_form; --this cancels the Enter-Query mode; Does not exit the form.
End if;You may want to trap and prevent the "FRM-40353: Query cancelled" message, and change the "FRM-40301: Query caused no records to be retrieved. Re-Enter" message. To do that, you need an On-Message form-level trigger:Declare
Msg_Code Number := MESSAGE_CODE;
MSG Varchar2(150) := SUBSTR(' '||MESSAGE_TYPE||'-'
||TO_CHAR(Msg_Code)||': '||MESSAGE_TEXT,1,150);
BEGIN
If Msg_Code=40301 then
-- 40301: Query caused no records to be retrieved. Re-Enter
Message(' NO RECORDS FOUND',No_acknowledge);
Elsif Msg_Code=40353 then -- Query cancelled.
null;
Else
MESSAGE(MSG,NO_ACKNOWLEDGE);
End if;
End; -
[Solved] Problem with LOV and 'enter query' mode
Hi all,
I'm kind of new to Forms and I'm having some problems that I'm not being able to resolve. I already search it on the net, but nothing relevant came up. If anyone could help me I appreciated it.
In my form I have some fields, and in one of them I have a LOV, and almost everything works fine. I inserted data, changed it, deleted it and all it's ok.
But when I change to 'enter query' mode, when I try to search for data on the LOV field it ignores what I write.
That is, for it, it's the same if I make F11 -> write 'aaaa' -> ctrl + F11 or if I make F11 -> '%' -> ctrl + F11.
It behaves the same way, shows me all the records.
Probably I'm missing something basic, but I'm not getting it...
Thanks,
Anawhen you create a lov by wizard the lov and record group have always the same name..
the problem is that the item is NOT based in the tabe.
what kind of query do you execute if you choose something from a love which is not based on the db?
i mean, this item has no influence on the query of the table, so whatever you choose it's like a "select * from table"
i hope i was clear -
FRM-41361 Cannot navigate out of current form in Enter-Query Mode
Hi All,
I am getting the FRM-41361 error in the bottom message area when opening a form from the function navigator. The issue does not exist when opening the form from the application homepage. The form is loaded in enter-query mode, and the enter_query command is in the WHEN-NEW-FORM-INSTANCE trigger. I have checked all triggers that fire after this point for any type of navigation but do not see any. The interesting thing is, if I put a fnd_message.set_string and fnd_message.show just before the enter_query call to debug, the issue goes away entirely.
Is it possible there are security triggers firing after the form is loaded into enter-query mode that could be causing this and that the fnd_message calls are indeed buying time for those triggers to complete before the enter_query call?
Any help/advice is appreciated. Thanks!
DanYes, when I looked through the triggers I made sure to look for go_block and go_item calls as well as any calls to leave the form.
-
Change background color in enter-query mode
Hi everyone,
I am trying to Change background color in enter-query mode in forms10g. I am using this
Set_Item_property('org.branch_code', BACKGROUND_COLOR, 'Green' );
ThanksThis is the code that allows to colorise items in enter_query mode, then de-colorize them after execute_query.
Assume that you have created a VA_QUERY visual atribute in your module.
-- Colorise in enter-query mode --
PROCEDURE Start_query IS
LC$Block Varchar2(30) := Name_in('system.trigger_block') ;
LC$item varchar2(60);
LC$itemdeb varchar2(60);
LN$len pls_integer ;
BEGIN
lc$itemdeb := get_block_property(LC$BLOCK, FIRST_ITEM) ;
lc$item := LC$BLOCK || '.' || lc$itemdeb ;
while lc$itemdeb is not null Loop
IF GET_ITEM_PROPERTY(LC$Item , ITEM_TYPE) NOT IN ('BUTTON','RADIO GROUP','DISPLAY ITEM') Then
IF GET_ITEM_PROPERTY(LC$Item , QUERYABLE ) = 'TRUE' Then
set_item_property(LC$item, CURRENT_RECORD_ATTRIBUTE, 'VA_QUERY');
End if ;
End if ;
lc$itemdeb := get_item_property( lc$item, NEXT_NAVIGATION_ITEM );
lc$item := LC$BLOCK || '.' || lc$itemdeb ;
end loop ;
END;
-- Unclororize after execute_query --
PROCEDURE End_query IS
LC$Block Varchar2(30) := Name_in('system.trigger_block') ;
LC$item varchar2(60);
LC$itemdeb varchar2(60);
LN$len pls_integer ;
LN$Multi pls_integer ;
BEGIN
lc$itemdeb := get_block_property(LC$BLOCK, FIRST_ITEM) ;
lc$item := LC$BLOCK || '.' || lc$itemdeb ;
LN$Multi := GET_BLOCK_PROPERTY(LC$Block , RECORDS_DISPLAYED ) ;
while lc$itemdeb is not null Loop
IF GET_ITEM_PROPERTY(LC$Item , ITEM_TYPE) NOT IN ('BUTTON','RADIO GROUP','DISPLAY ITEM') Then
IF GET_ITEM_PROPERTY(LC$Item , QUERYABLE ) = 'TRUE' Then
If LN$Multi > 1 Then
set_item_property(LC$item, CURRENT_RECORD_ATTRIBUTE, 'VA_CURRENT_RECORD');
Else
set_item_property(LC$item, CURRENT_RECORD_ATTRIBUTE, '');
End if ;
End if ;
End if ;
lc$itemdeb := get_item_property( lc$item, NEXT_NAVIGATION_ITEM );
lc$item := LC$BLOCK || '.' || lc$itemdeb ;
end loop ;
END;Francois -
How to display LOV on web in ENTER-QUERY mode with form or block query only.
Hello all
How can I display lov automatic on the web in from enter-query
mode in form or block query only mode.
thankxIf I understand correctly your explanation, your called form
fails to activate the LOV in enter-query mode when it is deployed
and test on the browser.
So lets proceeed like this, to make it work in all environments,
let us programetically activate the LOV.
HOW?
In the called form, write in the WHEN-NEW-ITEM-INSTANCE TRIGGER
at block level (if have more than one LOV)
IF :SYSTEM.MODE = 'ENTER-QUERY' THEN
IF get_item_property(:system.cursor_item,lov_name) IN ('YOUR
LOV1', 'LOV2' etc) THEN
IF SHOW_LOV(get_item_property(:system.cursor_item,lov_name))
THEN
NULL;
END IF;
END IF;
END IF;
The above code maybe tweak to suite your need and condition.
This way, we explicitly make the LOV appear in ENTER-QUERY mode
whenever the user clicks on an item with an attached LOV.
Hope this helps.
Mohammed R.Qurashi -
Initial Value in Enter Query Mode
Hi Everyone,
If you ever need to set a "visual" default (or initial) value for an item in Enter-Query mode, here is one solution to accomplish this:
Create a WHEN-NEW-ITEM-INSTANCE trigger at the block level where the item is located. Make sure it can fire in Enter-Query mode.
WHEN-NEW-ITEM-INSTANCE
If :system.mode = 'ENTER-QUERY' AND :system.cursor_item = <YourItemName> AND <YourItemName> IS NULL Then
<YourItemName> := <TheInitialValue>;
End If;You may wish to play with the "Keep Cursor Position" property of the item should you want the cursor to go back to the item position it was when the item was left.It seems that your solution described solves my problem expressed 2 months ago....
I'll try it out....
Thanks......
Sim -
Hotkey "Create Record" while the form is in enter-query-mode
pressing the hotkey F6 for create-record while the block is in enter-query-mode results in the error - message:
Function key not allowed. Press Ctrl+F1 for list of valid keys.
The error-occurs although I created a trigger KEY-CREREC. The trigger isn't executed
In older Forms versions the behaviour was different. Is there a way to let the form work like in the old versions?thnx for reply.Problem not solved.
i m trying to assign the value of text item to a variable in pre-query trigger. i m able to get the value into variable when the string in the text item does not startwith <,>,=. but when the string starts with any one of the operator (<,>,=) it gives error.
lenth of variable is 1000 charaters, and text item's max leanth is just 4 charactres. -
Changing visual attribute in Enter Query mode
Hello, I want to change visual attribute of all items in the first record when the user presses button for Enter_Query. I want that the user sees that the form is in enter query mode and it "waits" for the input of criteria. My code (copied from Help and modified) in trigger WHEN_BUTTON_PRESSED:
DECLARE
cur_itm VARCHAR2(80);
cur_block VARCHAR2(80);
BEGIN
ENTER_QUERY;
cur_block := :System.Cursor_Block;
cur_itm := Get_Block_Property( cur_block, FIRST_ITEM );
WHILE ( cur_itm IS NOT NULL ) LOOP
cur_itm := cur_block||'.'||cur_itm;
Set_Item_Instance_Property( cur_itm, CURRENT_RECORD, VISUAL_ATTRIBUTE,'yellow');
cur_itm := Get_Item_Property( cur_itm, NEXTITEM );
END LOOP;
END;
where yellow is the name of my visual attribute.
The problem is that I need to press the button TWICE to color the record.
Can anybody help me with this problem?
Natasa(Wrong forum).
The problem is that enter_query stops executing your procedure until
another action ist started by the user.
You must create a short-time timer before issuing enter_query and set
your colour scheme in the when-timer-expired-trigger. -
Blocking some fields from entering in summary block in enter query mode
Hi ,
I have a data block where in some fileds have to be dynamically allowed to enter and some are not based on
a particular condition. The problem is whenever the forms enters enter query mode, all the fileds in the block are updateble. Even maually I tried to set/unset the property in forms using set_item_property, but the enter query mode was trying to overiride it and making updateble.
Please suggest a solution for this.
Thanks in advance.
Thanks,
LohithTry the below code
IF :SYSTEM.MODE='ENTER-QUERY' THEN
SET_BLOCK_PROPERTY('BLOCKNAME',INSERT_ALLOWED,PROPERTY_TRUE);
SET_BLOCK_PROPERTY('BLOCKNAME',UPDATE_ALLOWED,PROPERTY_TRUE);
SET_BLOCK_PROPERTY('BLOCKNAME',DELETE_ALLOWED,PROPERTY_TRUE);
you can set the item here too by using the below code
SET_ITEM_PROPERTY('BLOCK.ITEM_NAME',INSERT_ALLOWED,PROPERTY_TRUE);
SET_ITEM_PROPERTY('BLOCK.ITEM_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);Regards
Moazam
Edited by: Moazam Shareef on Oct 6, 2010 6:10 AM -
List of triggers which fire in enter query mode?
hello experts , please tell me list of forms trigger which fire in enter query mode?
thanks
yashI don't believe there is a published list, but if you check the Forms help system the description of each trigger will tell you if it fires in "Enter Query" mode. Unfortunately, you will need to check each trigger in the help system and build your own list.
Craig... -
FRM-40200 and FRM-40501 in Enter-Query-Mode
Some strange behaviour in Enter-Query-Mode:
Although the help states
About Designing Forms for Querying+
+.. To make a "query-only" block, set Query Allowed to Yes and Delete Allowed, Insert Allowed, and Update Allowed to No. ..+
I get FRM-40200: Field is protected against update.
System.Mode says, we are currently in ENTER-QUERY.
Setting insert- and update-allowed to TRUE, I get
FRM-40501: ORACLE error: unable to reserve record for update or delete.
The entered character flashes and is erased immediately.
Any ideas?
Forms 10gR2
Items are base table, all transactional properties aund query_allowed are true, query_length is ok.
2 Things that happen before the initiation of the enter-query-mode:
. data-source is changed to another view; column names are ok.
. all block-items are disabled and not navigable at start-up of form and re-enabled and made navigable before entering the block.
The values of block and item-properties mentioned above are take at WHEN-NEW-ITEM-INSTANCE and no further trigger fire.I think you are not meaning just the KEY-ENTQRY-Trigger, that to easy
IF INSTR(:SYSTEM.TRIGGER_BLOCK, '_DETAIL') = 0
+ AND :SYSTEM.TRIGGER_BLOCK NOT IN ('VZG_KOPF','KONTROLL','BUTTONS','TEMP')+
THEN
+ ENTER_QUERY;+
END IF;
.. but the rest is a lil bit, let's call it bulky; including pll and db-packageges.
I hoped to get a clue, if somebody has a similar expeience, in what direction to search. It's strange.
And, as I noticed today, it's not a problem of all forms of the app. Not even of all the forms called from the same "environment" (same globals, same menu-form from which they are opened). To me it looks like Enter-Query does not work in the forms where I switch the block-data-source from a view to a globally temporary table. That (this switching) is not a new feature and Enter-Query worked in the past. Althoug we had some changes in the temp tables in the last weeks there are no problems in querying the data in the forms. Recompilation of pll and fmb, no improvement. And either Enter-Query woks in a form or it does not. -
Disabling LOVs when not in enter query mode
hello. I currently have a form in which a master block populates a detail block. when the master is populated the cursor automatically goes to the detail block and sets it to enter query mode (due to the face that there are multiple details but the user may only view one at a time). To select the appropriate detail the user may select the detail from a LOV which is activated by clicking a button. once the detail has been selected and the query executed there is no real need for the LOV as the user can now edit/delete the detail. Also when adding a new detail there would be no need for the LOV as the presence of it would only confuse users. So basically the only time the LOV is usefull is during query mode to query the detail the user wants to edit/delete.
In your experiance how would you acheive this result?
Any help would be greatly appreciated.
Thankswell you can write a trigger Key-listval on your LOV item to check the mode of the block
if :system.mode = 'ENTER-QUERY' then
list_values;
end if;LOV will only display in enter query mode only -
Change Value of Veriables in Enter-Query mode
hi all
I have made a search utility on a table, there is reqirement that in the enter-query mode the user can enter any combination of character, in simple words there is requirement of %% at begining and at end of desired search field.
as :system.last_query gives the value like
SELECT ROWID,SEQ_NUM,TAG
FROM sequel1.sequelsql WHERE ( UPPER(TAG) LIKE :1 and (TAG LIKE :2 or TAG LIKE :3)) order by TAG
how to pad % sign in the veriables :1,:2 and :3 as need to search
tag like ('%ASSESSMENT%')
thanks in advanceSELECT ROWID,SEQ_NUM,TAG
FROM sequel1.sequelsql WHERE ( UPPER(TAG) LIKE :1 and (TAG LIKE :2 or TAG LIKE :3)) order by TAG
1.
have you tried to handle the items contents in a PRE-QUERY trigger ?
If blk.item IS NOT NULL Then
:blk.item := '%' || :blk.item || '%' ;
End if ;2.
You could change the WHERE clause (or the ONETIME_WHERE)
in your KEY-EXEQRY trigger:
Declare
req Varchar2(512) ;
Begin
req := '( UPPER(TAG) LIKE %' || :blk.item1 ||
'% and (TAG LIKE %' || :blk.item1 || '% or TAG LIKE %' || :blk.item3 ||'%)) order by TAG ;
Set_Block_Property( 'blk', DEFAULT_WHERE, req ) ;
Execute_Query ;
End ;Francois -
Open multiple forms, few in Enter-Query mode
Hi All,
I want to open multiple forms from a form using open_form built-in. If user clicks on different items of the parent form different child forms are invoked.
But if one child form is opened in Enter-Query mode (I have 'enter_query;' in its when-new-form-instance) it does not allow to put focus back on parent form and invoke other forms until I execute_query in child form or close the child form.
Waiting for your replies. Thanks in advance.
Regards
MonaHi Friends,
Has anybody ever faced this problem. Please reply.
Regards
Maybe you are looking for
-
Can we set "IN PROCESSu201D status for multiple users for a single workitem?
Hi, As per my client current scenario every work item will be sent to 3 useru2019s (One is the supervisor of the other two users). If any one of the user executes the work item it will automatically call a Ztransaction and displays the screen. When t
-
iTunes 11 has converted some songs to Quicktime movie format. How can I convert them back to MPEGs?
-
Frankly I'm new to Element. I have v 8.0 (sat on my floor a while) and just loaded it. I'm trying to pull in video files that I took with my Canon FS300, but when I do, they appear in what I believe is 4:3 versus the 16:9 and the images are narrow
-
Can i put a phone icon (like Favorites) on main menu?
Favorites is my most frequent use of my iphone. I would like that icon on the main menu without having to choose Phone first. Is that possible?
-
CS6 Project With H.264 Video Wont Open in Premiere CC
I wonder if some one can explain to me that on the same exact system where both CS6 & now CC live, i cannot open Certain .MOV files, i believe they are H.264, in Premiere Pro CC where they Open just fine in the CS6 Prekiere Pro? Has this happened to