Validation item in a multi-record

Hi!
I have a multi-record block and I want to avoid duplicated items from the user on it (these record aren´t saved yet, I want to validate them before commit).
Anyone knows how I can validate them ? I made a procedure but it only works in trigger Key-Next-Item from the block.
Thanks
Veronica

Re: duplicate records in  a multi record block

Similar Messages

  • Updating a value of a text item in a multi record block based on a change

    Hi,
    I need to change the value of a text item in a multi record block based on a change to another item's value in the same block.
    Suppose there's a text item in a multi record block called dt1 which is of type date, which is changed in a particular record. I want to change the values of the another item in the same multi record block, for all other records by running a loop through all the records in multi record block. I dont want to do it on the press of a button, it should do automatically on change. Help me resolve this issue.

    Hi,
    I need to change the value of a text item in a multi record block based on a change to another item's value in the same block.
    Suppose there's a text item in a multi record block called dt1 which is of type date, which is changed in a particular record. I want to change the values of the another item in the same multi record block, for all other records by running a loop through all the records in multi record block. I dont want to do it on the press of a button, it should do automatically on change. Help me resolve this issue.

  • About populating a non-database item in a multi-records block

    Hi, all
    I have a problem about populating a non-database item in a
    multi-records block. This block is set to database block with a
    controlled item which needs to be populated after query. so I
    create a post-query trigger, but my problem is when the records
    listed in this block are less than 10 ( the record number is set
    to 10), the trigger fires no problem. but when the retrieved
    records are greater than 10, the error message is 'post query
    trigger raised unhandled exception ora 01403'. anyone can help me
    fix this problem?
    Thanks in advance
    Diana

    Diana,
    When you have an unbound item in a block and want to fetch
    some data into it you need to write a post-query trigger.What
    you have done is right.But it seems that u are getting a No data
    found error.I am sure about how u r populating data into that
    field.If u have written a select statement to fetch the data in
    post-query trigger, kindly handle an exception and find out the
    problem.Having a look at ur code(pos-query) would be much more
    helpful for giving a better solution.Try this a let me know.
    Thanks
    Vinod.

  • Editing record items in a multi-record block - 1 record at a time.

    Hello,
    I have the following scenario: Currently in my multi-record block, to edit an item of a record, the user has to double click on the record to enable the 'save changes' button. However, I want to turn the navigation to all other records turned off. The only way the user should be able to edit other records is save changes first, then again double click on the desired record to re-enable the 'save changes' button (at this time navigation to all other records should be turned off). ie., the user should be able to edit 1 record at a time (At any given time, I won't be having many records in the block which the user may have to modify).
    How can this be achieved?
    Thanks,
    Chiru

    That is pretty odd requirement, but this might work:
    When the user double-clicks the record, enable the Save button, and set a value in any column of the record to its current value. This will cause Forms to set the record status to CHANGED, and will not permit navigation away from the record until the When-validate-record trigger runs successfully.
    In the Save button, start a non-repeating timer to run maybe 20 milliseconds, then issue a Validate(Record_Scope); command. Check form_success then commit_form.
    In the when-validate-record trigger: Do any record validation that may be necessary, and Raise Form_Trigger_Failure if anything is wrong. Then check for the existence of your Save button's timer. If it does NOT exist, issue a message like: "You must Save the changes first" and Raise Form_Trigger_Failure; If the timer exists, do not raise the error.

  • Clearing item that has multi records

    I have text item which consist of 10 records.
    When a user preses button, I have to clear the item.
    Since it has more than one records, I couldnt manage to do it.
    I tried two methods but both didnt work.
    1-)
    clear_block('BLOCKNAME') --> returns ORA-06502
    2-)
    :item_name:=null; --->doesnt work

    See other triggers attached to this block. One of them does raise the error. Be also sure that when you press your button, the focus is not send to the block that contains this button. If yes, set the button mouse and keyboard navigation property to NO.
    Francois

  • How to do it in multi-record block

    Hi all,
    i have 1 text items in a multi-record block number of record displayed 10
    and i have values like 100 , 50, 30 in first 3 records and in 5th record i want to put some value like
    20 then i want to calculate all values like 100 + 50 + 30 +20 = 200 and i want to put the total value in a single record block.
    but my problem is i cannot able to calculate all the value because for the totale value i have to
    write a for loop to loop through the record
    but go_block() is not working in post_change .
    if any solution is there plz suggest.......

    Hi zeeshan
    my problem is i cannot able to calculate all the value because for the total value
    put the total value in a single record block.
    First pls the following...
    Guidelines for Working with Calculated Items Calculated items_
    1- They are display-only control items.
    2-Calculated items cannot be database items.
    3.While you can set a calculated item's Enabled, Mouse Navigate, and Keyboard Navigable properties to Yes,
    you cannot set the Insert Allowed or Update Allowed properties to Yes
    Second Keyword: TOTAL is a reserved oracle key word... pls read the Details...
    go_block() is not working in post_change .well u can use timers but no need for it u can reference block item but first u have to accumulate the values per record in WHEN-VALIDATE-ITEM TRIGGER in the last calculated item which is inserted by the user and assign it to the display item in ur current multi-record block :*block_name.total_item*.. as follow...
    :block_name.total_item := :item1 + .... ; Then u create a second display item > no of records property = 1 , named e.g. final_summarized_totals
    In order to summarize this total values accumulated in the multi-record display item named e.g. block_name.total_item
    Finally using PRE-INSERT , PRE-UPDATE,PRE-DELETE Triggers to assign the value calculated into the display item * block_name.total_item* into the db_item into the previously mentioned Trigger Block-Level Off-course.
    :block_name.total_db_tem := :i:block_name.final_summarized_totals ; Hope this helps...
    Regards,
    Amatu Allah

  • Disabling radio buttons in multi record block

    Need to be able to disable/enable one or more radio buttons in a group dynamically in multiple record block. Tried setting enabled properties but it sets for all records in the block. At the very least, I need to reset an item using radio to previous value if setting is invalid but when-radio-changed has already set value. Thank you.

    Your one row record has 5 items, then I assume empno, ename, ssn, phone, deptno 5 items on your multi-record block.
    you entered first row record as,
    empno, ename, ssn, phone, deptno
    100 John Smith 123-45-9999 234-333-9999 2
    101 Al Brown 222-34-1111 123-456-7890 2(duplicated)
    You want your code to duplicate the second deptno record as 2 instead of typing in, right?
    If so, then you add KEY-NEXT-ITEM trigger on item :phone, inside put,
    go_item('deptno');
    duplicate_item;
    It will copy the first deptno record 2 for the second record as showed above.

  • How to get the original record Number in Multi-Record Block

    Hello Everyone,
    I know how to find the duplicate item in the multi-Record block,
    For Ex:
    Line_Num            Item_Name             Quantity
    1                           AA                      10
    2                           BB                      20
    3                           AA Here 3rd record Item_name is duplicated, I can able to check and display the message that 'Item is duplicated' ,I found from [sheikyerbouti.developpez.com/duplicates/duplicates.htm] .
    but I want to show along with original line number i.e 1 when the item_name is entered .
    Here I want to check the original Line_Num and want to display the message
    'Item is duplicated,Update quantity in Original Line 1'
    Can anyone help me to get this?
    Thank You.
    Regards,
    Guru.

    Hi Francois,
    Actually I want to check and show the message when the item_name is entered i.e WHEN-VALIDATE-ITEM TRIGGER.
    I put the following code in WHEN-VALIDATE-ITEM TRIGGER
    Declare
         curnum number;
         dupnum number;
         cur_item varchar2(100);
         v_alert_no number;
         p_linerec varchar2(100);
    Begin
    curnum := TO_NUMBER(:System.Trigger_Record);
    cur_item := :Lines.Item_number;
    First_Record;
    p_linerec := :Lines.Item_number;
    LOOP
    If p_linerec = cur_item then
         dupnum := :Lines.Line_num;
         set_alert_property('ALERT_STOP',ALERT_MESSAGE_TEXT,
    'Duplicate Item Found,Update QTY in Original line number '||dupnum);
       V_ALERT_NO := show_alert('ALERT_STOP');
       :LINES.ITEM_NUMBER := NULL;
    :LINES.ITEM_DESCRIPTION:= NULL;
    :LINES.ITEM_REVISION:= NULL;
    :LINES.ITEM_CATEGORY:= NULL;
    elsIF (:System.Last_Record = 'TRUE') THEN
         Go_Record(curnum);
         EXIT;
      ELSE
         Next_Record;
      END IF;
    END LOOP;
    End; But I am getting the following error,
    FRM-40737:Illegal Restricted Procedure
    FIRST_RECORD in WHEN-VALIDATE-TRIGGERand then
    its showing for first line itself.
    Duplicate Item found.Update QTY in Original line number 1so I put the condition
    If :Lines.Line_num > 1 then --Only to check when the block having more than one record.but now it checking from second record and displaying,
    Duplicate Item found.Update QTY in Original line number 2 --(instead of Update QTY in Original line number 1)Can you tell me how can I change the above code for my requirement?
    Thank you.
    Edited by: Gurujothi on 27 Mar, 2013 5:20 PM

  • How to do validation on multi record block at run time...

    Dear Friends,
    I have to do validation at run time on multi record block.
    If user tries to enter and save two or more records in same multi record block with same data at run time, it should not allow it and display a message like, " error : Records are having same(duplicate) values. "
    I already did validation with the data coming from database table using cursor. But confused about how to do at run time(on one screen only) ??
    Please, give details about how to check duplicate records on form block before saving it to the table ????
    Regarding details would be greatly helpful.
    thanks,

    Hi...Pankaj
    thanx for your reply..
    I already did validation for the data coming from table....
    but I need to do it on form only...at run time...
    exa...
    In one multi record block
    record no : column 1 : column 2 : column 3
    1 abc 123 hi
    2 abc 123 hi
    so it should check on the form itself, here I m not getting data from table...I am just
    navigating from first record to second using down arrow.
    so, may be 2 possibilities.
    1) when user navigates using tab to third record, it should say like two duplicate records.(may be like when validate record or item)
    2) or when user tries to save, it should say two duplicate records.
    so, everyting should take place on form screen only.....
    waiting for your reply,
    thanx...

  • Populate multi record display item

    Hellou gurus!
    I have forms 10g and i need to populate display item in enter query mode. My problem is that I have table T1 with some static values. Table T2 is through ID connected (reference) to table T1 1:1 cardinality and T2 table also have reference to T3 table.
    I have block B2 based on table T2 and in this block I have multirecord item for inserting and updating new values for T2, but in this block ii also have no DB, multi record display item (because i don't want to allow editting in T1 table records) for diplaying static values for table T1. I want to display all static values from T1 next to the editable values in T2 (T2 multi record field is not insert yet). I tried for loop, select into but it not work. T1 values need to be selected before I started to inserting values into T2 items, but off course they need to be referenced It is hard to explain but i belive you understand.
    Can you help me how I can populate multi record item??

    You have to write the code again for your second list item....
    group_id RecordGroup;
    list_id Item  := Find_Item('button.tyear');
    list_id1 Item  := Find_Item('button.tperiod');
    status NUMBER;
    rg_name varchar2(40) := 'recgroup';
    BEGIN
    ----------------------------- LIST
    clear_list(list_id);
    group_id := Find_Group(rg_name);
    IF NOT id_null(group_id) then
        Delete_Group(group_id);
    End if;
    group_id := Create_Group_From_Query(rg_name,
    'select vm_year, vm_year from fwqgl.vouchermaster
    group by vm_year');
    status := Populate_Group(rg_name);
    Populate_List(list_id, group_id);
    /* --------------------SECOND LIST ITEM...BUT REC. GRP NAME CAN BE SAME,better to use another name if you need to retrieve list and store qry..other wise the fol. code is enuf-----------------------*/
    clear_list(list_id1);
    group_id := Find_Group(rg_name);
    IF NOT id_null(group_id) then
        Delete_Group(group_id);
    End if;
    group_id := Create_Group_From_Query(rg_name,
    'select vm_period, vm_period from fwqgl.vouchermaster
    group by vm_period');
    status := Populate_Group(rg_name);
    Populate_List(list_id1, group_id);
    END;Edited by: Dora on Dec 5, 2009 10:41 AM

  • Dynamic update if multi-record list item.

    I have a bunch of multi-record list items whose poplist I need to update with queried data at the WHEN-NEW-ITEM-INSTANCE triggers,
    At NEW-FORM-INSATNCE trigger I queried and filled all the poplists with no problem. The problem occurs at the WHEN-NEW-ITEM-INSTANCE triggers.
    I have a clear_list() before each add_list_element() from a runtime record group. The problem is that the poplists at the cursor record is updated correctly, when I click on the same list item at other records, the list repeats -- meaning (probably) it was not cleared before being populated. Is there a way to either (1) just populate the list item of the current record, or (2) clear all records of a list item before all records are populated.
    I tried copy( NULL, current_ilist ) where current_ilist is the item name before add_list_element(), but I got errors because the list items are required fields. Besides, the item has queried data in it.
    I'm thinking about changing the item property to optional, save the item value, set it to NULL, populate its poplist, restore it's original value and then change the item property back to "required'. I don't know if it would work but is there a more elegant way of doing it?
    Any suggestion will be appreciated.

    Hello All,
    Just in case nobody saw this, thought i might post it again.
    would abybody have any pointers,
    easo

  • Image item in multi-record block - PLEASE SOMEONE HELP !

    Hello everyone.
    I have a multi-record block with an image item that is not in teh table, is populated in the post-query trigger with a read_image_item, from a gif file. This block is child of another block. The problem is that the first records of the block, the ones that fit on the screen, are not showing the image properly, the image appears grey, distorted. In reality, the image dont adjust to the size of the item, as it is especified in the properties. When i scroll down, the rest of records show the image perfect, but this ones still are distorted.
    Forms is 6.0.8.22.1, over oracle 9i. Thank you all in advance.

    hello
    just me what is datatype of ur image record ?

  • Image item in multi-record block

    Hello everyone.
    I have a multi-record block with an image item that is not in teh table, is populated in the post-query trigger with a read_image_item, from a gif file. This block is child of another block. The problem is that the first records of the block, the ones that fit on the screen, are not showing the image properly, the image appears grey, distorted. When i scroll down, the rest of records show the image perfect, but this ones still are distorted.
    Forms is 6.0.8.22.1, over oracle 9i. Thank you all in advance.

    hello
    just me what is datatype of ur image record ?

  • Get the first item value of previous record in a multi record block

    Hai,
    I have a multi record block with four items.I should get the first item value of the previous record so that I can increment its value in the current record.
    Thanks.........

    If you want a distinct value in each row or to be able to retrieve the records in the same order they were written then you should use a sequence.
    If you want to retrieve the records in the same order they were created in the block then you will need a diffferent solution to the one you outline here since a user could enter a new record between two others.
    I posted this a while back in response to someone who was using a sort_key item and resetting it for each row when a new record was inserted:
    If you make the sort_key bigger then you have much more room to insert new rows in between existing rows without having to reset all the sort_keys.
    Eg. you have rows with sort_keys of 129282000000000000 and 129283000000000000 (you can have more zeros if you want) and you want to insert a row in between. if you're using oracle forms then the user would have to click on the first of these rows and then do 'insert'. in your insert process you would store the sort keys of the current record and the one below, create a blank record in between and set the sort_key of that record to the average of the other two. you will be able to insert many new rows in between the original 2 before running out of space in the sort_key field.
    the method above is not sufficient, there are some other cases to consider:
    1) when the user is on the last record of the block then you will just create a new record with sort_key set to a greater number than the row before. you can have the sort_key defined as number(38) and to safely allow you to enter 1000 rows each new row would normally be 10E33 greater than the previous one.
    2) when the user is entering the first record then just set the sort_key to 10E33.
    3) on the off-chance that you do insert a great number of records and cannot insert another in between then you would need to alert the user, process the records so that the sort_keys are evenly spaced and requery the block. this processing could be scheduled nightly to make this eventuality even less likely.
    4) make sure the user cannot run the default 'clear_record' procedure. this would break my method as well as yours!
    James.

  • Duplicate item value in a Multi-Record Block

    Is there a way to chek duplicate value entered in multi record block?
    I have seen some solutions in this forum however nothing has worked for me till now. (using the formula, creating hidden items & creating group etc)
    Thanks in advance,

    To see if there are any other records in the block with the same value, use Kevin Clark's famous function to trap duplicates. You can find Kevin's function write up here:
    Re: checking for same rows in a tabular
    From Kevin's post:
    Create a field PK_COPY in a control block.
    Create program unit function COMPARE to compare two input params returning 1 if they match else 0.
    Create a field in the datablock PK_MATCH, calculation property formula, formula COMPARE(:DATA_PK, :PK_COPY)
    Create a field in the control block NO_OF_MATCHES, calculation property summary, summary type SUM, summarised
    item PK_MATCH.
    Also, your control block requires the Single Record property set to yes, and the base table block requires the Query All Records property set to yes.
    WHEN-VALIDATE-ITEM on DATA_PK
    :CONTROL.PK_COPY := :DATA_PK;
    if :NO_OF_MATCHES > 1 then
      message('You have already used that one');
      Raise form_trigger_failure;
    end if;

Maybe you are looking for