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,
bobYou 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 ,
SimonNo, 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,
CKI 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 helpingYou 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...
ThanksHere 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,
BobShay
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
ThanksIt 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
-
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