ABAP WD: Count of rows using display_type_hierarchy in ALV
Hi,
I am trying to implement display_type_hierarchy in ALV and my requirement is to change the hierarchy based on user selection.
I am able to get the hierarchy based on user selection. For ex: If there are 3 columns in ALV then user can choose the column in a dropdown box and see the hierarchy based on the chosen column. But I want to get the count of rows inside the hierarchy. I did not find any standard method for this. (Is there one?) Could you please let me know how to do it?
Regards,
Srini.
G'day Anett,
Did you manage to get an answer to this issue, we are trying to do the same thing.
Cheers,
Mick.
Similar Messages
-
Hi!
I would like to get the count of rows in my ALV report . How to get the count of the rows ? Can anyone guide me in getting it dome please.
ThanksHi Gaddemmedi!
I am attaching the report as you had asked for. I have added the things you asked me to do and now I am getting the count on the top of the page. The problem is that though it shows me the count of the lines from the LAV report on top but when I try to filter the records in the report that count first of all dosent change and remain the same as the initial number of record though after filtering records reduce and over that the count lines keep on increasing I mean the count is shown in repeated lines afet lines. Kindly help please.
Thanks
*& Report ZSD_BILLING_HDR_TEXT_sum *
*& billing doc. and associated header text report *
*& CHANGE LOG *
*& jpoon 2007.08.03 Change request: DEVK905095 *
*& Move request: SD_1451_01 Requestor: Mona Fox *
*& FP14134 - original code. *
REPORT zsd_billing_hdr_text_sum MESSAGE-ID zsd NO STANDARD PAGE HEADING.
* For ALV usage
TYPE-POOLS: slis.
DATA: gs_layout TYPE slis_layout_alv,
tp_print TYPE slis_print_alv,
gt_sort TYPE slis_t_sortinfo_alv,
gt_events TYPE slis_t_event,
t_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
repid TYPE syrepid, " ABAP Program.
gt_list_top_of_page TYPE slis_t_listheader, " Top of page text.
alv_variant TYPE disvariant," Customize Disp. Variant
w_event type slis_alv_event.
DATA: w_field TYPE slis_fieldcat_alv.
TABLES: vbrk, vbrp, vbpa.
DATA SLIS_EV_AFTER_OUTPUT.
data: gs_list_top_of_page type slis_listheader.
*data: gt_list_top_of_page type slis_t_listheader.
* Definition of selection screen *
* By plant, storage location, sold-to customers, material and *
* posting date of the sales orders *
SELECTION-SCREEN BEGIN OF BLOCK one WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbrk-vbeln, " billing doc.
s_kunnr FOR vbpa-kunnr, " bill-to customer number.
s_werks FOR vbrp-werks, " line item plant.
s_fkdat FOR vbrk-fkdat, " billing date.
s_fkart FOR vbrk-fkart, " billing type.
s_vkorg FOR vbrk-vkorg. " sales org.
PARAMETERS: p_hold AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK one.
* ALV display layout
SELECTION-SCREEN BEGIN OF BLOCK layout WITH FRAME TITLE text-003.
PARAMETERS: pa_vari TYPE slis_vari DEFAULT ' '. " Display variant.
SELECTION-SCREEN END OF BLOCK layout.
* Data Definitions *
* Storing Extracted Info.
TYPES: BEGIN OF t_extract,
vbeln TYPE vbeln_vf, " Sales order number.
posnr TYPE posnr, " line item
fkart TYPE fkart, " billing type.
vtext TYPE BEZEI20, " billing type description.
fkdat TYPE fkdat, " billing date.
werks TYPE werks_d, " line item plant.
werks_name1 TYPE name1, " plant description.
kunnr TYPE kunnr, " bill-to customer.
kunnr_name1 TYPE name1_gp, " bill-to description.
netwr TYPE netwr, " net value,invoice total $
zzflag TYPE boolean, " hold indicator
zzreason TYPE char30, " header text2 (reason)
zzuser TYPE ernam, " last changed by
zz_changed_date TYPE dats, " last changed date
zz_changed_time TYPE tims, " last changed time
END OF t_extract.
DATA: it_extract TYPE TABLE OF t_extract WITH HEADER LINE,
it_extract2 TYPE TABLE OF t_extract WITH HEADER LINE.
DATA: it_text TYPE TABLE OF tline WITH HEADER LINE.
DATA: wa_thead type thead.
DATA: w_tdname type TDOBNAME.
DATA: L_COUNT TYPE I.
* initialization
INITIALIZATION.
gs_layout-colwidth_optimize = 'X'.
tp_print-no_print_listinfos = 'X'.
tp_print-no_coverpage = 'X'.
PERFORM set_fieldcat.
PERFORM alv_eventtab_build USING:
** Event name Form to execute Event internal table
'TOP_OF_PAGE' 'TOP_OF_PAGE' gt_events[].
* Dropdown list for all created ALV layouts, global or user-specific
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.
PERFORM alv_variant_f4 CHANGING pa_vari.
* Main BODY of processing logic
START-OF-SELECTION.
IF s_vbeln IS INITIAL
AND s_kunnr IS INITIAL
AND s_werks IS INITIAL
AND s_fkdat IS INITIAL
AND s_fkart IS INITIAL
AND s_vkorg IS INITIAL.
MESSAGE i000 WITH text-037 ' ' ' ' ' '.
ELSE.
PERFORM extract_data.
ENDIF.
END-OF-SELECTION.
IF it_extract2[] IS INITIAL.
MESSAGE i000 WITH text-002 ' ' ' ' ' '.
ELSE.
* Build headings for report.
* PERFORM build_top_of_page USING gt_list_top_of_page[].
* describe table it_extract2 lines l_count.
*write :/ 'TOTAL NO OF ENTRIES', SY-VLINE, 32 L_COUNT.
PERFORM call_alv.
*write :/ 'TOTAL NO OF ENTRIES', SY-VLINE, 32 L_COUNT.
ENDIF.
*& Form EXTRACT_KEY_DATA
* Retreive the data for the report.
FORM extract_data.
CLEAR: it_extract. REFRESH: it_extract.
* read and select billing documents
IF p_hold IS INITIAL.
SELECT vbrk~vbeln vbrk~fkart vbrk~fkdat vbrk~netwr
vbrk~zzflag vbrk~zzreason vbrk~zzuser
vbrk~zz_changed_date vbrk~zz_changed_time
vbrp~posnr vbrp~werks
INTO CORRESPONDING FIELDS OF TABLE it_extract
FROM vbrk INNER JOIN vbrp ON
vbrk~vbeln = vbrp~vbeln
WHERE vbrk~vbeln IN s_vbeln
AND vbrk~fkart IN s_fkart
AND vbrk~fkdat IN s_fkdat
AND vbrk~vkorg IN s_vkorg
AND vbrk~fksto NE 'X'
AND vbrp~werks IN s_werks.
ELSE.
* read 'held' documents only as per selection
SELECT vbrk~vbeln vbrk~fkart vbrk~fkdat vbrk~netwr
vbrk~zzflag vbrk~zzreason vbrk~zzuser
vbrk~zz_changed_date vbrk~zz_changed_time
vbrp~posnr vbrp~werks
INTO CORRESPONDING FIELDS OF TABLE it_extract
FROM vbrk INNER JOIN vbrp ON
vbrk~vbeln = vbrp~vbeln
WHERE vbrk~vbeln IN s_vbeln
AND vbrk~fkart IN s_fkart
AND vbrk~fkdat IN s_fkdat
AND vbrk~vkorg IN s_vkorg
AND vbrk~fksto NE 'X'
AND vbrk~zzflag = 'X'
AND vbrp~werks IN s_werks.
ENDIF.
IF sy-subrc <> 0.
MESSAGE i000 WITH text-002 ' ' ' ' ' '.
ENDIF.
CHECK sy-subrc = 0.
* only need first line item for this report.
SORT it_extract BY vbeln posnr.
DELETE ADJACENT DUPLICATES FROM it_extract COMPARING vbeln.
LOOP AT it_extract.
* Retrieve and select by sales order bill-to on header level
* as well as lookup bill-to customer name/description
SELECT SINGLE kunnr FROM vbpa INTO it_extract-kunnr
WHERE vbeln = it_extract-vbeln
AND posnr = '000000'
AND parvw = 'RE'.
IF it_extract-kunnr IN s_kunnr.
it_extract-kunnr_name1 = zcl_kna1=>get_name1( it_extract-kunnr ).
ELSE.
DELETE it_extract.
CONTINUE.
ENDIF.
* lookup billing type description
SELECT SINGLE vtext FROM tvfkt
INTO it_extract-vtext
WHERE spras = sy-langu
AND fkart = it_extract-fkart.
IF sy-subrc <> 0.
clear it_extract-vtext.
ENDIF.
* lookup plant description
SELECT SINGLE name1 FROM t001w
INTO it_extract-werks_name1
WHERE werks = it_extract-werks.
IF sy-subrc <> 0.
clear it_extract-werks_name1.
ENDIF.
MOVE-CORRESPONDING it_extract TO it_extract2.
APPEND it_extract2.
ENDLOOP.
describe table it_extract2 lines l_count.
ENDFORM. " EXTRACT_DATA
*& Form SET_FIELDCAT
* Create the field catalogue.
FORM set_fieldcat .
*CLEAR W_EVENT.
*W_EVENT-FORM = SLIS_EV_AFTER_OUTPUT.
*W_EVENT-NAME = SLIS_EV_AFTER_LINE_OUTPUT.
*APPEND W_EVENT TO GT_EVENTS.
CLEAR w_field.
CLEAR t_fieldcat. REFRESH t_fieldcat.
w_field-col_pos = 1.
w_field-fieldname = 'ZZFLAG'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Hold Printing'(005).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 2.
w_field-fieldname = 'ZZREASON'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Reason'(036).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 3 .
w_field-fieldname = 'VBELN'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Billing Doc'(028).
w_field-emphasize = 'X'.
w_field-hotspot = 'X'.
APPEND w_field TO t_fieldcat.
CLEAR w_field.
w_field-col_pos = 4 .
w_field-fieldname = 'VTEXT'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Type Description'(030).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 5 .
w_field-fieldname = 'FKDAT'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Billing Date'(031).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 6 .
w_field-fieldname = 'WERKS'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Plant'(012).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 7 .
w_field-fieldname = 'WERKS_NAME1'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Plant Description'(032).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 8.
w_field-fieldname = 'KUNNR'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Bill-to Customer'(033).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 9 .
w_field-fieldname = 'KUNNR_NAME1'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Bill-to Description'(034).
w_field-emphasize = 'X'.
w_field-hotspot = 'X'.
APPEND w_field TO t_fieldcat.
CLEAR w_field.
w_field-col_pos = 10 .
w_field-fieldname = 'NETWR'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Invoice Amount'(035).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 11 .
w_field-fieldname = 'ZZUSER'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Changed By'.
APPEND w_field TO t_fieldcat.
w_field-col_pos = 12 .
w_field-fieldname = 'ZZ_CHANGED_DATE'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Last Changed Date'(006).
APPEND w_field TO t_fieldcat.
w_field-col_pos = 13 .
w_field-fieldname = 'ZZ_CHANGED_TIME'.
w_field-tabname = 'IT_EXTRACT2'.
w_field-seltext_l = 'Last Changed Time'(007).
APPEND w_field TO t_fieldcat.
* W_event-NAME = slis_ev_end_of_list.
* W_event-FORM = 'END_OF_LIST'.
* APPEND W_event TO GT_EVENTS.
* CLEAR W_event .
* w_field-col_pos = 14 .
* w_field-fieldname = 'COUNT'.
* w_field-tabname = 'IT_EXTRACT2'.
* w_field-seltext_l = 'COUNT'.
* APPEND w_field TO t_fieldcat.
ENDFORM. " SET_FIELDCAT
*& Form CALL_ALV
* Call the ALV Grid function.
FORM call_alv .
SORT it_extract BY vbeln.
* repid is necessary since the ALV F.M. does not work properly with
* sy-repid.
repid = sy-repid.
alv_variant-variant = pa_vari.
alv_variant-report = sy-repid.
alv_variant-username = sy-uname.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
i_callback_user_command = 'USER_COMMAND'
is_layout = gs_layout
it_fieldcat = t_fieldcat[]
it_sort = gt_sort[]
i_default = 'X'
i_save = 'A'
is_variant = alv_variant
it_events = gt_events[]
is_print = tp_print
TABLES
t_outtab = it_extract2
EXCEPTIONS
program_error = 1
OTHERS = 2.
write :/ 'TOTAL NO OF ENTRIES', SY-VLINE, 32 L_COUNT.
IF sy-subrc NE 0.
MESSAGE w000 WITH text-004 ' ' ' ' ' '.
ENDIF.
ENDFORM. " CALL_ALV
*& Form alv_eventtab_build
* Pass list of events to be triggered by the ALV function module
FORM alv_eventtab_build USING u_name TYPE slis_alv_event-name
u_form TYPE slis_alv_event-form
alv_lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event. " structure for event handling
ls_event-name = u_name.
ls_event-form = u_form.
APPEND ls_event TO alv_lt_events.
ENDFORM. " alv_eventtab_build
* FORM TOP_OF_PAGE *
FORM top_of_page.
*gs_list_top_of_page-type = 'H'.
GS_LIST_TOP_OF_PAGE-INFO = L_COUNT.
APPEND GS_LIST_TOP_OF_PAGE TO GT_LIST_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'NEWALTA_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM. " TOP_OF_PAGE
*& Form user_command
* Process the user command.
* -->R_UCOMM User command
* -->RS_SELFIELD Field selected
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: ltp_vbeln TYPE vbeln. " Sales document number.
CASE r_ucomm.
WHEN '&IC1'.
IF ( rs_selfield-fieldname = 'VBELN'
OR rs_selfield-fieldname = 'BILL_VBELN' )
AND rs_selfield-value IS NOT INITIAL. " Display sales document.
ltp_vbeln = rs_selfield-value.
zcl_sales_doc=>display( ltp_vbeln ).
ENDIF.
ENDCASE.
ENDFORM. "user_command
*& Form alv_v-ariant_f4
* Get the display variant.
* <--CTP_VARI Variant name
FORM alv_variant_f4 CHANGING ctp_vari TYPE slis_vari.
alv_variant-report = sy-repid. " Report ID
alv_variant-username = sy-uname. " User ID
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = alv_variant
i_save = 'A'
IMPORTING
es_variant = alv_variant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
ctp_vari = alv_variant-variant.
ENDIF.
ENDFORM. " alv_variant_f4 -
Hi ,
I want to find count of rows of a particular data set in a table expression. How to do that? Can you please help me out.
Thanks
susheel
sushHi Dimant,
I used countrows. If the dataset set contains 12 rows I am getting the o/p as shown below. I just need one row. Can please help me out.
Thanks
sush -
Inserting multiple rows using a single Insert statement without using dual
Hi all,
i am trying to insert multiple rows using a single insert statement like the below one.
The below one works fine..
But is there any other change that can be done in the below one without using dual...
insert all
into ps_hd_samp (num1,num2) values (1,1)
into ps_hd_samp (num1,num2) values (2,2)
into ps_hd_samp (num1,num2) values (3,3)
select 1 from dual;NiranjanSe wrote:
Hi all,
i am trying to insert multiple rows using a single insert statement like the below one.
The below one works fine..
But is there any other change that can be done in the below one without using dual...
insert all
into ps_hd_samp (num1,num2) values (1,1)
into ps_hd_samp (num1,num2) values (2,2)
into ps_hd_samp (num1,num2) values (3,3)
select 1 from dual;
SQL> create table ps_hd_samp (num1 number,num2 number);
Table created.
SQL> insert all
2 into ps_hd_samp (num1,num2) values (1,1)
3 into ps_hd_samp (num1,num2) values (2,2)
4 into ps_hd_samp (num1,num2) values (3,3)
5 select count(*)
6 from ps_hd_samp;
3 rows created.
SQL> select * from ps_hd_samp;
NUM1 NUM2
1 1
2 2
3 3 -
Count all rows of a Database table
I want to count all the rows of a table.
I have made correctly the connection with the database and all the other things (make a statement, make the query and the resultSet), I use the MySQL server v4.0.17
Here is the code I use:
int count=0;
String temp=null;
String query = "SELECT COUNT(*) FROM customers";//customers is my Database Table
try {
rs = stmt.executeQuery(query);
}//end try
catch(Exception exc) {
createFeatures.PlayErrorSound(registerRenter);
Optionpane.showMessageDialog(registerRenter,
"MESSAGE", "ERROR", JOptionPane.ERROR_MESSAGE);
}//end catch
try {
while(rs.next()) {
count++; //I use this variable in order to count the rows because the resultSet doesn't tell me the answer
countLine=rs.getInt(1);
}//end while
}//end try
catch(Exception exc) {
createFeatures.PlayErrorSound(registerRenter);
Optionpane.showMessageDialog(registerRenter,
"MESSAGE", "ERROR", JOptionPane.ERROR_MESSAGE);
}//end catch
count=count++; //i increase it aggain because if the rows are initial 0 i want to make it 1
temp = String.valueOf(count);//i use this command in order to display the result into a jtextfield
Any help is appreciated!!!!!This program will work just fine against mysql:
mport java.util.*;
import java.io.*;
import java.sql.*;
public class Test {
public static void main(String []args) {
String url= "jdbc:mysql://localhost/adatabase";
String query = "select count(*) from foo2";
String createQuery="create table foo2(f1 int)";
String dropQuery="drop table foo2";
String insertQuery="insert into foo2 values(1)";
Properties props = new Properties();
props.put("user", "auser");
props.put("password", "xxxxx");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Connecting to the msql server");
Connection con = DriverManager.getConnection(url, props);
Statement stmt = con.createStatement();
try {
stmt.executeUpdate(dropQuery);
} catch(SQLException e) {}
stmt.executeUpdate(createQuery);
stmt.executeUpdate(insertQuery);
stmt.executeUpdate(insertQuery);
PreparedStatement pstmt = con.prepareStatement(query);
System.out.println("***Executing a select");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println("RowCount="+ rs.getString(1));
rs.close();
pstmt.close();
stmt.close();
con.close();
} catch(Exception e) {
System.out.println(e.getMessage());
} -
Need Query to that generate count of rows of all tables
Hi
i need a query which gives the result of no.of rows in talbe and coresponding table name.
And then i need to compare the same with other DB schema
Thanks in advanceHi User,
We can also get the count of rows for all the tables associated with a User, we can create a custom function which
uses the table name to return results.
CREATE OR REPLACE FUNCTION TAB_ROWS_CNT (TAB_NAME IN VARCHAR2)
RETURN NUMBER
AS
TAB_CNT NUMBER :=0;
BEGIN
EXECUTE IMMEDIATE 'select count(*) from ' || TAB_NAME
INTO TAB_CNT;
RETURN TAB_CNT;
END;And query,
SELECT TABLE_NAME, TAB_ROWS_CNT (TABLE_NAME) ROW_CNT
FROM USER_TABLES;Which gets us the count of Individual Tables for a user.
This is an just that we can do in this way also. But, use which is optimal.
Thanks,
Shankar -
Sqlldr; restrict count of rows
How can I restrict the count of rows to load.
The skip option allows to skip the first rows, but how can I stop if a defined count of rows is loaded?
I need that for testing
Thanks for your help.
FrankI have to use to original data in my test case and can not modify the input file.
I like to restrict the count of loaded rows in the control file. -
Hi,
I have a procedure doing paging and returning the count of rows:
As you see I used 2 select, one for paging and one for getting total row counts.
Is there a way to get rid of "SELECT count(*) into PO_TOTAL FROM TABLE1;"?
CREATE OR REPLACE PACKAGE BODY MYPACKAGE AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE SP_PAGING
PI_STARTID IN NUMBER,
PI_ENDID IN NUMBER,
PO_TOTAL OUT NUMBER,
CUR_OUT OUT T_CURSOR
IS
BEGIN
OPEN CUR_OUT FOR
SELECT *
FROM (SELECT row_.*, ROWNUM rownum_
FROM (
SELECT column1, column2, column3 FROM TABLE1
) row_
WHERE ROWNUM <= PI_ENDID)
WHERE rownum_ >= PI_STARTID;
SELECT count(*) into PO_TOTAL FROM TABLE1;
END SP_PAGING;
END MYPACKAGE;Yes, I can reproduce that:
SQL> create table emp1 as select * from emp
2 /
Table created.
SQL> exec dbms_stats.gather_table_stats('SCOTT','EMP1');
PL/SQL procedure successfully completed.
SQL> EXPLAIN PLAN FOR
2 SELECT ename,
3 job,
4 sal,
5 cnt
6 FROM (
7 SELECT ename,
8 job,
9 sal,
10 count(*) over() cnt,
11 row_number() over(order by 1) rn
12 FROM emp1
13 )
14 WHERE rn BETWEEN 4 AND 9;
Explained.
SQL> @?\rdbms\admin\utlxpls
PLAN_TABLE_OUTPUT
Plan hash value: 1444408506
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 14 | 728 | 4 (25)| 00:00:01 |
|* 1 | VIEW | | 14 | 728 | 4 (25)| 00:00:01 |
| 2 | WINDOW BUFFER | | 14 | 252 | 4 (25)| 00:00:01 |
| 3 | TABLE ACCESS FULL| EMP1 | 14 | 252 | 3 (0)| 00:00:01 |
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
1 - filter("RN">=4 AND "RN"<=9)
15 rows selected.
SQL> EXPLAIN PLAN FOR
2 SELECT *
3 FROM (SELECT row_.*, ROWNUM rownum_
4 FROM (
5 SELECT ename,job,sal, count(*) over() FROM emp1
6 ) row_
7 WHERE ROWNUM <= 9)
8 WHERE rownum_ >= 4;
Explained.
SQL> @?\rdbms\admin\utlxpls
PLAN_TABLE_OUTPUT
Plan hash value: 519025698
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 9 | 468 | 2 (0)| 00:00:01 |
|* 1 | VIEW | | 9 | 468 | 2 (0)| 00:00:01 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | VIEW | | 9 | 351 | 2 (0)| 00:00:01 |
| 4 | WINDOW BUFFER | | 9 | 162 | 2 (0)| 00:00:01 |
| 5 | TABLE ACCESS FULL| EMP1 | 9 | 162 | 2 (0)| 00:00:01 |
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
1 - filter("ROWNUM_">=4)
2 - filter(ROWNUM<=9)
18 rows selected.
SQL> However, you interpreted it incorrectly. Your query will still fetch all rows in TABLE1. Optimizer is smart enough to stop creating window buffer after 9 rows and that is what you see 9 in explain plan, while my query builds 14 row window buffer and then filters. So your query will be a bit faster.
SY.
Edited by: Solomon Yakobson on Jan 25, 2009 2:51 PM -
Hi ,
How to get page wise count of rows of the inner repeating group?
Thanks in advance.
--Basava.SHi Dimant,
I used countrows. If the dataset set contains 12 rows I am getting the o/p as shown below. I just need one row. Can please help me out.
Thanks
sush -
I'd like to present a total count of rows in the bottom of a report.
how would you recommand me to do it???
the point is that it must be presented in each report so i thought to add some HTML code to "After Rows" section in the report template. but i need a variable (or some substitution string) which will contain the total count. but how do i define a substitution string?as i mentioned i need to present a total count in the buttom of each report in my application. therefore I think it's reasonable to add a code in the report template, which present some variable which count all rows in a report.
#TOTAL_ROWS# doesn't work if i place it on the template html code, though it works fine if i place it in the report region definition:
<br><b>Total Number of Results:</b> #TOTAL_ROWS#.</br>
why can't i use #TOTAL_ROWS# as a template variable? and how can i do that? -
Getting the count of rows present in the oracle table
Hi all,
i want to get the total number of rows present in the sql table to the appmodule.
After applying the some view criteria to the view object. if it try with getallrowsinrange it was giving count of rows present in the viewobject but i want total number of rows present in the sql table.
How can i get that
I am using jdev 11.1.1.5
Thanks in advanceI threw something together, quick and dirty, feel free to optimize.
Assuming that you want the table count, I put the code into a EntityDefImpl subclass since this is what represents a table in the middle-tier.
public class EmpDefImpl
extends EntityDefImpl {
* This is the default constructor (do not remove).
public EmpDefImpl( ) {}
//~ Methods ****************************************************************************
public long getTableRowCount( DBTransaction transaction ) {
String query = getQuery( );
String countQuery = String.format( "SELECT COUNT(*) FROM (%s)", query );
long count = 0;
ViewObject vo = transaction.createViewObjectFromQueryStmt( countQuery );
try {
vo.executeQuery( );
Row row = vo.first( );
Number number = (Number)row.getAttribute( 0 );
count = number.longValue( );
} finally {
vo.remove( );
return count;
}Depending on your type map, you might not get a oracle.jbo.domain.Number, but something else, so the cast might need correction.
Usage example:
public class EmpEditViewImpl extends ViewObjectImpl {
public EmpEditViewImpl() {
protected void executeQueryForCollection( Object object, Object[] object2, int i ) {
super.executeQueryForCollection( object, object2, i );
EmpDefImpl def = ( EmpDefImpl )getEntityDef( 0 );
long tableRowCount = def.getTableRowCount( getDBTransaction() ) );
// Do something with it
}As you can see, the code is pretty generic. You might also be able to put this into an ADF extension base class.
Sascha
Edited by: Sascha Herrmann on Jun 7, 2012 2:39 PM -
'Count all rows' in Disco Plus?
Hi all - I can't find an option to Count All Rows in disco plus. This is something my users use all the time in Desktop - is it included in Plus?
In Desktop, it is under menu item 'Sheet'
Thanks!
ScottHi Scott
Sorry that was removed from Discoverer Plus so you won't find a button for it. Having that there would force Discoverer to have to run the entire query just to give you the total count. Oracle considered this a waste of resource and query effort, which I sort of agree with because I can see what they are getting at, and so removed it.
Best wishes
Michael -
Column count doesn't match value count at row 1, unknown number of columns
Hi,
I am making a program to read data from excel files as the above and store them in tables. I have managed to read all the data from excel files as a string and store them in a table.
ID Name Salary
50 christine 2349000
43 paulina 1245874
54 laura 4587894
23 efi 3456457
43 jim 4512878
But in my project I have several other files that have same cell that are blank as the above example
ID Name Salary
50 christine 2349000
43 paulina
laura 4587894
23 3456457
43 jim 4512878
and when i ran the same program i get this exception :
SQLException: Column count doesn't match value count at row 1
SQLState: 21S01
VendorError: 1136The code for creating the table and inserting the values is above:
private static String getCreateTable(Connection con, String tablename,
LinkedHashMap<String, Integer> tableFields) {
Iterator iter = tableFields.keySet().iterator();
Iterator cells = tableFields.keySet().iterator();
String str = "";
String[] allFields = new String[tableFields.size()];
int i = 0;
while (iter.hasNext()) {
String fieldName = (String) iter.next();
Integer fieldType = (Integer) tableFields.get(fieldName);
switch (fieldType) {
case Cell.CELL_TYPE_NUMERIC:
str = fieldName + " INTEGER";
break;
case Cell.CELL_TYPE_STRING:
str = fieldName + " VARCHAR(255)";
break;
case Cell.CELL_TYPE_BOOLEAN:
str = fieldName + " INTEGER";
break;
default:
str = "";
break;
allFields[i++] = str;
try {
Statement stmt = con.createStatement();
try {
String all = org.apache.commons.lang3.StringUtils.join(
allFields, ",");
String createTableStr = "CREATE TABLE IF NOT EXISTS "
+ tablename + " ( " + all + ")";
System.out.println("Create a new table in the database");
stmt.executeUpdate(createTableStr);
} catch (SQLException e) {
System.out.println("SQLException: " + e.getMessage());
System.out.println("SQLState: " + e.getSQLState());
System.out.println("VendorError: " + e.getErrorCode());
} catch (Exception e)
System.out.println( ((SQLException) e).getSQLState() );
System.out.println( e.getMessage() );
e.printStackTrace();
return str;
private static void fillTable(Connection con, String fieldname,
LinkedHashMap[] tableData) {
for (int row = 0; row < tableData.length; row++) {
LinkedHashMap<String, Integer> rowData = tableData[row];
Iterator iter = rowData.entrySet().iterator();
String str;
String[] tousFields = new String[rowData.size()];
int i = 0;
while (iter.hasNext()) {
Map.Entry pairs = (Map.Entry) iter.next();
Integer fieldType = (Integer) pairs.getValue();
String fieldValue = (String) pairs.getKey();
switch (fieldType) {
case Cell.CELL_TYPE_NUMERIC:
str = fieldValue;
break;
case Cell.CELL_TYPE_STRING:
str = "\'" + fieldValue + "\'";
break;
case Cell.CELL_TYPE_BOOLEAN:
str = fieldValue;
break;
default:
str = "";
break;
tousFields[i++] = str;
try {
Statement stmt = con.createStatement();
String all = org.apache.commons.lang3.StringUtils.join(
tousFields, ",");
String sql = "INSERT INTO " + fieldname + " VALUES (" + all
+ ")";
stmt.executeUpdate(sql);
System.out.println("Fill table...");
} catch (SQLException e) {
System.out.println("SQLException: " + e.getMessage());
System.out.println("SQLState: " + e.getSQLState());
System.out.println("VendorError: " + e.getErrorCode());
}To be more specific the error it in the second row where i have only ID and Name in my excel file and only these i want to store. The third row has only Name and Salary and no ID. How i would be able to store only the values that i have and leave blank in the second row the Salary and in the third row the ID? Is there a way for my program to skip the blanks as empty value?
Edited by: 998913 on May 9, 2013 1:01 AMIn an unrelated observation, it appears you are creating new database tables to hold each document. I don't think this is a good idea. Your database tables should be created using the database's utility program and not programmatically. The database schema should hardly ever change once the project is complete.
As a design approach: One database table can hold your document names, versions, and date they were uploaded. Another table will hold the column names and data types. Another table can hold the data (type for all data = String). This way, you can join the three tables to retrieve a document. Your design will only consists of those three tables no matter how many unique documents you have. You probably should seek the advice of a DBA or experienced Java developer on exactly how structure those tables. My design is a rough layout. -
Report.Services 2008 - get page-count or row-count in the c#-code
hello
is it possible to get from the ReportViewer-control / ServerReport the page-count or row-count after the
reportViewerCheck.ServerReport.Refresh();
statement ??
many thanks in advance for any clue & regards
MichaelHi Michael,
Yes, you can get them. For row count, you can add a parameter to store the row count of your dataset in your report.
Here are the steps:
1. Add 2 datasets in your report, one for report use and the other on is to row count use. For instance:
DataSet1: SELECT HumanResources.vEmployee.* FROM HumanResources.vEmployee
DataSet2: SELECT COUNT(*) FROM HumanResources.vEmployee
2. Add a parameter, set the parameter’s default value set to Get Values from a query and select DataSet2.
Then, in your ASP.NET web application code you can use the following function to get the row count of the report:
private int GetReportRowCount(ReportViewer report)
return Convert.ToInt32(report.ServerReport.GetParameters()[0].Values[0].ToString());
For page count, you can refer to the following code:
private int GetReportPageCount(ReportViewer report)
return report.ServerReport.GetTotalPages();
You may not get the correct row count and page count in after executing Refresh () method, that’s because when you run this method, it will start another thread to refresh the report and the code below Refresh () method will not wait refreshing complete but run it. For instance, you may get the page count as o if you run the following code in the Button event:
// Click this Button to refresh the ReportViewer1
protected void btnGetPageCount_Click(object sender, EventArgs e)
// Refresh the ReportViewer1
this.ReportViewer1.ServerReport.Refresh();
// Get ReportViewer1's page count and display in the txtPageCount TextBox
this.txtPageCount.Text = this.ReportViewer1.ServerReport.GetTotalPages().ToString();
You can run the refresh in separate events and get page count in another event, such as below code:
// Click this Button to refresh the ReportViewer1
protected void btnGetPageCount_Click(object sender, EventArgs e)
// Refresh the ReportViewer1
this.ReportViewer1.ServerReport.Refresh();
// Display the txtPageCount's text to ReportViewer's page count
protected void btnGetPageCount2_Click(object sender, EventArgs e)
// Get ReportViewer1's page count and display in the txtPageCount TextBox
this.txtPageCount.Text = this.ReportViewer1.ServerReport.GetTotalPages().ToString();
Hope this helps! I would suggest you post a new thread in Visual Studio Report Controls forum if you need more help about using ReportViewer in ASP.NET web application.
Please remember to mark the replies as answers if they help and unmark them if they provide no help. -
Hi,
I've a datamodel with BI Query. I want count the rows like a rownum function. How can I do this?
Thanks R.
Edited by: user12003776 on Jan 26, 2012 5:02 PMDo you want to get a count of rows in the query or do you want to find the count in the template? Rownum function returns the rows' position.
If you want to find the count of rows within the template for some conditionally formatting, then you could use something similar to this:
<?count(/XXTA_SHIP_LABEL/LIST_G_CUSTOMER/G_CUSTOMER)?> -- change the path to the field in your dataset
Can you explain a bit more as to what you are trying to do?
Thanks,
Bipuser
Maybe you are looking for
-
Reversing the financial document
Hi, I am trying to reverse a journal entry. When i posted the document as well i got the msg as 'Enter a true account assignment object with revenues. I posted the document using BAPI_ACC_DOCUMENT_POST. Though i got the msg the document is posted. Fo
-
Final Cut Pro 7 keeps quitting at launch-tried trashing prefs and reinstall
I've been dealing with final cut pro 7 not starting up for the past 2 days after not having any problems since installing it. I've done the usual tricks of trashing preferences and cache and repairing permissions and even did a reinstall of final cut
-
just bought Ipad 2 16GB 3G for my mum but i want to use it first to set it up shouldn't it access my modem or do i still have to activate the sim?
-
Did I back up the Library correctly?
I wanted to back up my iPhoto Library on a DVD. I opened iPhoto, selected "Library" from the Source column and burned it onto a DVD. I seem to remember having done it differently before. I can't recall how I did it, but I seem to think that I burned
-
Wi-Fi is not working with iPhone 4S iOS 8.1
How can I solve tris problem?