How to re-query changed record in multi-row block after update in a called form

Hi,
I have a form that I use to perform searches, which is a multi-record block.
The user can navigate to a record, press a button on call another form which provides
more detail, and allows update of the record.
If the user changes it, and returns to the original search form, how can I re-query the
changed record to update the fields on the search form.
Is there a way other than to re-query the
whole block - a built-in to just update on record if it's changed on the database.
If not, can I use globals to pass back the data (since only a few fields are updatable),
and change the record without effecting its forms status.
Many thanks
Bernie

BD,
I haven't managed to look at a solution yet, but the block is a large multi-row block,
with an ORDER BY, and since it can return a large number of records, there is a short
delay. I was hoping there was a way of just
re-querying the one record, which was displayed
in the second form for update.
I'll give the query a go, or might try and pass back some globals with the update values.
By the way, DML Return Value is an excellent feature, but only works against Oracle 8.
It basiclly adds the RETURNING clause to any DML statement (see SQL manual), so that if
a trigger changes/adds values you didn't provide, it will return them back to you
so the values in your form are correct.
I use a trigger on the DB to populate history fields (create/update,who/when) and
the PK sequence. Using this feature, those values are returned to the block and displayed.
Regards
Bernie

Similar Messages

  • Dynamically Changing Labels for Multi Row Block Buttons

    Forms [32 Bit] Version 9.0.4.1.0 (Production)
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
    On my local: Windows 7 OS
    I am having a difficult time in doing the following in forms, and not sure if it can be done?
    I have a multi row block,based on DB table, which displays filename and another column from the table.
    It also has a push button on each row, which opens and displays the physical file from its source, when clicked. The filename thus can have 3 diff statuses depending on its sources and accordingly corresponding button should display appropriate label:
    a) View Image (its is in content server and successfully imaged. In this case I display the file in the browser, from the content server, when the button is clicked)
    b) View File (Display the file from file system)
    c) View Error (Display imaging error message from the table, as file failed to make it to the imaging server)
    I have this logic currently coded in the post query trigger, at the block level, and tried using set_item_property(button_id, label, <button_lable>), where I programmatically set the button lable, based on the file status (imaged, not imaged or has error) in that row. This wroks well, only if all the files in the multi row block have the same status. If each of them have diff statuses, then only last processed files's status gets reflected into the button label. For eg: The file in the first row of the block is imaged, and one in the second row has an imaging error. The button label for the first row should say 'View Image' and button for the second row should say 'View Error'. But now buttons for both the rows display 'View Error', as thats what got processed last!
    I __can not use set_item_instance property for 'label'__ (which lets us dynamically change the label on the push buttons).
    Is there any way to do this for ORacle forms? I am now playing with having 3 diff button items in that block, laying them on top of each other and showing only those that are appropriate and hiding the others... But I am not sure it is going to give me what I need? I think I am going to end up facing the same issues as in above case!!
    Any expert advice is highly appreciated.
    Thanks in advance for your time:
    Libran_Girl
    Edited by: libran on Aug 30, 2011 8:04 AM
    Edited by: libran on Aug 30, 2011 8:05 AM

    <p>I have just updated this existing PJC, that was originally constructed to handle Text Fields. You can, now, also handle buttons with it.
    Set the Button's Implementation Class property to : oracle.forms.fd.MultiButton.
    </p>
    This is the code you have to put one triggers of your based block:
    When-New-Record-Instance trigger: (based on the EMP table)
    declare
         LN$Pos  pls_integer ;
         LN$Rec  pls_integer := Get_Block_Property('EMP', CURRENT_RECORD) ;
         LN$Max  pls_integer := Get_Block_Property('EMP', RECORDS_DISPLAYED) ;
         LC$C    Varchar2(15) ;
    Begin     
         LN$Pos :=  LN$Rec - (trunc(LN$Rec/LN$Max) * LN$Max) ;
         If LN$Pos = 0 Then LN$Pos := LN$Max ; End if ;
         If LN$Pos > 0 Then
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_LOG', 'true' );
              -- Add the new item --
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_NEW_REC', to_char(LN$Rec) );
              -- Set some properties --
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_LABEL', to_char(LN$Rec) || ',' || :EMP.ENAME );
              If :EMP.JOB = 'MANAGER' Then
                Set_Custom_Property('EMP.BT', LN$Pos, 'SET_FONT', to_char(LN$Rec) || ',Arial,bold,14' );
                Set_Custom_Property('EMP.BT', LN$Pos, 'SET_FGCOLOR', to_char(LN$Rec) || ',0,0,255' );
              End if ;
              If :GLOBAL.I > 250 Then :GLOBAL.I := 5 ;
              Else  :GLOBAL.I := :GLOBAL.I + 5 ;
              End if ;     
              LC$C := To_Char(LN$Rec) || ','
                   || To_Char(255) || ','
                   || To_Char(255-:GLOBAL.I) || ','
                   || To_Char(255-:GLOBAL.I) ;    
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_BGCOLOR', LC$C );
              Synchronize;
         End if ;
    end;When-Create-Record trigger:
    declare
         LN$N    pls_integer ;
         LN$Rec  pls_integer := :system.cursor_record ;
         LC$C    Varchar2(15) ;
    Begin     
         if get_block_property('EMP',TOP_RECORD) > 1 Then
              LN$n := :system.cursor_record - get_block_property('EMP',TOP_RECORD) + 1 ;
         else
              LN$N := :system.cursor_record ;
         end if;
         If LN$N > 0 Then
              Set_Custom_Property('EMP.BT', LN$n, 'SET_LOG', 'true' );
              -- Add the new item --
              Set_Custom_Property('EMP.BT', LN$n, 'SET_NEW_REC', to_char(LN$Rec) );
         End if ;
    end;Post-Query trigger:
    declare
         LN$Pos  pls_integer ;
         LN$Rec  pls_integer := Get_Block_Property('EMP', CURRENT_RECORD) ;
         LN$Max  pls_integer := Get_Block_Property('EMP', RECORDS_DISPLAYED) ;
         LC$C    Varchar2(15) ;
    Begin     
         LN$Pos :=  LN$Rec - (trunc(LN$Rec/LN$Max) * LN$Max) ;
         If LN$Pos = 0 Then LN$Pos := LN$Max ; End if ;
         If LN$Pos > 0 Then
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_LOG', 'true' );
              -- Add the new item --
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_NEW_REC', to_char(LN$Rec) );
              -- Set some properties --
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_LABEL', to_char(LN$Rec) || ',' || :EMP.ENAME );
              If :EMP.JOB = 'MANAGER' Then
                Set_Custom_Property('EMP.BT', LN$Pos, 'SET_FONT', to_char(LN$Rec) || ',Arial,bold,14' );
                Set_Custom_Property('EMP.BT', LN$Pos, 'SET_FGCOLOR', to_char(LN$Rec) || ',0,0,255' );
              End if ;
              If :GLOBAL.I > 250 Then :GLOBAL.I := 5 ;
              Else  :GLOBAL.I := :GLOBAL.I + 5 ;
              End if ;     
              LC$C := To_Char(LN$Rec) || ','
                   || To_Char(255) || ','
                   || To_Char(255-:GLOBAL.I) || ','
                   || To_Char(255-:GLOBAL.I) ;    
              Set_Custom_Property('EMP.BT', LN$Pos, 'SET_BGCOLOR', LC$C );
              Synchronize;
         End if ;
    end;Don't forget to copy the multirecord.jar file in your /forms/java folder, then add it to the archive and archive_jini tags of your /forms/server/formsweb.cfg file.
    Enjoy it,
    Francois

  • How can I handle data in a multi row block?

    Hi all,
    I have a form which contain a multi row block.
    I put data in that block. Suppose that in the second column of
    that block data no changes.I want to fill only the first cell of
    the column and all the cells below first cell ( header) inherits
    that value.
    Example :
    Block1
    ITEM1 ITEM2
    rec1 1 1999
    rec2 2
    rec3 3
    When I insert in the table rec2 I want :
    INSERT INTO(col1,col2) VALUES)(2,1999)!!!.
    Best Regards !
    null

    vali (guest) wrote:
    : Hi all,
    : I have a form which contain a multi row block.
    : I put data in that block. Suppose that in the second column of
    : that block data no changes.I want to fill only the first cell
    of
    : the column and all the cells below first cell ( header)
    inherits
    : that value.
    : Example :
    : Block1
    : ITEM1 ITEM2
    : rec1 1 1999
    : rec2 2
    : rec3 3
    : When I insert in the table rec2 I want :
    : INSERT INTO(col1,col2) VALUES)(2,1999)!!!.
    : Best Regards !
    Mr. Vali,
    I suppose you want to enter ITEM2 value only in first record and
    duplicate that value in subsequent records automatically. There
    are couple of methods to accomplish this and the following is one
    of them:
    Add this code in WHEN-NEW-RECORD-INSTANCE trigger for block1.
    IF :SYSTEM.RECORD_STATUS ='NEW' AND :SYSTEM.CURSOR_RECORD > 1
    THEN
    IF :ITEM2 IS NULL THEN
    GO_ITEM('ITEM2');
    DUPLICATE_ITEM;
    GO_ITEM('ITEM1');
    END IF;
    END IF;
    good luck
    null

  • HOW TO MAKE CHECK BOXES EXCLUSIVE IN MULTI ROW BLOCK

    Hi,
    I have a multi row block with one item as check box.It is
    required that at a time only one record can be marked as
    selected through this item. If user marks a record as selected
    the previous selected record should be marked as deselected.
    How i can make these check boxes mutually exclusive ?
    can anybody help me?
    Thanks in Adv
    Sharath.
    null

    SHARATH (guest) wrote:
    : Hi,
    : I have a multi row block with one item as check box.It is
    : required that at a time only one record can be marked as
    : selected through this item. If user marks a record as selected
    : the previous selected record should be marked as deselected.
    : How i can make these check boxes mutually exclusive ?
    : can anybody help me?
    : Thanks in Adv
    : Sharath.
    Hi
    The check box can not be mutually exclusive.
    This is a basic functionality.
    You convert this item type into radio button.
    It will satisfy your requirements.
    Jeya Raman R
    null

  • Overflow-field in multi-rows block

    Hi!
    How can i realize overflow-field in multi-rows block.
    I place overflow fields in the footer area of block
    and get value use ${uix.current['Description']} - but no have results.
    Use javascript to set value of overflow-field?
    thanks

    Andreas,
    I was most intrigued by your offered solution, so I created a test case. Unfortunately, this solution gives inconsistent results. Here was my test case:
    1. Table: Planets
    Columns: 3 (PL_ID, Name, Description
    2. Added nine entries for all 8 planets and one record for Pluto (sorry, grew up with this being classified as a planet! :) )
    3. Created very basic form to display all 3 columns in Tabular (Multi-Record) format and displayed 5 rows.
    4. Created button in a Control Block to display Cursor_Record, Trigger_Record and Top_Record
    - Set Mouse & Keyboard navigate to NO
    Ran Form and navigated to each row and clicked on button. The following was my results:
    >
    Row 1: Cursor Rec: 1, Trig Rec: 1, Top Rec: 1
    Row 2: Cursor Rec: 2, Trig Rec: 2, Top Rec: 1
    Row 3: Cursor Rec: 3, Trig Rec: 3, Top Rec: 1
    Row 4: Cursor Rec: 4, Trig Rec: 4, Top Rec: 1
    Row 5: Cursor Rec: 5, Trig Rec: 5, Top Rec: 1
    Row 6: Cursor Rec: 6, Trig Rec: 6, Top Rec: 2
    Row 7: Cursor Rec: 7, Trig Rec: 7, Top Rec: 3
    Row 8: Cursor Rec: 8, Trig Rec: 8, Top Rec: 4
    Row 9: Cursor Rec: 9, Trig Rec: 9, Top Rec: 5
    Row 10: Cursor Rec: 10, Trig Rec: 10, Top Rec: 6 - New Record - NULL values
    - Navigated back to Row 6: Cursor Rec: 6, Trig Rec: 6, Top Rec: 5 (however - visually in the screen Row 6 was the 2nd row of the 5 rows displayed.
    - Navigated back to Row 3: Cursor Rec: 3, Trig Rec: 3, Top Rec: 3 (however - visually in the screen Row 3 was the 1st row of the 5 rows displayed.
    >
    Based on these results, the option to use the GET_BLOCK_PROPERT('BLOCK_NAME',TOP_RECORD) won't work either. :-( Unforntunately, displaying the MCHAR field in a static location or using Java (though hardest) are still the best solutions.
    Craig...

  • How can we get changed records in delta in case of numeric pointer

    Deall All,
    Thanks to all of you gurus i have been able to Get delta update for my query.
    There is one last issue how can i include changes records in my delta update when i am using numeric pointer for data selection.
    or
    It can only be doen by time stamp.
    can you explain me details of using time stamp.
    Thanks & regards,
    Gaurav Sood

    Dear Gaurav,
    Here we have three options for delta updation:
    Time Stamp:   If we want to update change in the records with respect to the time interval then this option is selected.
    Calend. Day:   If we want to update change in the records with respect to day to day basis then this option is selected.
    Numeric Pointer:  If we want to update in case of record which is completely new with respect to Field name then we use this option.
    And we have got some settings like:
    Safety Interval upper limit:
    This field is used by Data Sources that determine their delta generically using a repetitively-increasing field in the extract structure.
    The field contains the discrepancy between the current maximum when the delta or delta init extraction took place and the data that has actually been read.
    Leaving the value blank increases the risk that the system could not extract records arising during extraction.
    Example: A time stamp is used to determine the delta. The time stamp that was last read is 12:00:00. The next delta extraction begins at 12:30:00. In this case, the selection interval is 12:00:00 to 12:30:00. At the end of extraction, the pointer is set to 12:30:00.
    A record - for example, a document- is created at 12:25 but not saved until 12:35. It is not contained in the extracted data but, because of its time stamp, is not extracted the next time either.
    For this reason, the safety margin between read and transferred data must always be larger than the maximum length of time that it takes to create a record for this DataSource (with a time stamp delta), or it must display an interval that is sufficiently large (for determining delta using a serial number).
    Safety Interval Lower Limit
    This field contains the value taken from the highest value of the previous delta extraction to determine the lowest value of the time stamp for the next delta extraction.
    For example: A time stamp is used to determine a delta. The extracted data is master data: The system only transfers after-images that overwrite the status in the BW. Therefore, a record can be extracted into the BW for such data without any problems.
    Taking this into account, the current time stamp can always be used as the upper limit when extracting: The lower limit of the next extraction is not seamlessly joined to the upper limit of the last extraction. Instead, its value is the same as this upper limit minus a safety margin. This safety margin needs to be big enough to contain all values in the extraction which already had a time stamp when the last extraction was carried out but which were not read. Not surprisingly, records can be transferred twice. However, for the reasons above, this is unavoidable.
    Data Source Is Real-Time Enabled
    The 'real time enabled' indicator determines whether a delta-enabled Data Source can be used as a supplier of data for a real-time daemon.
    And there are two options provided like
    1)     New Status for changed records:
    If you select this option each record to be loaded delivers the new status for the key figures          and characteristics. DataSources with this delta type can write to ODS objects or master data tables.
    2)     Additive Delta:
    The key figures for extracted data are added up in BW. Data Sources with this delta type can supply data to ODS objects and Info Cubes.
    Hope this helps u..
    Best Regards,
    VVenkat..

  • How we can load change record in cube.

    Hi,
         How we can load change record in cube, (delta)
         i need step by step in sap BI 7.0.

    Hi Nitin
    I hope you are asking about delta loads, if your datasource supports deltas then you can do only changed records from source to cube. To see the details goto ROOSOURCE table in ECC and find.
    For further help search in SDN and help.sap.com, you can find n number of postiings about the same.
    Thanks
    Reddy

  • How to calculate total in multi-row block

    How can I calculate and display the total amount in a multi-row
    block that records are not yet save into database?
    null

    Kanekan (guest) wrote:
    : How can I calculate and display the total amount in a multi-
    row
    : block that records are not yet save into database?
    Hi,
    I worked with similar type of requirement. If you are
    working with Forms5.0 there is a new property of formula/summary
    in property palette of text item. In the same block or in
    control block create non database item( It's non base table item
    in forms4.5). In it's property palette give the data type as
    number and set the source item name and set summary property.(
    opetions are max,min,sum etc available). This value will change
    when you navigate from the source item( I mean after validation).
    I think this is informative.
    Nag
    null

  • Dynamic visual attributes/multi-row blocks

    We're using Headstart, Des2k V6.0.3.8. If you set preference CURREC = multi record block, you get the current record visual attribute (cg$current_record) attached to all displayed items in multi-row blocks. From the Headstart object library, these items also inherit a visual attribute of qms$item_font.
    At runtime, Headstart code is invoked from the block's post-query trigger - this code dynamically assigns a readonly visual attribute to all items that are insert only, or the qms$item_font va to items that are update only. (Incidentally, it seems a bit strange that no va is assigned to items that are neither insertable nor updateable).
    Assigning the va in this way seems to override the current record va for these items, which looks a little strange at runtime. I would prefer to see the current record va overriding the readonly/item_font va. In a future Headstart release, it would be nice if this functionality was configurable, but in the meantime can you suggest the easiest way of making this change to the Headstart code? I think it will be necessary to specifically set the va to stnd/readonly/current record in the when-new-record-instance trigger, & reset it on the post-record trigger. Once va's are being set dynamically, the current record attribute is pretty useless in multi-row blocks.
    Incidentally - we've also changed the behaviour of va's in query mode processing. We wanted the query mode va to override the current record va; qms$record.highlight_items wasn't setting the selected va unless items have a current record attribute of DEFAULT. We wanted query mode to look the same regardless how many rows are in the block; it also looked a little odd in a multi-row block with overflow items, where the overflow items were being highlighted but the rest of the block wasn't. It would be nice if this was also a configurable option.

    Cheryl,
    Good point! It does look a bit odd. I'll take this into consideration for HSD6i.
    To customize your app, try the following.
    Copy qms$event_data_block from qmsevh50.pll to your application library.
    Copy procedure set_nav_items_exg_record from the qms$record package in qmslib50.pll to your application library -AND GIVE IT A NEW NAME- like set_nav_items_custom.
    Change your copy of qms$event_data_block to call this new procedure in the post-query event.
    Modify set_nav_items_custom as follows.
    ============================================
    procedure set_nav_items_custom
    ( p_block in varchar2
    , p_recno in number default current_record
    is
    l_rg_id recordgroup;
    l_rgc1_id groupcolumn;
    l_rgc2_id groupcolumn;
    rg_rows number;
    l_item_flag varchar2(1);
    l_item_name varchar2(100);
    l_first_io_item varchar2(100);
    begin
    qms$block.init_block_rg
    ( p_block,false,l_rg_id,l_rgc1_id,
    l_rgc2_id, rg_rows);
    if id_null(l_rg_id)
    then
    -- no insert-only or update only items
    -- in block
    return;
    end if;
    for j in 1..rg_rows loop
    l_item_name := get_group_char_cell
    (l_rgc1_id, j );
    l_item_flag := get_group_char_cell
    (l_rgc2_id, j );
    if l_item_flag = 'I'
    then
    if l_first_io_item is null
    then
    l_first_io_item := l_item_name;
    end if;
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    set_item_instance_property
    ( l_item_name,p_recno,navigable
    , property_false);
    /* customization */
    if get_item_property(l_item_name
    , current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    /* end customization */
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$user_prefs.get_va_readonly_item);
    /* customization */
    end if;
    /* end customization */
    else
    -- Item is update-only, insert not
    -- allowed */
    set_item_instance_property
    (l_item_name,p_recno
    ,navigable,property_true);
    /* customization */
    if get_item_property(l_item_name
    ,current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    /* end customization */
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$config.get_stnd_font);
    /* customization */
    end if;
    /* end customization */
    end if;
    end loop;
    -- 18-1-1999: If block only contains no
    -- updatebale items, there are navigable
    -- items left.
    -- If this is the case make first
    -- insert-only item navigable again.
    if get_block_property(p_block,enterable) =
    'FALSE'
    then
    if l_first_io_item is not null
    then
    set_item_instance_property
    (l_first_io_item,p_recno
    ,navigable,property_true);
    end if;
    end if;
    exception
    when form_trigger_failure then raise;
    when others then
    qms$errors.unhandled_exception
    ('qms$block.set_mav_items_custom');
    end set_nav_items_custom;
    ============================================
    Next, as you suggested, add WHEN-NEW-RECORD-INSTANCE and POST-RECORD triggers to handle movement from one record to the next.
    WHEN-NEW-RECORD-INSTANCE
    ============================================
    procedure set_nav_items_wnri
    ( p_block in varchar2
    , p_recno in number default current_record
    is
    l_rg_id recordgroup;
    l_rgc1_id groupcolumn;
    l_rgc2_id groupcolumn;
    rg_rows number;
    l_item_flag varchar2(1);
    l_item_name varchar2(100);
    begin
    qms$block.init_block_rg
    ( p_block,false,l_rg_id,l_rgc1_id,
    l_rgc2_id, rg_rows);
    if id_null(l_rg_id)
    then
    -- no insert-only or update only items
    -- in block
    return;
    end if;
    for j in 1..rg_rows loop
    l_item_name := get_group_char_cell
    (l_rgc1_id, j );
    l_item_flag := get_group_char_cell
    (l_rgc2_id, j );
    if l_item_flag = 'I'
    then
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    if get_item_property(l_item_name
    , current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$user_prefs.get_va_readonly_item);
    else
    set_item_instance_property
    (l_item_name,p_recn o
    ,visual_attribute
    ,get_item_property(l_item_name
    , current_record_attribute));
    end if;
    else
    -- Item is update-only, insert not
    -- allowed */
    if get_item_property(l_item_name
    ,current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$config.get_stnd_font);
    else
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,get_item_property(l_item_name
    , current_record_attribute));
    end if;
    end if;
    end loop;
    exception
    when form_trigger_failure then raise;
    when others then
    qms$errors.unhandled_exception
    ('qms$block.set_mav_items_wnri');
    end set_nav_items_wnri;
    ============================================
    For the POST-RECORD trigger, you will have to modify your object library since this trigger is not included by default. Add the trigger to the object library CGSO$BLOCK_MR.
    Then add the POST-RECORD event to your copy of qms$event_data_block.
    Finally, add a procedure for the POST-RECORD trigger.
    ============================================
    procedure set_nav_items_pr
    (p_block in varchar2
    ,p_recno in number default current_record
    is
    l_rg_id recordgroup;
    l_rgc1_id groupcolumn;
    l_rgc2_id groupcolumn;
    rg_rows number;
    l_item_flag varchar2(1);
    l_item_name varchar2(100);
    l_first_io_item varchar2(100);
    begin
    qms$block.init_block_rg
    ( p_block,false,l_rg_id,l_rgc1_id,
    l_rgc2_id, rg_rows);
    if id_null(l_rg_id)
    then
    -- no insert-only or update only items
    -- in block
    return;
    end if;
    for j in 1..rg_rows loop
    l_item_name := get_group_char_cell
    (l_rgc1_id, j );
    l_item_flag := get_group_char_cell
    (l_rgc2_id, j );
    if l_item_flag = 'I'
    then
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    if l_item_flag = 'I'
    then
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$user_prefs.get_va_readonly_item);
    else
    -- Item is update-only, insert not
    -- allowed
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$config.get_stnd_font);
    end if;
    end loop;
    exception
    when form_trigger_failure then raise;
    when others then
    qms$errors.unhandled_exception
    ('qms$block.set_mav_items_pr');
    end set_nav_items_pr;
    ============================================
    Regards,
    Lauri

  • Multi row block record_group or cursor?

    I've done a lot of research on the Forms OTN forum and can't find a solution to this problem. I'll continue to research until an answer is posted to this thread. I've used the forms forums and Metalink for years and they've been a great help.
    My problem -
    I have a multi-row block built off a view. Each row has a check box. The canvas also has a button. When the button is pressed, each record checked will be processed. The problem is, I need to sort the data selected (checked) before it's processed. To complicate matters, the sort criteria is not in the view. My plan was to build a cursor off the block, but I'm having problems populating due to the multi-row aspect.. I also tried building a record_group but again ran into complications with it being multi-row. I'm not sure which method to use since I haven't found a clear-cut solution.
    btw - using 10gR2.
    TIA,
    abc

    AB, you're sure not very clear on this.
    Aweiden has the correct suggestion: Create a PL/SQL table in the form, rather than a record group.
    Here are the steps I would follow:
    1. User queries and displays the data, and then checks some checkboxes. Do not use a when-checkbox-changed trigger, since they can check, then un-check boxes.
    2. When user presses the process button, loop through the block as Aweiden has done above. However, I would call a procedure from within the loop to look up the values from the Mel_Item table. Store the values returned from the procedure within your pl/sql table, adding one row to the table for each row in your block that was checked.
    As a side note, how difficult is it to join the Mel_Item table with your view when you query the block? You could store those sort values from Mel_Item along with the data from the view.
    3. Once you are done processing the data block loop, sort the pl/sql table. (Maybe I can find the code lying around here somewhere, but a table sort like that can be coded in maybe 20 lines).
    I am not sure, but are you saying above ("...insert each row into another table (other information is different so its not duplicate rows entirely)...") that you are inserting the data from the user-checked rows into a database table? That is certainly easier to do than writing your own sort, I guess.
    4. After the pl/sql table is sorted, loop through it one more time, processing the data in the required sequence.
    Actually, pl/sql table processing is quite fast. You don't really need to sort the rows. All you need do is to step through the table checking for the first row to process (by finding the lowest value of the sort items). Process that row's data, then remove (delete) it from the table, then repeat the process until you have processed and removed every row from the array. I believe I would use this method rather than trying to sort the pl/sql table, OR inserting into a database table.
    Edited by: Steve Cosner on Oct 23, 2008 10:39 PM

  • Multi-row block with many image-java-beans

    Hi, I want to create a multi-row block based on a table, e.g. emp with 5 records.
    Then I want to add 5 java-bean images in the same block. Now I want to read from the db-table emp the blob-column with the image of the corresponding empno. Is this possible? How can I do this? Can someone give me a sample for this?
    Thanx Bea

    Hi John, by running the scipts this message occurs:
    [sql] Executing file: C:\Programme\Oracle\JDev11g\samples\Infrastructure\DBSchema\Scripts\DataScripts\DISCOUNTS_BASE.sql
    [sql] Executing file: C:\Programme\Oracle\JDev11g\samples\Infrastructure\DBSchema\Scripts\DataScripts\MEMBERSHIPS_BASE.sql
    [sql] Executing file: C:\Programme\Oracle\JDev11g\samples\Infrastructure\DBSchema\Scripts\DataScripts\SHIPPING_OPTIONS_BASE.sql
    [sql] Failed to execute: INSERT INTO SHIPPING_OPTIONS_BASE VALUES (1, 'US', '3.15', '11.98', '27.50', 'Y', '0', SYSDATE, '0', SYSDATE, 0)
    BUILD FAILED
    C:\Programme\Oracle\JDev11g\samples\Infrastructure\Ant\build.xml:16: The following error occurred while executing this line:
    C:\Programme\Oracle\JDev11g\samples\Infrastructure\DBSchema\build.xml:146: java.sql.SQLException: ORA-01722: invalid number
    What shall I do?
    Bea

  • How do I get my apps back on my iPhone after updating to IOS7?

    How do I get my apps back on my iPhone after updating to IOS7?

    down load past purchases
    open app store - click updates- click purchased - select category ie all or not on this device - you will see a list of apps with a cloud and a downward error.  click the cloud and they will download
    see
    http://support.apple.com/kb/HT2519
    Peace, Clyde

  • How do I get my information back on my phone after updating itunes

    how do I get my information back on my phone after updating I Tunes.  I up dated it this morning and when it was complete, all my contacts and my pics and my screen savers and sounds were from my daughters phone. I can not locate any of my information on my phone?

    All iTunes content they you have selected to be transferred to your existing iPhone - music/video/podcasts including 3rd party apps remain in your iTunes library on your computer. Photos transferred to your existing iPhone via the iTunes sync process also remain on your computer.
    If you are syncing contact info and calendar events with the Address Book and iCal on your Mac, this data also remains on your computer.
    You can sync multiple iPods and/or iPhones with the same iTunes library and iTunes account with each device having its own sync settings.
    When you connect a new iPhone to iTunes on your computer, you will be prompted to transfer the backup for another iPhone that has been synced with iTunes. After the backup for your existing iPhone is transferred to your new iPhone, this must be followed by a sync to transfer your selected iTunes content including 3rd party apps and any photos on your computer selected to be transferred to your iPhone. You select sync contacts with the Address Book and calendar events with iCal under the Info tab for your new iPhone sync preferences and this data will be transferred to your new iPhone.

  • How do i delete duplicates from my music library. After updating my iTunes the "Show Duplicates" option does not appear in the menu

    How do i delete duplicates from my music library. After updating my iTunes the "Show Duplicates" option does not appear in the menu

    If you are on Version 11.0.1 rather than 11 Apple put it back in
    View > Show Duplicates
    Option + View > Show Exact Duplicates
    so if you are on 11 upgrade to 11.0.1 and you will have it

  • Microsoft optical mice and wheel scrolling in multi-row block

    Hi.
    One part of our form is a multi-row block. It has a scroll bar and upto this point you can scroll using the wheel when your mouse is on the scroll bar or if the pointer is anywhere within the multi-row block, you can use the wheel to scroll. This works for logitech ball and optical mice, ibm ball mice and even microsoft ball mice. All of them have the wheel. We do find a problem with microsoft optical mice whether its the explorer or optical brand. The wheel mouse works when the pointer is on the scroll bar but it does not scroll if the pointer is within the multi-row block. I have spoken with Oracle and of course they say its microsofts problem. Has anyone come across this? I have contacted microsoft but no word as yet.
    Thank you,
    Jayme

    Forms has no support for the Wheel Scrolling action - if it works at all it's because the Mouse driver is clever enough to work out when it is on a ScrollBar and send the relevant Windows Events. You may find it also works in Multi-line text items.

Maybe you are looking for

  • Printing stopped working in IE11

    I have an Emachines desktop, windows 7, x64 based, and I recently upgraded to Internet explorer 11 version:11.0.9600.1658 Update version : 11.0.3 (KB2909921) Prodid: 00150-20000-00003-AA459. I have printer HP PhotoSmart D110a, printing via a connecti

  • Airport Extreme no longer recognizes external HDD

    My Airport Extreme has suddenly stopped recognizing the external HDD I have attached to it. This happened about 2 weeks ago, and has been driving me absolutely insane since (I use this HDD to store all my music, and as such have not been able to list

  • Pages document 'cannot be opened'

    I was working on a document in Pages, closed it, then reopened it, to be greeted by this error message: It hasn't happened with any other documents (yet). I called Apple Support, copied, exported to PDF, erased and installed Pages fresh, only to stil

  • 880GMA-E35 FX : ability to unlock 6 cores of 960T

    Hello, I've just bought a 880GMA-E35 FX and a Phenom X4 960T. Of course I tried to unlock the hidden cores but when enabling the core unlock in the bios, nothing happens, only 4 cores can be manually activated (not 6 as it should be). In the document

  • Audio is hot?

    What does it mean when somebody says your audio is hot? Is there any other video slang that I should be familiar with?