Using from clause property
i have written a query using joins inorder to get data from various tables.i have used FROM CLAUSE QUERY property and placed the quuery in the property pallate.now when Find button is pressed the data is not getting populated..please guide me in getting the data.
Hi ,
After creating your Data Block which is based on a FROM Query , start insearting the items into that block and map the Fields that would be returned from the Select statement to the items on your Data Block , thats all you need to do ,
Regards,
Similar Messages
-
How to use From clause as a block datasources
Hi,
I want to know how to use from clause as a block datasource.
Could anyone give me an example to do that? I couldn't find it
in the help file.
I sincerely ask someone help me.
Many thanks
DianaDiana,
I presume you are getting a "FRM-40505: error unable to perform
query" when you try to execute query. I suggest you select the
"Display Error" item from the "Help" menu to see the query that
Oracle is generating. If the query that Oracle generates as a
result of your "Query data source name" is not formed correctly,
you will get the FRM-40505 error.
Copy and paste the query that is displayed into SQLPLUS and test
to see what happens when you try to execute the query from
SQLPLUS. That will give you a better idea of what the cause of
the problem is.
From your example, a query that works should look like "select
c_no from (select c_no from books)".
Keep in mind that for blocks based on FROM clause, the query that
produces the data is of the form :
SELECT <all columns in the block>
FROM <select statement entered in the "Query Data Source Name"
blockproperty>
The data source for the block is the select statement embedded in
the from clause.
Hope this helps. -
Using FROM clause query in block
I have a block using a FROM clause query instead of a table. I have two items in the block that correspond to the select statement. Here's the SQL statement I've entered:
SELECT BEZEICHNUNG, ZEIT_TYP_NR
FROM ZEIT_TYPE
WHERE ZEIT_TYP_NR IN
(SELECT ZEIT_TYP_NR
FROM PROM_ZEIT_TYP
WHERE PROM_TYP_NR = :GLOBAL.PROM_TYP_NR)
When I run forms, it ADDS to my SQL statement!! Here's what it does:
SELECT BEZEICHNUNG,ZEIT_TYP_NR
FROM (SELECT BEZEICHNUNG, ZEIT_TYP_NR FROM ZEIT_TYPE) WHERE ZEIT_TYP_NR IN
(SELECT ZEIT_TYP_NR
FROM PROM_ZEIT_TYP
WHERE PROM_TYP_NR = :1)
can anyone tell me why it's adding this first line to my select statement??"a from clause query" is the rather strange name forms uses for what is generally known as in an in-line view.
Your in-line view is being treated by forms the same way as it would a table, it sticks a SELECT, a list of columns determined from the database items in the block and a FROM on the beginning. If the user specifies query criteria in enter-query mode it will quite correctly apply the where clause to the outer select rather than to the in-line view. -
Hi,
A data block which was created using FROM clause query, can be set as master block of another block? So i want to build a detail block and the master block being the 1st block, made with FROM clause query.
Thanksi observed that a block created with FROM clause query cannot be a detail block, but it can be a master block. Correct?Yes, a From Clause based Block can be the master table in the Master - Detail relationship. I have successfully created a Form with this type of relationship! (I found my demo - I had it reversed).
I tried to create a FROM clause data block as detail block (and set a relationship with a master block) but i encountered an error at the relation and i deleted it (also the automatically generated triggers).This was my experience when I attempted a demo form that had the From Clause based block as a Detail in the Master - Detail relationship. The error in the On-Populate-Details triggers was easily fixed (the query has to be wrapped in parenthesis) but when I ran the form there was no coordination between the blocks.
but anyway, are these things written in the documentation?Not that I have ever found. It was always my understanding that if Oracle considered the data block to be a "base table block" (eg; block property Database Data Block = Yes) then all of the features of a base table block were available. The only thing I found in the documentation (Forms Help system - search on: "About creating a Master-Detail Relationship" and open the resulting document) indicated that a relationship should not be created where the detail block is based on a procedure, but it was OK if the master block was based on a procedure (see the Limitations section of the aforementioned document). I guess you could infer that this limitation applies to From Clause based blocks as well, but this is not explicitly stated in this document.
Craig... -
Update statement that includes case, decode and from clause
hello
I've the following code. I ran this code in 9i and got the errror SQL command not properly ended. Can I use FROM clause in an update statement?
CREATE OR REPLACE procedure NRI
IS
BEGIN
UPDATE IEB2 SET SDI =
(CASE PSDI WHEN '11' THEN '16'
WHEN '13' THEN '38'
WHEN '14' THEN '18'
WHEN '23' THEN '21'
WHEN '24' THEN '21'
WHEN '31' THEN '27'
WHEN '32' THEN '37'
WHEN '33' THEN '38'
WHEN '34' THEN '37'
WHEN '43' THEN '46'
WHEN '53' THEN '45'
WHEN '55' THEN '48'
WHEN '60' THEN '54'
WHEN '61' THEN '57'
WHEN '62' THEN '54'
WHEN '63' THEN '56'
WHEN '64' THEN '52'
WHEN '70' THEN '21'
WHEN '77' THEN '25'
WHEN '78' THEN '41'
WHEN '80' THEN '79'
WHEN '85' THEN '75'
WHEN '87' THEN '73'
WHEN '15' THEN '15'
WHEN '51' THEN '51'
WHEN '88' THEN '88'
WHEN '00' THEN '00'
WHEN '99' THEN '99'
WHEN '12' THEN DECODE(C.R_ID, 'N', '16','18')
ELSE 'NONE' END)
FROM D1.C C
WHERE EXISTS
(SELECT 1
FROM D1.SD A, D2.SDP B, D1.C C
WHERE A.SDN = B.DN
AND B.SDI = '000000'
AND B.PFI = 'W'
AND B.CID = C.CID
AND A.SDN = '0001500721');
END;Your parenthesis look a tad messed up ... think this fixes them.
CREATE OR REPLACE procedure NRI
IS
BEGIN
UPDATE IEB2 SET SDI =
SELECT
CASE PSDI
WHEN '11' THEN '16'
WHEN '13' THEN '38'
WHEN '14' THEN '18'
WHEN '23' THEN '21'
WHEN '24' THEN '21'
WHEN '31' THEN '27'
WHEN '32' THEN '37'
WHEN '33' THEN '38'
WHEN '34' THEN '37'
WHEN '43' THEN '46'
WHEN '53' THEN '45'
WHEN '55' THEN '48'
WHEN '60' THEN '54'
WHEN '61' THEN '57'
WHEN '62' THEN '54'
WHEN '63' THEN '56'
WHEN '64' THEN '52'
WHEN '70' THEN '21'
WHEN '77' THEN '25'
WHEN '78' THEN '41'
WHEN '80' THEN '79'
WHEN '85' THEN '75'
WHEN '87' THEN '73'
WHEN '15' THEN '15'
WHEN '51' THEN '51'
WHEN '88' THEN '88'
WHEN '00' THEN '00'
WHEN '99' THEN '99'
WHEN '12' THEN DECODE(C.R_ID, 'N', '16','18')
ELSE 'NONE'
END
FROM D1.C C
WHERE EXISTS
SELECT 1
FROM D1.SD A, D2.SDP B, D1.C C
WHERE A.SDN = B.DN
AND B.SDI = '000000'
AND B.PFI = 'W'
AND B.CID = C.CID
AND A.SDN = '0001500721'
END; -
Record Group and From-Clause Datasource
I need to do several complex queries (read-only) for my form. Original I used From-Clause datasource but, as the requirement changed, there are some limitations. I would rather no do anything dynamically if as all possible because there are over 20 such queries which makes the code difficult to maintain. I wanted to be able to reference block items in the query.
I'm thinking about using Record Group query instead. What are the differences in capability between Record Groups and From-Clause Datasource?
Thanks.
Clayton.Thanks.
That's exactly the problem I have. I don't want to use LOVs so I've been thinking about how to visualize the record group data using data blocks. Perhaps I'll just go with dynamically building the From-Clause.
I've looked into stored procedure based blocks a bit; it was confusing for me. Are the stored procedures stored in the database or are they defined in the form? -
Is there a way to use dynamic built string in the "from" clause
Hi all, im having one problem and now, im not sure how to solve it easily at all... :) Is there someone that would be so kind and put a eye on it? ..thx
I have plsql proc, in which i have a list of table_names. For each of that table i need to run a query that will retrieve me a list of values and for each of that value i need to do something.
If i can be more specific about the problem -> each of that table is built as key_column, value_columns, day,starttime. For a key per table there are 4 records per hour - every quarter. Im truncating those quarters to full-quarter (minutes => 0->14 = 0min; 15->29 = 15min, 30->44 = 30, 45->59=45)
example
i get for one key and specific hour four records at 15:01;15:16;15:31;15:46 => i truncate em to 15:00;15:15;15:30;15:45..Sometimes there is a problem with the tool that is generating those data for me, and one quarter could be moved a little - so i get data like 15:01;15:16;15:29;15:46 => after i truncate the times i get duplicates in second quarter. It also can happen like this : 23:00; 23:14; 23:29; 23:44; 23:59 => totaly bad => cos the last one supposed to be as 0:00 next day, ..and 23:14 as 23:15...So...that was a problem - and solution -> i wanted to create plsql that will find those hours in each table i ve defined, and for each problem hour i make some fixes - update the bad time ...
..and i have problem - can i put an dynamic built table_name in the "from" clause?
example how i wanted to do that:
declare
type t_objectName is table of varchar2(030) index by pls_integer;
l_tableName t_objectName;
begin
l_tableName(1) := 'tmphlrgl';
l_tableName(2) := 'tmprcfgl';
l_tableName(3) := 'tmprcfbs';
l_tableName(4) := 'tmpvlrgl';
for i in (select evtime from (select day,trunc_quarter(evtime) evtime,m_id from l_tableName(i) group by day,trunc_quarter(evtime),m_id having count(*)>1) order by evtime) loop
--some other conditions and the update...
end loop;
end;
/I cannot use the l_tableName(i) for FROM ...get an error...I was thinking to build it as dynamic sql and execute immediate into some kind of object that can store mutliple lines, from which i would in the FOR cycle get the data...But im not sure if this could be done in plsql...
thanks for your time and help..
d.declare
c sys_refcursor;
begin
for i in 1..4 loop
open c for 'day,trunc_quarter(evtime) evtime,m_id
from ' || l_tableName(i) ||
'group by day,trunc_quarter(evtime),m_id having
count(*)>1) order by evtime';Just to high light SELECT is missing that all
OPEN c FOR ' SELECT day,trunc_quarter(evtime) evtime,m_id
FROM' || l_tableName(i) ||
'GROUP BY day,trunc_quarter(evtime),m_id HAVING count(*)>1) ORDER BY evtime'; -
I want to use a dynamic schema name in the from clause but its not working.
DECLARE
vblQueryName VARCHAR2(20);
vblSchemaName VARCHAR2(20);
BEGIN
SELECT CurrentSchemaName INTO vblSchemaName FROM HR_989_SCHEMA;
vblQueryName:='060_525_020';
INSERT /*+ APPEND(HP_ELIGIBILITIES,4) */ INTO HP_ELIGIBILITIES
LVL1ID,
LVL1Desc,
LVL2ID,
LVL2Desc,
LVL3ID,
LVL3Desc,
LVL4ID,
LVL4Desc
SELECT /*+ PARALLEL(a,4) */
LVL1ID,
LVL1Desc,
LVL2ID,
LVL2Desc,
LVL3ID,
LVL3Desc,
LVL4ID,
LVL4Desc
FROM
bold vblSchemaName.HP_ELIGIBILITIES a
WHERE
UPPER(LVL2ID) = 'XX' ;
COMMIT;
DBMS_OUTPUT.PUT_LINE( 'Query Executed: ' || vblqueryName);
INSERT INTO HP_QUERYEXECLOG(QueryName) VALUES(vblQueryName);
EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
END;
I want to create a rules table so that the schema name in front of the table name in the from clause can be controlled by a separate table that is maintained but its not working . Help and your valuable inputs needed for this issueI want to use a dynamic schema name in the from clauseyou can alternatively set the current schema as e.g. in:
declare
vblqueryname varchar2 (20);
vblschemaname varchar2 (20);
begin
select currentschemaname into vblschemaname from hr_989_schema;
vblqueryname := '060_525_020';
execute immediate 'alter session set current_schema=' || vblschemaname;
insert /*+ APPEND(HP_ELIGIBILITIES,4) */
into hp_eligibilities (lvl1id,
lvl1desc,
lvl2id,
lvl2desc,
lvl3id,
lvl3desc,
lvl4id,
lvl4desc
select /*+ PARALLEL(a,4) */
lvl1id,
lvl1desc,
lvl2id,
lvl2desc,
lvl3id,
lvl3desc,
lvl4id,
lvl4desc
from hp_eligibilities a
where upper (lvl2id) = 'XX';
commit;
dbms_output.put_line ('Query Executed: ' || vblqueryname);
insert into hp_queryexeclog (queryname)
values (vblqueryname);
exception
when no_data_found
then
null;
end; -
Form blows up when clicked in data block using a FROM clause query
Hi,
I have a form that has two blocks. The detail block is based on a "FROM query clause" in the 'Query Data Source Type' in the block Properties.
I have a simple select in the 'Query Data Source Name'.
I made sure the select is enclosed in parenthesis and the alias names in the SELECT are the same as the ITEMS defined in the block
The data needs to be displayed in a tabular fashion.
When I run the form, the data is displayed correctly..but when I click the mouse on any item of this block or try to scroll down, everything just blows up and it closes my form.
I have made sure both blocks have the same properties. But, this seems to happen no matter what.
Any help in regard is greatly appreciated.
Thanks much,
VijjiThis is how I set the relationship for the detail block say BLOCK2.
1. I first do this:
Database Data Block = YES
Query Allowed = YES
Query Data Source Type = FROM clause query Query Data Source Name = ( select jio.order_header_id order_header_id, jii.item_code item_code, SUM(jii.item_qty) item_qty from joe_indv_items jii, joe_indv_orders jio where jii.indv_order_id = jio.indv_order_id group by jio.order_header_id, jii.item_code )
The master and detail need to be tied by the order_header_id which I can get from the header block.
2. In the WHEN-NEW_BLOCK-INSTANCE trigger for BLOCK2, I wrote the following where I dynamically pass the order_header_id:
DECLARE
q varchar2(1000);
BEGIN
q := '(SELECT jio.order_header_id order_header_id,
jii.item_code item_code,
SUM(jii.item_qty) item_qty
FROM joe_indv_items jii, joe_indv_orders jio
WHERE jio.order_header_id = ' || :HEADERS.order_header_id||'
AND jii.indv_order_id = jio.indv_order_id
GROUP BY jio.order_header_id, jii.item_code )';
CLEAR_BLOCK;
SET_BLOCK_PROPERTY('BLOCK1', QUERY_DATA_SOURCE_NAME, q);
EXECUTE_QUERY;
END;
I am not sure if I should write the exact select statement in the Query Data Source Name or not.
Please advice.
Thanks much,
Vijji -
hi,
ok i have a piece of code which looks like
ResultSet rs = stmt.executeQuery("SELECT OrderDate, ProdNumber, Quantity, Price, OrderNumber FROM Order WHERE EmailAddress='" + email + "'");
when i execute it... i get following error
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
i don't think there is any problem with syntax...
thanx in advanceHey the escape character in java is \ you need to use that to escape the property of " for eg you will write like this ResultSet rs = stmt.executeQuery("SELECT OrderDate, ProdNumber, Quantity, Price, OrderNumber FROM Order WHERE EmailAddress= "\""+ email + "\"");
try this and let me know if it works -
From Clause query with form variables
forms 9.0.4 rdbms 9.2
Is it possible to create a From Clause query with form variables generated from another block (but in the same form)? I am not having any success.
I searched Metalink. It appears that according to DOC ID # 69884.1, in Forms 6i, this is not possible. Metalink suggest in DOC ID 104771.1 implementating a dynamic From Clause, but when I duplicate the example on my system, I receive an Oracle error. Further investigation from the web form (DISPLAY ERROR) indicates that the system does not see the dynamic value.
Has anyone else run into this error? Has this been fixed in forms 9.0.4 and I am just missing something? Does a dynamic from clause query work? Can anyone point me to an example or post an example or offer any advise.
thanks in advanceAs far as I know it is not possible to use block items in a from clause query in forms 9.0.4. Here is my solution for a From-Clause-Query via the 'Query-Data-Source-Name-Property':
To use the values of the block items in my from clause query I implemented a database package with getter and setter routines for the block item values I needed for the query.
In the Key-Exeqry-Trigger of the From-Clause-Query-Block I set the global package variables with values of the block-items I am interested in. In the From-Clause-Query I used the values in the where-clause via package functions which return the global package variables.
Hope my solution will work for your problem. -
Getting country Name using from a Telephone tower
Hi,
We are currently doing a project on iphone where we are in need of country name. We can get this using Mapkit and using google reverse geocoding. But the map kit is not available in 2.0 and googles core reverse geocoding is not consistant. Is there a way to get details of cellID from the nearby telephone tower. This is definately possible using other platforms such as symbian and android not quite sure on iphone.
Any other suggestion are also welcome.
ThanksI think you should be working more closely with your TCS colleague (as Marcelo pointed out above): Getting Table names from Query
Per the other thread you'll see that when using Query mode the portions of the select statement are kept separately and could be retrieved for simple queries. Columns, Tables, FilterExpr, SortExpr, and others would be available to you in the query object (http://help.sap.com/saphelp_mii121/helpdata/en/45/cca31a93696f74e10000000a1553f6/content.htm)
If you are using a FixedQuery you could consider using
[Param.1]
for the FROM clause and then you could simply request document.APPLETNAME.getQueryObject().getParam(1) to retrieve it at runtime, otherwise you will have to parse the Query property string yourself.
Try using
SELECT * FROM [Param.1]
and defaulting the value Employees in the Parameters tab of the Template, then you can easily retrieve this in javascript with the syntax above. -
FROM CLAUSE QUERY, how to construct?
Have always used the data block wizard so am probably missing something quiet simple. I have created a new form and am manually creating a simple test block. What i've done so far:
Block Properties
Database Data block: No
Enforce Primary Key: Yes
Query allowed: Yes
Query data source type: FROM clause query
Query data source name: select department_id, department_name from departments
Query data source columns: department_id (number), department_name (varchar2)
Created a canvas with and put two items, department_id (set as Primary key) and department_name on it.
When i run the form i get... FRM-41003 This function cannot be performed here.
What am i doing wrong and what steps should i be taking?
Gus
Oracle 10gfirst of all you should set the DATABASE DATA BLOCK property to YES, not NO.
it is a database block though not based on a TABLE, rather on a FROM CLAUSE QUERY, but it is a database block.
another thing, when you run the form, what function you are trying to perform when you get the error: "FRM-41003 This function cannot be performed here."
i guess you are trying to query the data. if its same, then that should be resolved once you set the DATABASE DATA BLOCK to YES. -
From clause query works ok in form designer, gets an ORA-01422 ran on web
I am using forms 6i patch 9 with 10g database.
I have two ‘FROM clause queries’ fired via a block/key-exeqry trigger in a if/elsif.
The first/top SET BLOCK PROPERTY works perfect and populates the block.
But the bottom/second SET BLOCK PROPERTY select (after the elsif)
Is also based on a user entered field value and generates a ora-01422 error.
The problem is that both top and bottom set block properties
work fine when ran in forms designer,
But when I compile it on the app_server and run the web version
1. the top all ‘FROM clause query’ works fine
2. the bottom ‘FROM clause query’ works fine if only one record to return.
3. the bottom ‘FROM clause query’: gets the ora-01422 if > 1 record to return.
FRM-40735: KEY–EXEQRY trigger raised unhandled exception ORA-01422
The ORA-01422: ‘Exact fetch returned more than the exact number of rows’.
Both set block property selects ‘share’ a block property/where clause of FAC_ID = :FACILITIES.ID
The entered value in the entry field should populate 1 to many associated records
in the bottom (elsif) set block property (and does so correctly when ran in forms designer)
The block’s key-exeqry code:
–-query all records associated with fac_id only
if (:emission_stacks.stack_id_num is null) then
SET_BLOCK_PROPERTY('EMISSION_STACKS',QUERY_DATA_SOURCE_NAME,
'(SELECT C.ID, A.ID EP_ID,A.FAC_ID,A.NUM,A.DESCRIPTION,C.PARENT_MODE_ID,
C.STACK_ID, C.CAPTURE_PERCENT, C.CAPTURE_METHOD, C.DATE_TESTED
FROM EMISSION_POINTS A,
EP_MODES B,
CAPTURING_DEVICES C
WHERE A.ID = B.EP_ID AND
B.ID = C.PARENT_MODE_ID AND
C.CD_ID IS NULL AND
C.PARENT_MODE_ID IS NOT NULL AND
C.STACK_ID IS NOT NULL)');
EXECUTE_QUERY;
elsif
(:emission_stacks.stack_id_num is not null) then
–-(query all records associated with fac_id and the entry field value)
SET_BLOCK_PROPERTY('EMISSION_STACKS',QUERY_DATA_SOURCE_NAME,
'(SELECT C.ID, A.ID EP_ID, A.FAC_ID, A.NUM, A.DESCRIPTION, C.PARENT_MODE_ID,
C.STACK_ID, C.CAPTURE_PERCENT, C.CAPTURE_METHOD, C.DATE_TESTED
FROM EMISSION_POINTS A,
EP_MODES B,
CAPTURING_DEVICES C,
STACKS S
WHERE A.ID = B.EP_ID AND
B.ID = C.PARENT_MODE_ID AND
C.STACK_ID = S.ID AND
C.CD_ID IS NULL AND
C.PARENT_MODE_ID IS NOT NULL AND
C.STACK_ID IS NOT NULL AND
S.NUM = '''||:emission_stacks.stack_id_num||''')');
EXECUTE_QUERY;
** I have multiple database items in the block.
Data block properties:
Database/
Data Base Block = Yes
Query Allowed= Yes
Is there a way to overcome the ora-01422?
And populate the block with multiple rows(records)?
Any suggestions appreciated.Sorry, false alarm, I made a mistake
the form is working fine the way it should,
without error. (No ora-01422 errror is occurring now.)
I just got a new version of humming bird,
which I used to compile the form with
and did not have the binary switch on:
--long story short, a new fmx was not created
and I was not seeing the current version of screen
at runtime.
Thank you. -
Getting from clause query to work right?
Hello, me again :) waves
I am at a point now in my application where I need to base a block on a join. I have played around with Forms and used some very simple queries.
As an example, consider these this SQL:
select users.user_name, users_info.email from users, users_info where users_info.users_id = users.users_id
this should return a username and an email address.
Now, when I add this to a block, set the block's type to "from clause query" and create a canvas/frame/textboxes for the output it doesn't work. I try to "enter query"/"execute query". I get an FRM-40505 error (unable to perform query). I have defined all the columns in the blocks "query data source columns" property.
I have searched through all the Developer books we have here as well as this forum. I would like to not have to create a view in the database for every little screen I need to make :(
Ideas?The Database Item names in the block should match with the column names in the query. I think we don't have to set query data source columns property. So try creating a new block without this query data source columns property and with this from clause query and see if it works or not ?
Partha
null
Maybe you are looking for
-
Hi, I have a brand new imac which i got today and when I open Iphoto all i get is the error message "Your photo library is either in use by another application or has become unreadable" any ideas? thanks
-
Disappearing custom address image
I have two laptops and an iPod touch synced via MobileMe. Both laptops are Unibody MacBook Pros and running Snow Leopard. My address book isn't too large, about 150 entries and I have custom images attached to some of them so I can remind myself what
-
Multiple Senders - One receiver
I have a scenario where in there will be SOAP message comming in from multiple sender systems. The message format is same. Each one can be distinguished by plant code on the message.I have to load these messages into SAP R/3 using a RFC Adapter. Is t
-
Splitter ALV container + 2 layout definitions
Hello, I wrote an ALV report using splitter container. In the upper part of my report I need to define a layout , and another one for the bottom part. Also in my selection screen there are 2 parametrets for the upper and the lower layouts. I have 1 p
-
Rumors: there will be no 9.0.4!!!
Hi, today i heard from someone who should know that there will be no 9.0.4! That is really bad news! We where always said, do not worry, the Bug xxx will be fixed in 9.0.4 and we where waiting for that. Now our release to customer is coming nearer an