Querying a data block

HI,
Can someone tell me how do I make non database fields on a form queryable?
I have for example Country Name displayed on a form, but that is a non database item, the real database item is the country code. So when the user tries to query in this field, it doesnt return the correct results.
Please assist
Thanks
s

To query a block using a non-base table item, you have to modify the DEFAULT_WHERE clause of the block using the Pre-Query trigger of the block. In your situation, where you want to query records where the country code is equal to the country name selected, in your Pre-Query trigger your code would look something like this:
/* Sample Pre-Query trigger - code is untested */
DECLARE
   v_temp_where   VARCHAR2(500);
BEGIN
   v_temp_where := 'COUNTRY_CD = (select country_cd from country where country_name = '||:YOUR_BLOCK.COUNTRY_NAME||')';
   /* Forms 6i */
   Set_Block_Property('YOUR_BLOCK', DEFAULT_WHERE, v_temp_where);
   /* Forms 9i or higher */
   Set_Block_Property('YOUR_BLOCK', ONETIME_WHERE, v_temp_where);
END;Since you didn't specify your Forms version, I've given two options for setting the WHERE clause of your block.
Hope this helps,
Craig B-)
If someone's response is helpful or correct, please mark it accordingly.

Similar Messages

  • Query in data block

    hi,
    whether it's possible to write query in data block other than trigger.(i.e,.. data block created by the Wizard and executing a simple query over the data block based on a table)
    regards
    Yesukannan

    if i am right about u question , you can change your datablock sorce prooperty to QUERY and in soruce wirte ur query
    Block Property
    Database source- Query
    source table name:- write u query

  • How to query two data blocks simultaneously?

    Dear all,
    Need your inputs on the following problem statement...
    Existing Functionality:
    We have two data blocks A (Parent) and B (Child) in a relationship. Both data blocks refer to different tables.
    Data block A is the query data block and for a single record in block A we can have multiple records in block B. Multiple records in block B are shown one at a time after executing a query, this is implemented by using a list item C (belongs to a third block).
    For example
    Let us say block B can have 5 different types of entries for each record in block A. In this case the list item C will have 5 values corresponding to these entries. Once the query is executed, block B will show the default entry for the queried record in block A. To see other entries for the record user can select the required value in list item C and corresponding entry in block B will be fetched.
    Requirement:
    Our requirement now is to enable querying upon both data blocks A and B simultaneously. To implement this I replaced data blocks A and B with a single data block X which is based on the join of the two tables referred by the Data blocks A and B earlier. As the fields should allow insert, update, delete operations we did not use a view here.
    Issue:
    Now the problem is, each record in block A for which block B had multiple entries earlier is now getting listed multiple times because of the join.
    I have tried but could not find any solution for this. I would appreciate if any of you can suggest how we can query both blocks simultaneously without affecting the existing functionality.
    Thanks,
    Amit

    I don't understand your requirement in detail. I try to repeat what i understood so far.
    You have a master-block A based on a table A and a detail-block B based on a table B. So far so good. You can now query based on conditions just the datablock A, because B is a detail and therefore can only be queryied in context of block A.
    Your reuirement is to query on both blocks A and B and find block in B also without giving conditions for the relevant block A.
    Is it that ?
    What i don't understand, what is block C used for?
    An idea for the querying of block B's data: Create Non-database-items items in block A for the search-criteria you need on block B and make them Queryable.
    In the PRE-QUERY-trigger on block A build a WHERE-condition if that search-criteria is entered, something like
    IF :BLOCK_A.SEARCH_CRITERIA_FOR_BLOCK_B IS NOT NULL THEN
      SET_BLOCK_PROPERTY('BLOCK_A', ONETIME_WHERE, 'WHERE PKVALUE IN (SELECT FKVALUE_TO_A FROM TABLE_B WHERE FIELDVALUE=' ||:BLOCK_A.SEARCH_CRITERIA_FOR_BLOCK_B)');
    END IF;This would query also records to A for which you want to have the B-records. So you could keep block-structure up to master-detail.

  • Query on Data Block based on View

    Hi,
    I am new to forms and am trying to modify an existing form which currently works in the following way :
    The same form is used for insert/updates/queries.
    The data block is based on a table and a post query trigger is written which updates the other text items on the canvas(which come from different tables) based on the values returned by the data block. Since the query functionality is based only on the table, you cannot query on the other items that are on the canvas. I need to make the query work on the other items that come from different tables.
    I created a view which joins all the tables but when I query although it returns the right record I get an error message " Cannot insert into or update view"
    I'm not sure what the best way to resolve this is ?
    Any suggestions ?
    Thanks
    Preeti

    Thanks for the replies.
    I created an updateable view and an instead of trigger. The Form is now queryable on all fields and the insert to the table works beautifully.
    However, now I'm getting an error on Update. Updating any column on the form results in a
    ORA-01733: virtual column not allowed here
    FRM-40501: ORACLE error: unable to reserve record for update or delete.
    The code for the view is :
    select a.*,
    B.vendor_name as Supplier_name,
         'PRE' AS TO_OWNER,
         C.vendor_site_code as supplier_site,
         ARCH.vendor_name AS Architect,
         p.segment1 as Project,
         ph.segment1 as PO_number,
         decode(a.interface_status,'I','Interfaced', 'U', 'UnInterfaced',
         'P', 'Partial',null) Interface_display_status,
         decode(a.approval_status,'A','Approved', 'P', 'Partial',
         'R', 'Rejected', 'U','Unapproved',null) Approval_display_status
    from idc_aia_g702 a, po_vendors b,
    po_vendor_sites_all C,
    PO_VENDORS ARCH,
    pa_projects_all p,
    po_headers_all ph
    where b.vendor_id = a.vendor_id
    AND A.vendor_site_Id (+) = C.vendor_site_id
    AND A.VIA_ARCHITECT_VENDOR_ID = ARCH.VENDOR_ID (+)
    and a.project_id = p.project_id
    and a.po_header_id = ph.po_header_id;
    I know I have to do something on either the data block property palette or the individual item property palette and clicking on any field within the form in order to update it results in the error mentioned above.
    Shd I have all the item props as Query Only set to Yes ? or the ones for Table A as Query Only set to N and the other table columns as Y ?
    Thanks
    Preeti

  • Query based Data Block?

    I have a situation where on the detail portion of the screen, I need to have fields from 2 tables shown that can be updated. The 2 tables are related through a foreign key. Can you have a data block based upon a query? If so, how... Thanks.

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Richard Shannon ([email protected]):
    I have a situation where on the detail portion of the screen, I need to have fields from 2 tables shown that can be updated. The 2 tables are related through a foreign key. Can you have a data block based upon a query? If so, how... Thanks.<HR></BLOCKQUOTE>
    Hello,
    there is two way to do the same. one is, you need to create a view in database based on both the tables and then create a data block based on that view. to update the value of specific column there is trigger instead-of, u can create this trigger on view and manipulate the corresponding table.
    second is, create a data block based on virtual view same as fisrt one and write corresponding dmls in transactional trigger to update the information in actual tables.
    i hope that it will help you to achieve the same.
    take care
    null

  • Query on data block and Operating system block

    Hi ,
    Does data base requests data in term's of Data blocks or operating system block's . If data block's , how an data block get accessed the operating system block . what are the advantages over separating the data blocks from the operating system block's . can any one please explain the what happens once the data base requests the data ?
    Thank You

    sybrand_b wrote:
    This place is called 'Oracle Forum' It does not offer the Oracle University curriculum for free, nor does it offer free abstracts of the Oracle Concepts Manual.
    Kindly read the Concepts Manual of your unmentioned version yourself.
    Thank you.
    Sybrand Bakker
    Senior Oracle DBADear Sybrand
    As you said, this place is called Forum. If you know answer, then answer the question. If you know the documentation, then refer to documentation. If you don't know the answer, then don't answer in such rough manner! Just stop. Just don't type anything. Just be polity

  • Oracle Forms - How can I create a Data Block with query

    Dear friends I have a question, I couldn't do this..
    I have a sql query, I want to show the datas of the query.. How can I do this. ?
    Data Block Wizard wants a table, view or stored procedure, but I have a query, how can I create a data block with my query.. I m waiting your helps..? Please...
    Semih

    Hi,
    You have two options
    1. create a view and base the block on the view
    2. create a block with a query Data Source Type of 'FROM clause query'
    Hope this helps
    Neil

  • Forms clause query data source data block in oracle forms

    Hello experts,
                  I am new in oracle forms.I am using oracle forms 11g with weblogic 10.3.5 at windows 7.Through googaling I know how to create a database block,forms clause data block and stored procedure based datablock in oracle forms.I want to know that as in case of  Database based datablock, could we commit form either on editing records or on insertion or deletion in data block.
    I tried this but got error frm 40501.If we can perform editing and creation in such type of datablock then please tell me how.
    Thank You,
    regards
    aaditya

    When I base my datablock on a query using the "From Clause" property of the block query data source in the oracle Forms 6i,
    I get the strange error
    "ORA-00928: missing SELECT keyword"
    The query I see in the Display Error in Help Menu is
    SELECT DAY_NUMBER,CONSULTANT_ID,EVENT_ID,EVENT_NUMBER,SESSION_NUMBER,HOURS_UNPAID,HOURS_PAID,PAPERWORK FROM (EVENT_ASSIGNED_CONSULTANT) WHERE (CONSULTANT_ID=:1)
    What should I do now?????? Please remove the brackets () from the table name.
    Instead of (EVENT_ASSIGNED_CONSULTANT) use
    EVENT_ASSIGNED_CONSULTANT

  • Query Execution/Elapsed Time and Oracle Data Blocks

    Hi,
    I have created 3 tables with one column only. As an example Table 1 below:
    SQL> create table T1 ( x char(2000));
    So 3 tables are created in this way i.e. T1,T2 and T3.
    T1 = in the default database tablespace of 8k (11g v11.1.0.6.0 - Production) (O.S=Windows).
    T2 = I created in a Tablespace with Blocksize 16k.
    T3 = I created in a Tablespace with Blocksize 4k. In the same Instance.
    Each table has approx. 500 rows (So, table sizes are same in all the cases to test Query execution time ). As these 3 tables are created under different data block sizes so the ALLOCATED no. of data blocks are different in all cases.
    T1  =   8k  = 256 Blocks =  00:00:04.76 (query execution time/elapsed time)
    T2  = 16k=121 Blocks =  00:00:04.64
    T3 =   4k =  490 Blocks =  00:00:04.91
    Table Access is FULL i.e. I have used select * from table_name; in all 3 cases. No Index nothing.
    My Question is why query execution time is nearly the same in all 3 cases because Oracle has to read all the data blocks in each case to fetch the records and there is a much difference in the allocated no. of blocks ???
    In 4k block size example, Oracle has to read just 121 blocks and it's taking nearly the same time as it's taking to read 490 blocks???
    This is just 1 example of different data blocks. I have around 40 tables in each block size tablespace and the result are nearly the same. It's very strange for me because there is a much difference in the no. of allocated blocks but execution time is almost the same, only difference in milliseconds.
    I'll highly appreciate the expert opinions.
    Bundle of thanks in advance.
    Best Regards,

    Hi Chris,
    No I'm not using separate databases, it's 8k database with non-standard blocksizes of 16k and 4k.
    Actually I wanted to test the Elapsed time of these 3 tables, so for that I tried to create the same size
    tables.
    And how I equalize these is like I have created one column table with char(2000).
    555 MB is the figure I wanted to use for these 3 tables ( no special figure, just to make it bigger than the
    RAM used for my db at the db startup to be sure of not retrieving the records from cache).
    so row size with overhead is 2006 * 290,000 rows = 581740000(bytes) / 1024 = 568105KB / 1024 = 555MB.
    Through this math calculation I thought It will be the total table size. So I Created the same no. of rows in 3 blocksizes.
    If it's wrong then what a mes because I was calculating tables sizes in the same way from the last few months.
    Can you please explain a little how you found out the tables sizes in different block sizes.Though I understood how you
    calculated size in MB from these 3 block sizes
    T8K =97177 BLOCKS=759MB *( 97177*8 = 777416KB / 1024 = 759MB )*
    T16K=41639 BLOCKS=650MB
    BT4K=293656 BLOCKS=1147MB
    For me it's new to calculate the size of a table. Can you please tell me then how many rows I can create in each of
    these 3 tables to make them equal in MB to test for elapsed time.
    Then I'll again run my test and put the results here. Because If I've wrongly calculated table sizes then there is no need to talk about elapsed time. First I must equalize the table sizes properly.
    SQL> select sum(bytes)/1024/1024 "Size in MB" from dba_segments> 2 where segment_name = 'T16K';
    Size in MB
    655
    Is above SQL is correct to calculate the size or is it the correct alternative way to your method of calculating the size??
    I created the same table again with everything same and the result is :
    SQL> select num_rows,blocks from user_tables where table_name = 'T16K';NUM_ROWS BLOCKS
    290000 41703
    64 more blocks are allocated this time so may be that's y it's showing total size of 655 instead of 650.
    Thanks alot for your help.
    Best Regards,
    KAm
    Edited by: kam555 on Nov 20, 2009 5:57 PM

  • Query from multiple data blocks

    Hello professionals,
    I having difficulty in finding solutions to query data from multiple data blocks. By the way I'm using Oracle Forms 10g
    I have 4 data blocks and all items are database items
    Below are the blocks,
    1. student_main (columns : student_id, student_name, student_state)
    2. subject_main (columns : subject_id, subject_desc, subject_student_id)
    3. invoice_main (columns : invoice_no, invoice_amt, invoice_student_id)
    4. receipt_main (columns : receipt_no, receipt_amt, receipt_invoice_ref)
    The form will need to allow user to be able to query from any of the items/fields from the data blocks as listed above
    For eg,
    : if user query student_id then all related value items from table subject_main, invoice_main, receipt_main need to be displayed
    : if user query invoice_no then all related value items from table student_main, subject_main, receipt_main need to be displayed
    However the tricky part is that some student might have or might not have invoice / receipt data
    I tried using relations but it didn't work both ways
    I even create relations in every table (student_main to subject_main, subject_main to student_main, invoice_main to student_main, student_main to invoice_main and etc.) but it just make my running process hang
    Need help on this matter
    Thank you
    Edited by: 990092 on Feb 25, 2013 12:15 AM

    990092 wrote:
    Hello professionals,
    I having difficulty in finding solutions to query data from multiple data blocks. By the way I'm using Oracle Forms 10g
    I have 4 data blocks and all items are database items
    Below are the blocks,
    1. student_main (columns : student_id, student_name, student_state)
    2. subject_main (columns : subject_id, subject_desc, subject_student_id)
    3. invoice_main (columns : invoice_no, invoice_amt, invoice_student_id)
    4. receipt_main (columns : receipt_no, receipt_amt, receipt_invoice_ref)
    The form will need to allow user to be able to query from any of the items/fields from the data blocks as listed above
    For eg,
    : if user query student_id then all related value items from table subject_main, invoice_main, receipt_main need to be displayed
    : if user query invoice_no then all related value items from table student_main, subject_main, receipt_main need to be displayed
    However the tricky part is that some student might have or might not have invoice / receipt data
    I tried using relations but it didn't work both ways
    I even create relations in every table (student_main to subject_main, subject_main to student_main, invoice_main to student_main, student_main to invoice_main and etc.) but it just make my running process hang
    In general, relation will work. your relation creating was wrong, i think.
    do as
    1. student_main master to subject_main details
    2. student_main master to invoice_main details
    3. invoice_main master to receipt_main details
    Hope this helps
    Hamid

  • Query Data Block issues

    We have a legacy Forms and Reports application(~750 items combined). I suspect the applications were developed initially under 6i, but they work quite well under 10GR2, and is testing well under 11GR2 (which we plan on migrating to soon). We ran into an issue the other day for Data Query Blocks, and wanted your expert opinion on it.
    Due to a change in business requirements, we recently had to increase the length of a database field (from 20 to 30). We went into Forms Developer, made the appropriate changes, and recompiled them all successfully. Everything *seems* to work fine, but we noticed we get failures on any item that tries to utilize that extra 10 characters. Apparently this is because the Query Data Block seems to use a cached/stale copy of the database field sizes, and still expects a size of 20! What we realized now is that we have to go into each of those forms, and REFRESH the Data Block (through the Data Block Wizard) for every one of them.
    My question is this: is there anyway to force the Form to refresh those Query Data Blocks absent going into each one and REFRESHING it? We've tried compiling through Forms Developer, and through Batch Compiles, and nothing seems to get those cached copies to update. I'd really prefer to tackle this issue once and for all since we are prepping for migration testing.  Frankly I suspect the table space was tweaked a good bit over the years since development (before I ever got here), and if they didn't REFRESH those Data Blocks properly, a great many of the Forms will be suffering this same cached/stale view problem.
    Appreciate your thoughts,
    Dave

    Q_Stephenson,
    That's an excellent suggestion.  I have seen vague hints and allegations of Forms manipulation using that method, but never felt comfortable with my overall knowledge(*) of Forms to look at it that deep.  I think it's time to clear some space and dig into the topic for a better look.
    Thank you,
    Dave
    (*) The majority of my programming background is in Java; it's only been recently that I've had to really dig deep into Forms.

  • Help: How to call a user defined function in a data block query?

    I created a string aggregation function in the program unit, see reference:
    http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php
    I now like to call the function in my data block query. I got the error: ORA-00904: 'concatenate_list' invalid identifier.
    Please help.
    Thank you in advance.
    Jimmy

    Hi,
    You can write UDFs in java in Graphical mapping to enhance your XI Graphical mapping functionality
    The steps for doing it would be:
    1. Click on Create New function Button found on Bottom left corner on your XI Mapping window.
    2. Write your java code.
    3. Run the Mapping Test as usual.
    >>The module that is given here ...where and how it is used.
    The adapters in the Adapter Framework convert XI messages to the protocols of connected external systems and the other way around. When doing so, some
    functionality might need to be added specific to a situation which is possible with the use of custom modules.
    Typical example would be validation of file content when using a File Adapter or modification of the message payload to a common content structure which is not supported by any of the standard SAP modules.
    An Adapter module is developed as an Enterprise Java Bean and is called locally by the Adapter.
    An example on modules :
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/da5675d1-0301-0010-9584-f6cb18c04805">How to develop a module for reading file name in a sender file adapter XI 3.0</a>
    Cheers,
    Chandra

  • Post-query trigger order for data blocks in master detail relationship

    Using Forms [32 Bit] Version 10.1.2.2.0 (Production) Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production.
    I have the following problem with a form I am working on. It has a master data block with multiple detail data blocks. I am trying to create a post-query trigger on one of these detail blocks that will do a select using the value of a field from another of the detail blocks.
    The problem is that the post-query trigger of the data block I am trying to do the select with is firing before the post-query trigger of the block I need the value from is firing. I tested by just putting in a display message and having it return the value of the id I am tryign to use. Right after I do a query on the form, I get the messages saying:
    "Error: cannot find price for id:" and there is no id, and then the message from the other datablocks post-query saying, "id is: 123"
    Is there a way to change the order that the datablocks are queried? Or should I be using a different trigger to do this?

    Do you mean as it is displayed in the object navigator? It's not the first block under the data block section, but it is above the other block that is exceuting before it, so I assumed the order in that did not matter.
    EDIT: Thanks Magoo! That solved the issue.
    Edited by: a small rabbit on Sep 4, 2009 11:28 AM

  • Data Blocks - Different data source for Query  and DML

    Would anyone please tell me if it is possible in a BLOCK to define a stored procedure for queriying and a table for DML operations or vice-versa at the SAME time.
    If possible how do you do it using DATA BLOCK WIZARD? If you select your block to be based on stored procedure then it gives only stored procedure options for Querying and DML operations in next few screens.
    Also, suppose I used a stored procedure defined in a block for insert operations, is it implicitly called by INSERT RECORD function key in default menu? How does it take values from different fields on its own?

    Hi Deepon,
    We get data from both BSIK(open items)and BSAK (cleared items). Obviously if a accounting doc is not cleared it would be in open items and vice versa..
    Go through the help link for more information..
    http://help.sap.com/saphelp_bw33/helpdata/en/90/10e73a86e99c77e10000000a114084/frameset.htm
    Regards
    Manga(Assign points if it helps)
    Message was edited by: Manga

  • Tab Canvas : 1 data block 2 different query for each tab) Forms 10g

    Hello allllll,
    I have 2 blocks Master datail ,the master is non-db the tab canvas is for one data block:
    Problem 1: How 2 display same data block in each tab.?
    Problem 2: How when pressing excute Query button each tab display the data
    ----------------------specified by the Master block..?
    Regards,
    Abdetu..

    -- When-New-Form-instance
    IF :SYSTEM.Record_Status ='query' THEN
    go_block('PLN_STOCK_TAKING_HEADER');
    execute_query;
    go_block('PLN_STOCK_TAKING_DETAIL');
    execute_query;
    go_block('PLN_STOCK_TAKING_DETAIL2');
    execute_query;
    END IF;
    same behaviour,excute on tab2 not tab1,well i think it has something to do with the relation..!
    Regards,
    Abdetu..

Maybe you are looking for

  • A New Blog for you

    Hey guy, i hv created a new blog for u. i welcome all the project managers, executives, analyst, developers, designers and testers to post their corporate and technical experiences in the blog - http://bidproject.blogspot.com Keep writing Thank you

  • UWL application in Webdynpro Java

    Hi I have a requirement where I need to replicate the standard SAP UWL feature in a custom Webdynpro Java component. The Webdynpro Java component will be a custom screen which will have all the features of the standard UWL. When the users launch the

  • Cannot get turbo to work on P67A-G45

    I am using the tool from Intel to see if turbo is working but my 2500k never goes over 3.30. I tried games and Intel burn test but 3.30 is as high as it will go. I have turbo on in the bios so what am I missing here???

  • Second-hand confirmation that Nvidia is working on a fix...

    From an email Kyle of HardOCP sent to me after I sent him an email about the BkSOD: (short email!) Quote The drivers to fix the NF1 are being WHQL'ed now, and this is not an NF2 issue. Kyle Bennett Editor-in-Chief @ HardOCP.com Owner @ Ratpadz.com

  • When I download Adobe Reader, it asks for a password.  It doesn't accept my Adobe password.  What password is it searching for?

    When I download Adobe Reader, it asks for a password.  It doesn't accept my Adobe password.  What password is it searching for?