Number of records in a block

I have to know if a block has records to enable a button to run a process.
I tried to use something like this:
declare
cnt number := 1;
begin
go_block('my_block');
first_record;
while :system.last_record = 'FALSE'
loop
cnt := cnt + 1;
next_record;
end loop;
:ANOTHER_BLOCK.RECCOUNT := cnt; -- will hold number of records
end;
I put this code in a WHEN-VALIDATE-ITEM trigger to enable the button immediately user type in a record (MY_BLOCK has only one item)
But I get this message: Illegal restricted procedure GO_BLOCK in ...
I removed GO_BLOCK call and get: Illegal restricted procedure NEXT_RECORD in ...
and so on.
May be I have to use another type of code or have to use this code in another trigger to get this effect.
Is there some way to do that? Please some guidance
Thanks in advance
Oscar

One idea:
Create a parameter named "entries" with a default value of 0.
Then create a unvisible non-basetable-item in your multi-record block with same datatype and length like your must-ckeck-item.
At the item you want to check if a value is entered, create a WHEN-NEW-ITEM-INSTANCE trigger:begin
:b_block.unvisible_item := :b_block.your_item_to_check;
end;Create a WHEN-VALIDATE-ITEM trigger on your must check item:
begin
if
  :b_block.unvisible_item is null AND
  :b_block.your_item_to_check is NOT null
then
  :parameter.entries := :parameter.entries + 1;
elsif
  :b_block.unvisible_item is NOT null AND
  :b_block.your_item_to_check is null
then
:parameter.entries := :parameter.entries - 1;
end if;
if
  :parameter.entries > 0
then
  set_item_property ( 'b_your_block.your_mystic_disabled_button', enabled, property_true );
else
  set_item_property ( 'b_your_block.your_mystic_disabled_button', enabled, property_false );
end if;
end;May this will help.
Regards
Stauder

Similar Messages

  • Counting number of records in a data block

    hi folks,
    Simple question for you guys: How can I count number of records in a data block.
    In other words, say I have 10 detail records listed on a data block (one of my columns is a non-database item for entering a number). Now I just want to do somethin like:
    Select count(*) From <data_block> into lnRecCount
    Where <non-database column> <> 0 ;
    Can I do this in a button trigger? I can't get it to work?
    Thanks,
    bob

    You should make a routine that go through records of the block and count the records that agree with your condition.

  • Fetching the number of records in a multi-record block...

    Hi ,
    In Forms10g runtime-and in previous releases too- there is , as a message, the number of records fetched/inserted in a multi-line block such as Record:5/9. Is it possible to catch these two numbers (i mean 5 and 9 , or at least the number of records)...not only in query but in the insert mode as well...?????
    Many thanks ,
    Simon

    No, you can't capture that text, but you can write your own code to do the same thing.

  • How to find total number of records in a BDoc?

    Dear all,
    I have replicated about BP 1088 records from ISU into CRM system with block size 100. Technically on SMW01, for each successfully processed BDoc, there will be 100 records (corresponds to 100 block size). But due to some failed BDocs, not all "successfully" BDocs will have 100 records each, some may have only 1 record inside...or 30...or 88 for example. So, may i know how to find or is there a report i can look into to find the total number of records clearly shown for each of the successfully processed green status BDocs???
    Please help and points will be rewards!!
    Thank You
    Best Regards,
    CK

    I am just showing this to show how to get the rowcount along with the cursor, if the program has so much gap of between verifying the count(*) and opening the cursor.
    Justin actually covered this, he said, oracle has to spend some resources to build this functionality. As it is not most often required, it does not makes much sence to see it as a built-in feature. However, if we must see the rowcount when we open the cursor, here is a way, but it is little bit expensive.
    SQL> create table emp_crap as select * from emp where 1 = 2;
    Table created.
    SQL> declare
      2   v_cnt     number := 0;
      3   zero_rows         exception;
      4  begin
      5    for rec in (select * from (select rownum rn, e.ename from emp_crap e) order by 1 desc)
      6     loop
      7        if v_cnt = 0 then
      8           v_cnt := rec.rn;
      9        end if;
    10     end loop;
    11     if v_cnt = 0 then
    12        raise zero_rows;
    13     end if;
    14   exception
    15    when zero_rows then
    16      dbms_output.put_line('No rows');
    17   end;
    18  /
    No rows
    PL/SQL procedure successfully completed.
    -- Now, let us use the table, which has the data
    SQL> declare
      2   v_cnt     number := 0;
      3   zero_rows         exception;
      4  begin
      5    for rec in (select * from
      6          (select rownum rn, e.ename from emp e)
      7          order by 1 desc)
      8     loop
      9        if v_cnt = 0 then
    10           v_cnt := rec.rn;
    11           dbms_output.put_line(v_cnt);
    12        end if;
    13     end loop;
    14     if v_cnt = 0 then
    15        raise zero_rows;
    16     end if;
    17   exception
    18    when zero_rows then
    19      dbms_output.put_line('No rows');
    20   end;
    21  /
    14
    PL/SQL procedure successfully completed.Thx,
    Sri

  • Change number of record displayed for a single item alone

    Hi,
    I have a single data block with few items. Is it possible to make one item in the block as non-database item and make the display of record in the item alone to show multiple lines.
    i.e. All other items in the Data block shows single record, whereas this particular item should shows 10 records.
    Is this achievable?
    Or should i have to put that item in a separate data block and choose the data block property to "Number of records displayed" as 10?
    Thanks,
    Yuvaraaj.

    983448 wrote:
    Hi,
    I have a single data block with few items. Is it possible to make one item in the block as non-database item and make the display of record in the item alone to show multiple lines.
    i.e. All other items in the Data block shows single record, whereas this particular item should shows 10 records.Yes you can. But i will say re-check your design.
    Hamid
    Mark correct/helpful to help others to get right answer(s).*

  • How to set the number of records displayed at run time

    Is it possible to set the number of records displayed block property at run time? The built-in 'GET_BLOCK_PROPERTY' can retrieve the number of RECORDS_DISPLAYED. But I can't find SET_BLOCK_PROPERTY to set this property. Is there anyway I can set this property programmatically? Thanks for any suggestions!

    Bookmark Go to End
    goal: How to vary the number of records displayed in a block
    programmatically
    fact: Oracle Forms Developer
    fix:
    Block property 'Number of Records Displayed' can not be changed during runtime
    using SET_BLOCK_PROPERTY. However, it is still possible programmatically change
    the visual appearance of the form so that it creates effect of changing this
    property. To achieve such an effect follow these steps:
    1. in Forms Builder, in the multirecord block define the new set of items.
    The simplest way is to copy/paste the original item and rename created item.
    2. set properties of these new items so that they are the same as the properties
    of the original items. If these new items were copied from original items
    then properties are already the same. Modify following properties
    'Database item' on new items to value 'No'
    'Synchronize with item' to the value of the original item
    'Number of Items Displayed' to desired value.
    'Visible' to 'No'
    In other words, these new items are mirrors of original items.
    3. code event, which is meant to trigger the change in block appearance.
    This code should use SET_ITEM_PROPERTY built-in to set properties
    like 'VISIBLE', 'ENABLED', 'NAVIGABLE', 'UPDATE_ALLOWED' and others
    to desired value for items which are about to be displayed, then
    move cursor to one of these just displayed items with GO_ITEM built-in
    and then hide the previously displayed items.
    Example:
    Assume that the block is built on SCOTT.DEPT schema. Following will
    change the set of displayed items
    set_item_property('dept.mdeptno',visible,property_true);
    set_item_property('dept.mdname',visible,property_true);
    set_item_property('dept.mloc',visible,property_true);
    set_item_property('dept.mdeptno',enabled,property_true);
    set_item_property('dept.mdname',enabled,property_true);
    set_item_property('dept.mloc',enabled,property_true);
    set_item_property('dept.mdeptno',update_allowed,property_true);
    set_item_property('dept.mdname',update_allowed,property_true);
    set_item_property('dept.mloc',update_allowed,property_true);
    set_item_property('dept.mdeptno',navigable,property_true);
    set_item_property('dept.mdname',navigable,property_true);
    set_item_property('dept.mloc',navigable,property_true);
    go_item('dept.mdeptno');
    set_item_property('dept.deptno',visible,property_false);
    set_item_property('dept.dname',visible,property_false);
    set_item_property('dept.loc',visible,property_false);
    Regards,
    Monica

  • Error in ST05 - trace record pair error block. How to resolve/tackle issue?

    Hello,
    Someone approached me last week in asking me how to resolve an issue in ST05. Basically I used the transaction to filter "inclusive VBPA".
    The error is ....
    Internal error - trace record pair error block 8 link no. 0
    Message no. 0S 026
    Diagnosis
        Each SQL statement is described by two SQL trace records that have the
        same link number. In this case, there are at least three records with the
        same link number.
        The system outputs the number of the block in which the third SQL trace
        record was found, as well as the link number of the records.
    System response
        Program processing continues after the message is displayed. The system
        processes all of the trace records. You should assume, however, that the
        SQL trace in this case is not displayed correctly.
    Procedure
    You cannot correct this error yourself. If you can reproduce the error,
    contact the SAP Hotline.
    SQL trace list editing terminated after 6 errors
    While using the trace I am executing the program that selects VBPA once and, I am assuming, as it goes through the BAPI BAPI_SALESORDER_CHANGE used to unblock a delivery block. I am guessing the problem or source is from the BAPI but do you guys have other insights in what is causing this issue?
    Thanks again, hope to hear from you soon, and good day.

    Our ERP LIVE Production around 11am all users encountered cannot generate print record from the submit new request. see below errorFor production issues, please log a SR.
    ORA-00060: Deadlock detected. More info in file /u/oracle/PROD/db/tech_st/11.1.0/admin/PROD_tailindb/diag/rdbms/prod/PROD/trace/PROD_ora_4026.trc.
    ORA-00060: Deadlock detected. More info in file /u/oracle/PROD/db/tech_st/11.1.0/admin/PROD_tailindb/diag/rdbms/prod/PROD/trace/PROD_ora_4026.trc.
    ORA-00060: Deadlock detected. More info in file /u/oracle/PROD/db/tech_st/11.1.0/admin/PROD_tailindb/diag/rdbms/prod/PROD/trace/PROD_ora_4026.trc.Please see these docs.
    OERR: ORA 60 "deadlock detected while waiting for resource" [ID 18251.1]
    What to do with "ORA-60 Deadlock Detected" Errors [ID 62365.1]
    Thanks,
    Hussein

  • How to restrict user to insert certain number of records (urgent)

    i have master detail Form. My requirement is as following.
    1) In master block user enter other information and enter suppose 5 in text item.
    2) Then 5 rows should be display in detail block. and user couldnt enter more than 5 records in detail block.

    i hope understand,
    To close a query when :max_record = TO_NUMBER(:global.max_rec) and
    keep count of the number of records retrieved,
    create a POST-QUERY trigger.
    IF :parameter.max_record = TO_NUMBER(:global.max_rec) THEN
    ABORT_QUERY;
    ELSE
    :global.max_rec := TO_CHAR(TO_NUMBER(:global.max_rec) + 1);
    END IF;
    :parameter.max_record = number record you want retrieve and set in PRE-FORM
    Hope help you

  • How to get the total record in the block before save them

    Hello,
    I need to recalculate the amout for all records in one block before saving them.
    How can I get it?
    Thanks for your helping

    You write a loop, something like this:
    Go_block('B1');
    If not form_success then
      Raise Form_Trigger_failure;
    End if;
    First_Record;
    If not form_success then
      Raise Form_Trigger_failure;
    End if;
    Loop
      If :system.record_status in('CHANGED','INSERT') then
        -- modify the record here--
      End if;
      Exit when :System.Last_Record = 'TRUE';
      Next_Record;
    End Loop;
    First_Record;But be very careful-- If your block can fetch a large number of rows, (over 100), this loop can take a long time, and you should not use this method. The loop will continue fetching more rows from the database until all rows satisfying the query are retrieved.

  • Populating records in a block.

    Hi All,
    I have two data blocks Block A and B.
    Block A has a button Button A.
    When Button A is pressed, second block Block B will pop up.
    Block B is like a table with number of records been displayed.
    My problem is:
    I have to create a non-editable unbound column in Block B.
    This unbound column will display values concatenated from two columns in a table.
    This is what i've written in Pre-Query of Block B:
    begin
    *     first_record;*
    *     loop*
    *     :B.unbound :='Values from two columns';*
    *     exit when :system.last_Record = 'TRUE';*
    next_record;
    end loop;
    end;
    It throws form error FRM-41009: Function key not allowed.  Press CtrlK for list of valid keys.+
    Please help me out to solve this problem.
    Regards,
    Gopi.

    Hi Andreas
    Why do you want to read the values again with a select-statement, when the values are already present in the block?
    its not possible to do record-navigation in a PRE-QUERY-trigger.yeah you r right :)
    But from his loop i supposed the second block is a non-db and he wanted to get the value from another tabel but no values displayed and what made me though that the following statments...
    I have to create a non-editable unbound column in Block B.
    This unbound column will display values concatenated from two columns in a table.i was confused... and not sure of what's he is trying to do...!!! may still need his/her confirmation to clarify...
    Hope this helps...
    Regards,
    Ammatu Allah.

  • How can i get no. of records in a block?

    How can i get no. of records in a block?
    please advise me................

    if you are looking for the number of records a block can display then use get_block_property -> RECORDS_DISPLAYED, if looking for the number of records the last query returned use get_block_property -> QUERY_HITS
    KK

  • Query using system parameter LEVEL returns incorrect huge number of records

    We migrate our database from Oracle *9.2.0.6* to *11.2.0.1*
    The query below throws "ORA-01788: CONNECT BY clause required in this query block".
    select * from (
    +select a.BOARD_ID, code, description, is_displayable, order_seq,  board_parent_id, short_description, IS_SUB_BOARD_DISPLAYABLE, <font color=blue>LEVEL</font> child_level, sp_board.get_parent_id(a.board_id) top_parent_id, is_top_selected isTopSelected+
    from boards a, ALERT_MESSAGE_BOARD_TARGETS b
    where a.board_id = b.board_id and is_displayable = 'Y' and alert_message_id = 5202) temp
    start with board_parent_id = 0
    connect by prior board_id = board_parent_id
    ORDER SIBLINGS BY order_seq;
    Based from online resources we modified "*_allow_level_without_connect_by*" by executing the statement.
    alter system set "_allow_level_without_connect_by"=true scope=spfile;
    After performing the above, ORA-01788 is resolved.
    The new issue is that the same query above returns *9,015,853 records in 11g* but in *9i it returns 64 records*. 9i returns the correct number of records. And the cause for 11g returning greater number of records is due to system parameter <font color=blue>LEVEL</font> used in the query.
    Why 11g is returning an incorrect huge number of records?
    Any assistance to address this is greatly appreciated. Thanks!

    The problem lies in th query.
    Oracle <font color=blue>LEVEL</font> should not be used inside a subquery. After <font color=blue>LEVEL</font> is moved in the main query, the number of returned records is the same as in 9i.
    select c.BOARD_ID, c.code, c.description, c.is_displayable, c.order_seq, c.board_parent_id, c.short_description, c.IS_SUB_BOARD_DISPLAYABLE, <font color=blue>LEVEL</font> child_level, c.top_parent_id, c.isTopSelected
    from (
    select a.BOARD_ID, code, description, is_displayable, order_seq, board_parent_id, short_description, IS_SUB_BOARD_DISPLAYABLE, sp_board.get_parent_id(a.board_id) top_parent_id, is_top_selected isTopSelected
    from boards a, ALERT_MESSAGE_BOARD_TARGETS b
    where a.board_id = b.board_id and is_displayable = 'Y' and alert_message_id = 5202
    ) c
    start with c.board_parent_id = 0
    connect by prior c.board_id = c.board_parent_id
    ORDER SIBLINGS BY c.order_seq

  • Alerts not retrieving the correct number of records

    Hi,
    I have created alerts to run plans. These plans are getting records from DB and populating the ADC. The alerts are getting executed but are not retrieving the correct number of records.
    I have created 5 alerts to run 5 plans all in the same time. The error at the "Data Flow service status" window is :
    CACHED RESULT
         REQUEST ID: {4EB6B955-96B3-4AF2-B836-6C9F417D47A6}
         EXECPLAN ID: {11372B4D-9ACE-4CFB-831F-11028FF996D5}
         EXECPLAN NAME: xxxx
         FIX COUNT: 0
         START TIME: 6/8/2006 12:00:01 PM
         EXECUTION TIME: 0:00:00
         Sink Records Blocks Disk Blocks Fix Count Hit Count Execution Status
         0: 0 0 0 0 0
    Complete - ERROR Error while processing the data for the step 'SQL Query'
    This error is seen for 2-3 plans .......
    But if i execute the plan manually from design studio there is no error.
    So
    1. Do i need to change anything in the config files to increase the MAx memory block?
    2. Is there any way, the plans can be run one at a time i.e. configure alerts in such a way that if one plan finishes the other one starts automatically? Currently i have scheduled the plans to run at the same time using Alerts..
    Please help...
    Thanks

    Here is one 'culprit' you can verify. Open DesignStudio. You should "--not--" see any grids or icons on (near) the botton status row. If you see them - right click and delete them. These are plans with same_names put in 'locked' state. After you do this. close your design studio.
    Note- if you ever open a plan in designstudio, always "save" it and close it (exit). Donot click on window [x] mark to close the appl.
    After above verifrication -- restart EnterpriseLink and restart PlanMonitor, verify if everything runs fine.
    --sanjeev                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Returning the number of records retrieved by a query

    Hi everyone,
    I did a search on this question, but I'm still unclear as to why it's so difficult to retrieve the number of records returned by a query.
    What is the easiest and most straight-foward way ?
    Thanks,
    Bob

    Shay
    I am confused. I still do not know how to achieve the count of records retrieved in a block. I have viewed the viewlet calculated field demo. I am unclear of what you were refering to when you said use the count as the function.
    I did try setting function to be "get_block_property('myblock',query_hits)", but this always had value of zero. But I do not think this is what you meant.
    Has anybody been able to answer the original question?

  • Limit the number of records per page in webi

    Hello All,
    How do i limit the number of records per page in webi?
    i was asked to have not more than 20 records per page.
    In " NUmber of Vertical records per page"(Quick display mode) the default value was 100, i am trying to set it to 20 ...but its not updating....its still taking 100.
    I am on BO XI 3.1 Sp2 fix pack 3
    Please let me know a way to accomplish this.Any inputs appreciated
    Thanks

    It can be done as follows:
    1. create a variable at report level as:
            v Test = Floor(RowIndex()/20)
    2. Added this variable in the Block as a new column.
    3. Select the v Test column, Right Click and set as section (also you can apply break).
    4. Go to structure mode select section\break and go to properties tab and select the property "Start on new page".
    Regards,
    Rohit

Maybe you are looking for

  • Problems accessing Web service from registry server

    "Hi, While trying to develop a dynamic webservice, I encounter some problems. The details are as follows: I develop a webservice with following interfaces and implementation classes: Interface : pricequote.IPriceQuote Implementation : pricequote.Pric

  • How do i copy contacts from my iphone 3gs to iphone 5s

    how do i transfer contacts from iphone 3gs to iphone 5s

  • Migration from Sybase to Oracle

    Hello every one, First of all I want to say thank you for your time, I would like that you certify my process, and, if not good, that you give me a better choice, I want to migrate one database from Sybase 12.5 in a Solaris 8 platform to Oracle 10g i

  • ERROR IN POSTING GOODS ISSUE..

    HI ALL, I WANT TO GET INFORMATION FOR HOW TO SOLVE THE ERROR.. WHEN I AM GOING FOR POSTING GOODS ISSUE, BEFORE THAT I MAINTAINED CONTROLLING AREA, COST CENTER, COST ELEMENT FOR MY COMPANY. SO AFTER THAT I WENT TO MB1A (GOODS ISSUES) TO POST THE GOODS

  • HDMI issue on Qosmio F60-111

    Dear all I have a strange problem with my laptop HDMI port. I've searched a lot, read the user manual, tried every solution available online and yet was not able to solve the problem. I connected the HDMI cable between the laptop and LG LCD screen wh