Compare values in detail block

Hi everyone,
I have a detailed block which has many records. What's the best way to loop though the detail records and compare the values in the same field in the next, previous record or all detail records.
Thanks for your help.

For example, in field A you can only add a record where the value in field A is
ABC. for this master record.Ok, it sounds like you want a field (field A) to be the link between the master and detail records, which is a common situation. Forms will handle this for you if you use a relationship between the master and detail blocks - the value of the link field in the master will be put into the detail block automatically.
I would like to look at record 3 value in field A (CBA) and compare it to record 1 and 2.Now I'm confused. Do you have a master record or will you simply be setting field A to the same value for every record? If so then why display the field on each row? You could have a single field at the top of the form and populate each row before inserting it. Is it possible to have a mix of values in field A after querying the records? If so then how do you decide what value should be used for new records?

Similar Messages

  • How to query the master block based on one of the values in detail block

    Hi,
    In version 6i forms, I have a field in data block which is not set as a database item. I am using that field to store a value from detail block. If I want to query the form using that field (which represents one of the values from detail block), how do I do that? Any pointers?
    TIA,

    Do you want to query a master, which contains a specific detail? If so, here's an example how you could do it with a PRE-QUERY-trigger:
    DECLARE
      vcQuery VARCHAR2(4000);
    BEGIN
      IF :MASTERBLOCK.THE_DETAIL_SEARCH_ITEM IS NOT NULL THEN
        -- Build up an exists Sub-Query
        vcQuery:=' MASTERBLOCKID IN (SELECT FK_TO_MASTERBLOCK FROM DETAILTABLE WHERE DETAIL_COLUMN=''' || :MASTERBLOCK.THE_DETAIL_SEARCH_ITEM|| ''')';
      END IF;
      SET_BLOCK_PROPERTY('MASTERBLOCK', DEFAULT_WHERE, vcQuery);
    END;

  • Unable to see the values in detail block

    Hello,
    I have a master detail block, when I query the form, I am unable to see the values for a particular field(Column), all other columns appear properly in the details block, Upon checking the same table(s) in SQL ( by using the JOIN defined in the where clause of the relationship in Forms) , it shows the relevant records for all fields. So what could be wrong with the Form, please advise.
    Thanks
    FM

    IQ wrote:
    I have just checked the field its a non-database field which is being used as a LOV column to display a value derived from LOV. How do I make this populate at Query time, as obviously this works when the Form is in a insert mode but not for Query mode. How to make it work for Query ? As it for LOV column and non-database filed, ignore my first suggestion.
    Does your non-database filed has associate any column ?
    For example, you have SUPPLIER_ID (database column) and SUPPLIER_NAME (non-database column). SUPPLIER_NAME has LOV column. And when selecting supplier name from LOV value also assign at supplier_id.
    Now to show supplier name when querying, you have to write POST-CHANGE trigger at supplier_id. like
    SELECT ASSC_CODE INTO :MST_SUPPLIER.ACC_CODE
    FROM ACC_SUB_SUB_CONTROL
    WHERE ASSC_ID=:MST_SUPPLIER.SUPP_ASSC_ID;Hope this helps

  • Searching master block based on value in detail block

    I have two blocks on a form. A master block for purchase orders and a detail block for the line items. I need to provide users with the ability to search the purchase orders based on the values entered into the detail block (line items), during the query entry. I am considering to check to see which block the cursor resides by using the :SYSTEM.CURSOR_BLOCK variable, then retrieving the value from the current item and running a query, using that query. The problem is that I am not very familiar with Forms and do not know how to implement my idea. Any ideas?
    null

    I copied you an example from metalink. Hope it will help.
    Doc ID:
    Note:109583.1
    Subject:
    How to query a Master record from a Detail Block
    Type:
    BULLETIN
    Status:
    REVIEWED
    Content Type:
    TEXT/PLAIN
    Creation Date:
    22-MAY-2000
    Last Revision Date:
    03-AUG-2001
    PURPOSE
    ------- To query a master record from a detail record. DESCRIPTION
    =========== The user would like to enter a query criteria in the detail block
    and then query the master record based on the above user input. SOLUTION
    ======== Create the master and detail blocks and the relationship in the usual
    manner. We will consider here the blocks DEPT and EMP based on the
    SCOTT schema. 1. Create a KEY-ENTQRY trigger at the block level of the detail block
    (EMP) and add the following code in it : GO_BLOCK('dept');
    CLEAR_BLOCK(no_commit);
    GO_BLOCK('emp');
    ENTER_QUERY; 2. Create a KEY-EXEQRY trigger for the detail block and add
    this : EXECUTE_QUERY;
    :global.deptno := :emp.deptno;
    :global.flag := 'T';
    GO_BLOCK('dept'); This will store the value of the deptno (primary key) in a global variable
    :global.deptno and set another global variable :global.flag to 'T'. This
    will be explained as we progress. 3. Create a WHEN-NEW-RECORD-INSTANCE trigger for the detail block
    and add the following : -- This is used to populate the MASTER block with the corresponding
    -- record whenever the user navigates through all the records in the
    -- DETAIL block if get_record_property(:system.cursor_record,:system.cursor_block,status) = 'QUERY' then
    SELECT rowid,deptno,dname,loc
    INTO :dept.rowid,:dept.deptno,:dept.dname,:dept.loc
    FROM dept
    WHERE deptno = :emp.deptno; -- This is to set the status of the record populated
    -- to QUERY and not to create a new record SET_RECORD_PROPERTY(1,'dept',status,QUERY_STATUS);
    end if; 4. Create a WHEN-NEW-BLOCK-INSTANCE trigger for the master block again
    and add this : if :global.flag = 'T' then -- set the variable to a different value
    :global.flag := 'F';
    :dept.deptno := :global.deptno; -- This will query the master table for the record based on the
    -- deptno of the detail table which is stored in :global.deptno -- For ex: if an employee of department 10 has been queried in
    -- the detail, then the global.deptno will have the value 10,
    -- which is used in the query below to fetch the master record. SELECT rowid,deptno,dname,loc
    INTO :dept.rowid,:dept.deptno,:dept.dname,:dept.loc
    FROM dept
    WHERE deptno = :global.deptno;
    set_record_property(:system.cursor_record,'dept',status,QUERY_STATUS);
    GO_BLOCK('emp'); end if; EXPLANATION
    =========== Actually in the above method we are using the base table blocks as a
    non-base table block when we query the master from detail. We are
    displaying the master record fetched from the table based on
    the query supplied in the detail. So after the fetch, if we clear the
    block or form then we get a "Do you want to save the changes you have made"
    alert. So in order to supress this while entering a normal master-detail
    query, we have created the global variable, :global.flag. There is a limitation though, if you query detail records and then
    navigate to the master block and then press the down arrow( i.e.,
    navigate to the next record) and then presses the up arrow to
    navigate back to the same record, then the detail records that
    were originally populated will change and a new set of records will
    get displayed. This is because the normal master-detail query is
    taking place during MASTER record navigation. This can be controlled by creating a flag (global variable) and setting
    its value and thus preventing the user from navigating to the next master
    record. Do the following : 1) In the KEY-EXEQRY trigger of the detail add the following :global.control_master := 1; 2) Create a KEY-EXEQRY for the master and add this : :global.control_master := 0;
    EXECUTE_QUERY; 3) Create a KEY-DOWN in the master with the following in it: IF :global.control_master <> 1 THEN
    down;
    END IF; Declare all the global variables before running the Form. RELATED DOCUMENTS
    Note:611.1

  • How to validate non commited items in detail block.

    Hi All,
    I have a Detail block with 10 rows and 2 columns. the select of items is based on LOV. If i select One item in one row, then the user cannot select the same item again in other rows. either I need to not show the selected item in LOV or I need to raise form trigger failure and ask him to change values. This is to be done before commiting the items. Can anyone, please suggest me some way or triggers I can use.
    Thank you.

    If the process is done by a key-commit trigger or a when button-pressed trigger then it is simple . But if there is no such trigger then you should create it because it is more convenient to make controls inside key-commit rather than in pre-update or pre-insert because these triggers do not accept restricted built-ins.
    To validate your items just loop through the list of records and compare the values to the one you are on. Then if there are no match then you go to the next record to search for.
    Something like this :
    declare
    v_current_value_to_compare varchar2(100);
    v_record pls_integer;
    begin
    go_block('detail_block_name');
    first_record;
    while :system.last_record = 'FALSE' loop
    loop
    next_record;
    v_current_value_to_compare := :detail_block_name.item_name;
    v_record := :system.trigger_record;
    if :detail_block_name.item_name = v_current_value_to_compare then
    -- make your control here
    end if;
    exit when :system.last_record = 'TRUE';
    end loop;
    go_record(v_record);
    end loop;
    end;

  • How to display data in detail block from a table.

    Dear members,
    i have 2 blocks. 1 is master block and another is detail block with multiple records.
    the requirement is when i navigate to the detail block the data from a table is displayed in it. using a where clause depend on the value in an item in the master block.
    i wrote the following code and tried in when-new-block-instance, when-new-record-instance, pre-block and post-block
    but...
    DECLARE
         CURSOR ITEM_CUR IS
         SELECT ITEM_ID, QTY_APPROVED
         FROM IN_REQUEST_FORM_DETAIL
         WHERE RF_MASTER_ID = :IN_MASTER_PO.RF_ID;
    BEGIN
         FOR ITEM_REC IN ITEM_CUR LOOP
              :IN_PO_DETAIL.ITEM_ID := ITEM_REC.ITEM_ID;
              :IN_PO_DETAIL.DIS_APPROVED_QTY := ITEM_REC.QTY_APPROVED;
              NEXT_RECORD;
              END LOOP;
    EXCEPTION
         WHEN NO_DATA_FOUND THEN
         MESSAGE ('THERE IS NO REQUESTS');
    END;

    thanks dear simon,
    i want to display the data from a table not included in this form. and these two tables are connected via a relation.
    i have the following tables.
    in_master_po
    PO_ID pk
    PO_DATE
    RF_DETAIL_ID fk (in_request_form_detail)
    in_po_detail
    DETAIL_PO_ID pk
    ITEM_ID fk
    PO_ID fk (in_master_po)
    QTY
    the above 2 tables are datablocks connected via relation
    the following is the from which i want to bring the data to display
    in_request_form_detail
    RF_DETAIL_ID pk
    ITEM_ID fk (items)
    QTY_REQ
    i tried my code on the sample tables with scott/tiger there it works good.
    thanks
    Muhammad Nadeem

  • Recommended best practice to fetch detail block based on procedure

    HI
    I am creating a detail block (Dept)based on procedure which will be populated from the value from master block 'Emp'.
    For example,
    Detail block 'Dept' will be populated by calling procedure populate_detail(:emp.empno in number,dept.deptno out number) .
    But what are the triggers I need to call to populate detail block and at which level?
    I was thinking to call a WHEN-MOUSE-DOUBLECLICK on master block 'Emp' level to populate the detail block 'Dept' by calling the procedure and passing emp.empno as the parameter whenever the user moves from one master record to another.
    Please advise.
    Thanks in advance.

    Download the forms 6i examples CD from the OTN website

  • How to get number of lines entered in detail block

    Hi ,
    Below is my requirement, I am calling custom form from standard RCV transactions form.
    Below are parameters : PO NUMBER, RCPT NUM, QTY. These values will be passed from standard form to custom form and these values will be stored at header level in my custom form.
    Based on the Quantity, I have to validate my detail block. For eg. If my quantiry is 10, my detail block items should not less or greater than 10.
    Can any one please suggest me how to achieve this. I tried SYSTEM.TRIGGER current record etc,. I am getting below issue. If I place my cursor on any other record rather than last record it is throwing error. SO any experts please help here.
    Thanks,

    You can use a calulated item of type summary for this. set the following propertie for a newly created item in your detail block
    -Summary type=Summary
    -Summary function=Count
    -Summarized block=your detail block
    -summarized item=any Required item in your detail block
    Now you can check the number of records with that item.

  • To get value in detail part of master detail form

    hi all
    i am using forms 6i
    there is a master detail form
    in the master part
    i am just mentioning one field as per the requiremnt
    FIELD BELONGS TO DATA BLOCK XXNP_JL_001.FIELD
    this FIELD field is populated by a flexfield NAP_GL_WELL
    VALUES are
    abc                           123
    def                            456
    fgh                            875
    in the master part of the form there is also a button called POPULATE which populates values  for the fields in the detail form
    in the detail part of the form
    i am mentioning two fields
    item_number belongs to data block XXNP_JL_EST_002 and      opn_value belongs to data block XXNP_JL_RES_005
    now the requiremnt is as follows
    say the WELL field has a value 'abc'
    then in the detail part
    whenever and only when the item_number is '1010103002' the opn_value field should have value 123
    similarly when the WELL field has a value 'def'
    in the detail part
    when the item_number is '1010103002' the opn_value  field should display value '456'kindly guide on how this can be achieved
    thanking in advance
    i did a when validate trigger on opn_value field
    BEGIN
    IF  :XXNP_JL_RES_005.OPN_UOM_CODE='PKU' and :XXNP_JL_EST_002.ITEM_NUMBER='1010103002' THEN
            SELECT hierarchy_level
            INTO :XXNP_JL_RES_005.OPN_VALUE
            FROM fnd_flex_values
            WHERE flex_value_set_id = 1009757
            AND FLEX_VALUE=:XXNP_JL_001.FIELD ;
            END IF;
            END;Edited by: makdutakdu on Jul 4, 2012 12:40 PM
    Edited by: makdutakdu on Jul 4, 2012 1:05 PM
    Edited by: makdutakdu on Jul 4, 2012 1:09 PM

    HI
    If i understood your question on overview, your requirement is
    get master details in details column.
    If this is correct,
    YOu can write a simple plsql to get master value in details columne thru trigger
    If my understanding is not correct, please tell me

  • Master-detail Block save behaviour

    Hi,
    I have master detail block just consider Forms A as a master and Forms B as a Detail,when my cursor is in form A i try to save the record, it is saved Form A and putting Form B data as null, i have to put a validation to stop this activity, i have to inform the user "Provide values for form B text item",
    I created a post block trigger in form A
    Begin
    If (:FORM-B.TEXT1 is nul)l or( :FORM-B.TEXT2 is null)
    then
    Message( 'provide value for FORM-B');
    Message( 'provide value for FORM-B');
    raise form_trigger_failure;
    ELSE
    NULL;
    END IF
    END;
    Im Getting error message and navigation got stopped in last item of form A, please advice me which trigger i have to use for this.
    Thanks and regards
    karthik

    Hi
    Getting error message what is the error message ?
    to inform the user "Provide values for form B text item", Pls try to use WHEN-CREATE-RECORD or WHEN-validate-RECORD Trigger instead
    Besides raise form_trigger_failure;
    stops the navigation
    or to inform user and stop saving
    u can use pre-commit Trigger the raise form_trigger_failure;
    will stop saving...
    Regards
    Abdetu...
    Edited by: Abdetu on Feb 5, 2011 9:33 AM

  • How to validate that only one check box is checked in detail block

    Hi All,
    I am using oracle Forms 10G on windows.
    I need help on how to validate that only one check box is checked in detail block. I have multiple records in the detail block and I have check boxes for each record in the detail block.
    I have a button to select the values from the detail records where the check box is checked. But I want to make sure that only one record is check not more than one.
    How do I validate this on a push button trigger?
    Thanks

    When I've done this kind of thing, I create a Form level variable of TYPE number and then add or subtract to this variable as I check and uncheck the checkboxes. If the value of the variable is 1, then you know that only one checkbox is selected. If the value is greater than 1, then you know the user has selected more than one check box. You could also add code to your When-Checkbox-Changed trigger to test the variable and instruct the user to un-check selected record before selecing a new record.
    With respect to the Form level variable, you can use a GLOBAL, PARAMETER or Program Unit package specification. I prefer to use the PU Package Spec as this method has a smaller memory footprint. For example, in the Program Unit node of the object navigator create the following;
    /* Form variables package spec */
    PACKAGE Form_Vars IS
      CheckBox_Cnt     NUMBER := 0;
    END;Now in your When-Checkbox-Changed trigger...
    BEGIN
       IF ( Form_Vars.CheckBox_Cnt = 0 ) THEN
          Form_Vars.CheckBox_Cnt  := Form_Vars.CheckBox_Cnt  + 1;
       ELSE
          /* it's assumed the value is greater than 0 */
          Message('Please uncheck selec ted record before choosing a new record.');
          RAISE Form_Trigger_Failure;
       END IF;
    END;Hope this helps,
    Craig B-)
    If someone's response is helpful or correct, please mark it accordingly.
    Edited by: CraigB on Feb 3, 2011 10:15 AM

  • How to validate date between Header and Detail Block..

    Hi All,
    I was trying to find a way where, suppose I enter 'from date' and 'to date' in the header block.then in detail block all 'from dates' and 'to dates' should be restricted between the dates entered in the header block.
    Thank you

    Or U Can Simply set in the child item lowest / highest Allowed Value
    Invoke Property pallete for child date item and set the following
    lowest Allowed Value :header.from_date (must be prefix with :)
    Highest Allowed Value :header.to_date
    siju.koiply

  • Setting check box (in detail block) as (non) updatable...

    Hi,
    I have a master-detail form. The form does execute a query when it opens. Now, according to a condition i want to do the check box(in detail block) as non- updatable.
    I have tried to write the appropriate code in:
    WHEN-NEW-RECORD-INSTANCE(in the master block level)
    WHEN-NEW-ITEM-INSTANCE (in the detail block level)
    POST-QUERY(in the detail block level)
    but it does not work 'perfectly'. I mean that in most cases even one of the above triggers does not execute (for example the 'WHEN-NEW-RECORD-INSTANCE' but only after i click on this new record instance. I mean that after this on this new record the condition is estimated....)
    or
    it does execute but after i click on the checkbox (for example the 'WHEN-NEW-ITEM-INSTANCE').
    The code i tried looks like the following:
    if :block.item=<condition>
    then
      set_item_property ('detail_block.chk_box',updatable,property_false);
    else
    set_item_property ('detail_block.chk_box',updatable,property_true);
    end if;I consider to use the WHEN-CHECKBOX-CHANGED trigger and code which looks like:
    if <condition>=true
    then
        /*i set the value of the checkbox as the opposite of what it is just after the click on it...*/
      if :detail_block.chk_box=0
       then
         :detail_block.chk_box=1;
      else
        :detail_block.chk_box=0;
      end if;
      set_record_property(currect_record,status,query_status);
      set_item_property ('detail_block.chk_box',updatable,property_false);
    end if;The truth is that i do not like very much this code, but is there any alternative...???
    Note: I use Dev6i with patch 12
    Thank you,
    Sim

    I build a little testform based on HR-schema-table DEMO_USERS and switch each second record to be not updateable, works without problems (code from POST-QUERY-trigger):
    DEFAULT_VALUE('1', 'GLOBAL.SWITCH');
    :GLOBAL.SWITCH:=3-:GLOBAL.SWITCH;
    IF :GLOBAL.SWITCH=2 THEN
      SET_ITEM_INSTANCE_PROPERTY('DEMO_USERS.ADMIN_USER', TO_NUMBER(:SYSTEM.TRIGGER_RECORD), UPDATE_ALLOWED, PROPERTY_TRUE);
    ELSE     
      SET_ITEM_INSTANCE_PROPERTY('DEMO_USERS.ADMIN_USER', TO_NUMBER(:SYSTEM.TRIGGER_RECORD), UPDATE_ALLOWED, PROPERTY_FALSE);
    END IF;     Edited by: Andreas Weiden on 31.03.2009 21:24

  • Detail block is not populated

    Hi,
    Please suggest me best way to do it. Create a form with two blocks
    1.Master block1 has items client,dc,sku,fromlocation,tolocation which is fetching data
    from RFlog table in RFWH schema
    2.Second block has items client,dc,sku,location which is fetching data from Inv_detail table in MPROD schema.
    These tables are not linked but we can join them using client,dc,sku columns.When click on row in Master
    block then corresponding data from Inv_detail table should display in detail block.
    When there is value in Fromlocation(tolocation will be Null) then detail should show same location and viceversa tolocation.
    problem is there is no way to find in inv_detail which is tolocation or fromlocation.
    sample date
    Master block
    Client        Dc        Sku      fromlocation   tolocation
    10             ABC     Pen         001            
    10             ABC     Pen                            002
    Detail block
    Client      DC     Sku     Location
    10         ABC    Pen       001
    10         ABC    Pen       002My approach: Created master data block based on RFlog then created detail data block based on Inv_detail and unchecked auto-join ,created link with client,dc and sku. in detail block where clause used below query
    :inv_location.location=:rf_blk.fromlocation
    OR :inv_location.location=:rf_blk.tolocationProblem: when ran this form it shows data in all fields of master-data-block and Client,DC,Sku field of detail DB
    there is no data in location field. In detail client,dc and sku item proeprty palatte has COPY_value_item = Mblock.client
    respectively.
    Thanks a lot in advance
    sandy
    Edited by: sandy162 on Jul 20, 2009 3:53 PM

    Let me clarify:
    Your master block rf_blk and detail block inv_location.
    New non-database item location_m added in Master block. This item can be Visible=No and canvas = null (Just don't forget to put formula in this one)
    Do not specify any Where Clause in Master block nor in Detail Block.
    Manually create relation and specify Join Condition like this:
    inv_location.location=rf_blk.location_m
    AND inv_location.client=rf_blk.client
    AND inv_location.dc=rf_blk.dc
    AND inv_location.sku=rf_blk.skuNow you should see that property "Copy value From Item" in inv_location.location is set to rf_blk.location_m, inv_location.client set to copy from rf_blk.client etc.

  • Something wrong in detail block

    I've defined a WHEN_VALEDATE_ITEM trigger in one item of the main block,if the item's VALUE is '1' then set the property:REQUIRE of the first two columns of the detail block to PROPERTY_TRUE and else set them to PROPERTY_FALSE .
    But when I set the item's VALUE to '1',and down to the second row of the detail block without typing angthing in the first two columns of the first row,no error messages appear.
    So what's wrong with it,thanks!
    Phoenix

    How did you set the propertie "defer required enforcement" at form level? Also if the detail records has not been changed then forms probably has nothing to validate for that record.

Maybe you are looking for

  • Regarding data storage

    Dear all, I am doing cost element planning monthly for a cost center through Tcode-KP06. Can anybody know in which table this data will store. Pls let me know the table.. Thanks in Advace.. Regds, Janardhan.

  • InputFile Changes to show Update

    I have a form with an inputFile component and a commandImageLink. However when I click the commandImageLink the inputFile (if a file is selected) changes to show "Update". I don't want any of the form to submit when I click on the commandImageLink. I

  • HT5891 os x mavericks and bootcamp for windows 7 64 bit

    I am currently running Win 7 64-bit in Bootcamp on my OS X 10.8 and it works great. I am connected via fire wire to my old DELL 2007WFP Display and this is allowing my MacBook Pro Retina to really act as a workstation for Revit/Acad 2014.  Questions:

  • Final Windows XP32/XP64, Vista32/64 Compatible drivers for E-MU USB serie audio devices available

    http://www.emu.com/support/vista.asp Driver & Firmware update download link: http://www.emu.com/support/files/dow...cy=&Platform=1 MAC drivers & firmware update: http://www.emu.com/support/files/dow...cy=&Platform=2 jutapa

  • MOVED: MSI 275 GTX Lightning, overcklocking procedure

    This topic has been moved to Overclockers & Modding Corner. https://forum-en.msi.com/index.php?topic=135506.0