Enter query clear block
Hi,
Is it possible to enter the ENTER_QUERY mode without the implicit CLEAR_BLOCK ?
In other words is it possible to keep some data in some text field when we change to enter_query mode so that the user wouldn't need to enter the criteria everytime.
Thank you...
How about doing something like this in the key-entqry trigger?
declare
x varchar2(100);
begin
x := :block.item;
enter_query;
:block.item := x;
end;
Similar Messages
-
Clearing items upon hitting "Enter Query"
I have a detail block with 5 fields in each record. There are five non-database items on the form to display the current record in this detail block. Upon moving the cursor to a different record in the block, the new record's fields are displayed in these non-database items.
What is required is that upon hitting "enter query" on this detail block, these non-database item fields become cleared also.
Any thoughts would be appreciated.
Ammarthis approach is not recommended as I think that these built-ins cause problems on some platforms (the go_block built-in)Never heard of such problems. If thisis so, then no forms-application would run on that platform, for forms also uses GO_BLOCK for master-details-relationships.
The easiest way to achieve your functionality (without any coding) would be to do the following:
Delete your second datablock with the non-database-items.
Duplicate the items in the databaseblock you want to show in a detail-area.
Set No. of tems displayed to 1 on these items.
Move the items in the layout to the desired position.
Set the poperty "Synchronize with" for each item so that it matches the item it should get the value from.
Thats all. -
Display Item cleared when using 'Enter-Query'
Hi all,
i am going to develop a multilanguage application with very
special heading texts using display items for these headings.
BUT- if I press EnterQuery, they are cleared also.
How can I restrict cleanup of these display items used as
headings ?
I was looking in the properties, but no idea.
Thanks for help,
udoI'm showing how to do it when switching modes. I'm
not suggesting this is the best way to do a query.We need to look at this in the context of the original probelm in the thread linked to above. For most cases the when-timer-expired etc is just a huge detour around using the pre-query trigger but it's an interesting approach to the specific problem in the earlier thread. The OP there wanted to be able to type '>5000' into a number field in a non-database block, which we can do in a database block in enter-query mode, and use it as a query parameter in the database block. Perhaps if we enter this into a character field in the non-database block and populate the numeric field in the database block whilst in enter-query mode then we can do searches on ranges of data? Unfortunately it doesn't work - you get an ora-06502 error just like you do when using the pre-query trigger. For the situation in the original thread you would have to use a 'default where'. -
Problems with LOV+Clear Form +Enter Query
Hi Friends,
I have a Master Detail Form which is only query form my
requirement is as soon as the user presses F9(List of Values) on
Employee Number then 3 activities should be done.
1. Clear Form
2. Enter Query
3. Displaying List of Values
Any ideas please let me know
Thanks in Advance
Rao Guduru
nullHi Rao,
Here is solution for your problem.
in KEY-LISTVAL trigger of the Employee number filed write
following code
Begin
Do_Key('clear_form');
Do_Key('Enter_Query');
End;
in the WHEN-NEW-ITEM-INSTANCE Trigger of Employee number filed
BEGIN
If (:system.Mode = 'ENTER-QUERY') Then
list_values;
End If;
END;
If the Employee number is not the first navigable item in that
block , then in the first navigable item's WHEN-NEW-ITEM-
INSTANCE trigger write the following code
If (:system.Mode = 'ENTER-QUERY') Then
go_item('EMP1.EMPNO');
End If;
Let me know whether it solved your problem or not.
Regards
Surendra.
Rao Guduru (guest) wrote:
: Hi Friends,
: I have a Master Detail Form which is only query form my
: requirement is as soon as the user presses F9(List of Values)
on
: Employee Number then 3 activities should be done.
: 1. Clear Form
: 2. Enter Query
: 3. Displaying List of Values
: Any ideas please let me know
: Thanks in Advance
: Rao Guduru
null -
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 -
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 -
Block based on view ,enter query
Hi,
I have a block based on a view.One column of the view is
substr(f_gt_marks(tcs23.idu_nr_dossr),1,128).
When I enter 'PAPER%' for the above column and press execute query i get:
PAPER
PAPER1PAPER2
When the form is in enter query mode and when I enter 'PAPER' and press execute query I get FRM 40301 query caused no rows to be retrieved.
I want only paper to be retrieved.The form works only if I append % to the search criteria.
Can you please advise me.
I am working on forms 9i.
Thanks and RegardsTry to debug for form, and get the SQL Statement that is being executed, see if it's doing anything out of the ordinary and try to run in SQL*Plus and see the result.
I think your SQL is trying use the SUBSTR function on the value you enter in ENTER-QUERY mode.
SUBSTR(f_gt_marks('PAPER'),1,128)Anyway, best for you to see what the form's SQL statement is when issuing the query.
Tony -
Enter Query Mode with Block Based on Stored Procedure
How can I get the ENTER QUERY mode to work when the data block is based on a stored procedure?
Thank you for your review.
Because the package is long, I stripped most of it out, but left the basics. After I stripped out the code, I ran the new code under a new user. Under the new user I built I new form, tested it, and I still cannot use the ENTER QUERY mode to retrieve the correct record. Query always returns the first record. I have included table structure and 3 test records.
CREATE TABLE FR_Charge
( FR_Charge_ID NUMBER(8),
FR_Charge_Code VARCHAR2(8) CONSTRAINT FR_Charge_Code_nn NOT NULL,
FR_Charge_Code_DESC VARCHAR2(35),
FR_Charge_Code_CMT VARCHAR2(50),
CONSTRAINT FR_Charge_pk PRIMARY KEY (FR_Charge_ID)
CREATE SEQUENCE FR_Charge_SEQ;
INSERT INTO FR_Charge
VALUES(FR_Charge_SEQ.NEXTVAL,'0.0WS','E-Mail Notification', NULL);
INSERT INTO FR_Charge
VALUES(FR_Charge_SEQ.NEXTVAL,'0.1', 'Shipping', NULL);
INSERT INTO FR_Charge
VALUES(FR_Charge_SEQ.NEXTVAL,'0.12', 'Shipping Charges', NULL);
--Package follows
CREATE OR REPLACE PACKAGE DataCard_Pkg
AUTHID CURRENT_USER
AS
-- The following records defines the data structure needed by the FR_Card.
TYPE FR_Charge_Record IS RECORD
( FR_Charge_ID FR_Charge.FR_Charge_ID%TYPE,
FR_Charge_Code FR_Charge.FR_Charge_Code%TYPE,
FR_Charge_Code_DESC FR_Charge.FR_Charge_Code_DESC%TYPE,
FR_Charge_Code_CMT FR_Charge.FR_Charge_Code_CMT%TYPE
-- REF CURSOR definition used by the query procedure.
TYPE FR_Charge_REFCUR IS REF CURSOR RETURN FR_Charge_Record;
-- INDEX OF TABLES used for the DML Operation procedures.
TYPE FR_Charge_Table IS TABLE OF FR_Charge_Record
INDEX BY BINARY_INTEGER;
--Define Procedure Specifications
PROCEDURE FR_Charge_Query (DMLResultSet IN OUT FR_Charge_REFCUR);
PROCEDURE FR_Charge_Lock (DMLResultSet IN OUT FR_Charge_Table);
PROCEDURE FR_Charge_Insert (DMLResultSet IN OUT FR_Charge_Table);
PROCEDURE FR_Charge_Update (DMLResultSet IN OUT FR_Charge_Table);
PROCEDURE FR_Charge_Delete (DMLResultSet IN OUT FR_Charge_Table);
END DataCard_Pkg;
CREATE OR REPLACE PACKAGE BODY DataCard_Pkg
AS
PROCEDURE FR_Charge_Query (DMLResultSet IN OUT FR_Charge_REFCUR)
IS
BEGIN
OPEN DMLResultSet FOR
SELECT FR_CHARGE.FR_Charge_ID,
FR_CHARGE.FR_Charge_Code,
FR_CHARGE.FR_Charge_Code_DESC,
FR_CHARGE.FR_Charge_Code_CMT
FROM FR_Charge;
END FR_Charge_Query;
PROCEDURE FR_Charge_Lock (DMLResultSet IN OUT FR_Charge_Table)
AS
x_index NUMBER := 1;
x_count NUMBER := DMLResultSet.COUNT;
x_dummy_var VARCHAR2(1);
BEGIN
FOR x_index IN 1..x_count LOOP
SELECT 'X'
INTO x_dummy_var
FROM FR_Charge
WHERE FR_Charge_ID = DMLResultSet(x_index).FR_Charge_ID
FOR UPDATE NOWAIT;
END LOOP;
END FR_Charge_Lock;
PROCEDURE FR_Charge_Insert (DMLResultSet IN OUT FR_Charge_Table)
AS
x_index NUMBER := 1;
x_count NUMBER := DMLResultSet.COUNT;
BEGIN
FOR x_index IN 1..x_count LOOP
INSERT INTO FR_Charge
( FR_Charge_ID,
FR_Charge_Code,
FR_Charge_Code_DESC,
FR_Charge_Code_CMT
VALUES
( FR_Charge_SEQ.NEXTVAL,
UPPER(DMLResultSet(x_index).FR_Charge_Code),
DMLResultSet(x_index).FR_Charge_Code_DESC,
DMLResultSet(x_index).FR_Charge_Code_CMT
END LOOP;
END FR_Charge_Insert;
PROCEDURE FR_Charge_Update (DMLResultSet IN OUT FR_Charge_Table)
AS
x_index NUMBER := 1;
x_count NUMBER := DMLResultSet.Count;
BEGIN
FOR x_index IN 1..x_count LOOP
UPDATE FR_Charge
SET FR_Charge_Code = UPPER(DMLResultSet(x_index).FR_Charge_Code),
FR_Charge_Code_DESC = DMLResultSet(x_index).FR_Charge_Code_DESC,
FR_Charge_Code_CMT = DMLResultSet(x_index).FR_Charge_Code_CMT
WHERE FR_Charge_ID = DMLResultSet(x_index).FR_Charge_ID;
END LOOP;
END FR_Charge_Update;
PROCEDURE FR_Charge_Delete (DMLResultSet IN OUT FR_Charge_Table)
AS
x_index NUMBER := 1;
x_count NUMBER := DMLResultSet.Count;
BEGIN
FOR x_index IN 1..x_count LOOP
DELETE FROM FR_Charge
WHERE FR_Charge_ID = DMLResultSet(x_index).FR_Charge_ID;
END LOOP;
END FR_Charge_Delete;
END DataCard_Pkg; -
Exiting from a Block that is in Enter-Query Mode
hello,
can anybody show me how to cancel the query of block "x" and go to block "y", when block "x" is in enter-query mode, and the user navigates using the mouse to a field in block "y".
thanksHi, Samir
Please create the following WHEN-MOUSE-CLICK trigger in your second block.
If you don't want to activate enter-query mode when you click on the second block, simply remove the "enter-query;" line below.
if :system.mode = 'ENTER-QUERY' then
declare
oldmsg varchar2(2);
begin
oldmsg := :system.message_level;
:system.message_level := '10';
exit_form;
:system.message_level := oldmsg;
end;
next_block;
enter_query;
end if;When the mode is ENTER-QUERY, some built-in routines change their behaviour. EXIT_FORM; is used to cancel the enter-query mode.
Hope this helps,
Pedro. -
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 -
Pressing enter query function key more than once displays past search key
At present, in Oracle Forms this is what's happening:
1. User presses entery-query (F7)
2. User searches for employee name smith. Plases %Smith% in the employee name field.
3. User presses execute-query (F8)
4. All employee names with "Smith" is displayed.
5. User presses enter-query again (F7). Screen is cleared.
6. User presses enter-query for the 2nd time (F7). %Smith% appears on the employee name field.
The problem is the user do not want %Smith% to appear the second time they press enter-query. If you guys have any idea or have experienced this, please let me know.
Thanks.You are experiencing the default query last criteria functionality. When you execute the ENTER_QUERY built-in while in enter query mode, it will show the last query criteria. To override this, you could create a KEY-ENTQRY trigger on your block and give it code similar to:
IF :SYSTEM.MODE != 'ENTER-QUERY' THEN
ENTER_QUERY;
END IF; -
I'm interested in starting a discussion on the restrictions of
Enter-Query Mode, principally, why can you not navigate to a
query only block whilst in this form mode? I have successfully
implemented an full Query functionality without using the
default forms behaviour, and wonder if there are any
disadvantages that I have overlooked.
nullKannan T. (guest) wrote:
: Hi Steve,
: Can you make your quest/requirement more clear and detailed,
so
: that I will be able to discuss with you for each specific
: points.
: With best regards,
: Kannan
Hi there,
Its quite involved, I have some documentation that goes some way
to describing the problem/solution, but briefly I find that when
in 'Enter-Query' mode (system.mode = 'ENTER-QUERY') there are
two restrictions
1) You cannot navigate to another block. This is useful in a
number of cases, like if you want to implement a more powerful
List of Values facility, or provide the user a seperate screen
to build up complex query criteria
2) If you write a trigger that uses 'enter_query' built in,
processing stops at this point. The standard workaround for this
is to start a timer before the call to 'enter_query', and when
the timer expires it performs the processing you want to do
after 'enter_query'.
So, I decided to rewrite the default forms enter/execute query
processing (which was pretty straightforward), so my forms never
go into 'Enter-Query' mode. What I am interested in is if there
is anything that using the default forms processing gives, that
I may have missed!
Regards Steve
null -
hii i have two blocks control and data block
whenever i am in enter query mode
i want all the tabluar form (data balock ) records to be cleared
plzz help me
mandarHi,
before issuing the command 'enter_quey' , use the command 'clear_form'.
Simon -
When new record instance trigger at Fire Enter Query event is throwing erro
HI
I have the following code on when new record instance which is set to fire at Enter Query Mode
IF :SYSTEM.BLOCK_STATUS <> 'QUERY' THEN
rec_num:=Get_Block_Property( 'MASTER', CURRENT_RECORD);
GO_ITEM('DETAIL.ITEM_NAME');
CLEAR_BLOCK(NO_VALIDATE);
GO_BLOCK('MASTER');
GO_RECORD(rec_num);
END IF;
But this is throwing error when I am querying record on master block.
It says 'Function not allowed.Please see a list of keys or functions'
Thanks in advance.hi,
GO_ITEM( ) procedure is resctricted procedure.It can not be used in Enter Query mode to navigate to an item in a different block.
You can check wheter rest of the procedures are Enter Query Mode -Yes/No thourgh forms help window.
Message was edited by:
Manish.Sharma -
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
Maybe you are looking for
-
Is there a way to place the Dock on the bottom of a secondary monitor?
I use my iMac as primary monitor and a secondary display on the right. Is there a way to place the dock on the bottom of the secondary monitor(in a way that the display arrangment actually match the monitor position on my desk)? I want something like
-
Installation and then Configuration of Plain J2se Adapter Engine
Hi All, Actually we want to use JMS Adapter for that we had installed Plain J2SE Adapter Engine but after installing and following the initial steps of Adapter.pdf we are not able to access the Adapter Engine through URL.We are using the URL http://<
-
How to define our line size in module pool?
Dear Friends, I have requirment to increse the length or size of a list which is calling itself from a module pool using leave list processing. Please suggest me the way? Regards Ricky
-
Dynamics CRM 2013 : Offline capability with Outlook Plugin
Dear all, I have a scenario where I have to use the Offline Capability feature of Dynamics CRM 2013 with CRM Client for Outlook plugins. Can I use the offline capability mode if all my users are using gmail as their email? If so, can someone guide me
-
Delete a template in pages also how to delete a page if you have more than one
Hi how do you delete a template from pages,also if you have more than one page and you only want one how do you delete the other page.