Problem in Delete Row
Hai To All,
Iam using PL 05 i have enable DeleteRow option. If i click the deleterow the row is deleted but after saving the entry there is null value in database. for example if i have 2 row in the matrix if i delete last row the content is deleted after that iam saving the matrix. In the database i have 2 rows one with content and other with null value..
Whts the soultion of this....
Does anyone have idea reply me....
Regards,
Anitha
Hi Anitha,
For the delete option, you need to right a small function if its going to be ur own form.
Try using the following code...
Private Sub DeleteRow()
Dim oDBDSource As SAPbouiCOM.DBDataSource
Dim Count As Integer
Dim oMatrix As SAPbouiCOM.Matrix
Try
oDBDSource = objForm.DataSources.DBDataSources.Item("@TableName")
oMatrix = objForm.Items.Item("3").Specific
oMatrix.FlushToDataSource()
oMatrix.DeleteRow(strRow)
objForm.Update()
'objForm.DataSources.DBDataSources.Item("@TableName").RemoveRecord(strRow - 1)
oDBDSource.Clear()
oMatrix.FlushToDataSource()
oMatrix.LoadFromDataSource()
For Count = 1 To oDBDSource.Size - 1
oDBDSource.SetValue("Code", Count - 1, Count)
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Hope this helps.
Satish.
Similar Messages
-
Problem in deleting Rows of JTable after sorting it
Hi all,
I'm getting problems in Removing Row(s) after sorting a JTable.
Please find the code snippets at this URL. Thanks for your time...
http://forum.java.sun.com/thread.jsp?forum=31&thread=459736&start=15&range=15&hilite=false&q=Hi Abhijeet,
I tried it the way you said using
wdContext.nodeBirhtday_List().nodeItab().moveFirst();
// loop backwards to avoid index troubles
for (int i = n - 1; i >= 0; --i)
current_date = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getDate();
current_month = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getMonth();
if (( current_date != date_today ) && ( current_month != month_today ))
wdContext.nodeBirhtday_List().nodeItab().removeElement(wdContext.nodeBirhtday_List().nodeItab().
getElementAt(i));
wdContext.nodeBirhtday_List().nodeItab().moveNext();
It adds records...
According to Valerys Solution, the IPrivate<CustomController> doesnt show me the required nodes. and gives me 'Unable to resolve' error.
Can you please suggest where I am going wrong
Regards
Abdullah -
Facing problem While deleting rows and adding rows
Hi,
In my form i have pass values to table rows by selecting values from Dropdown list.
i have taken 3 hidden obj and passing the dropdown values to hidden objects and then from hidden objects to table rows.
h1,h2,h2 are hidden obj
EMPNO,EMPNAME, DESIGNATION are drop downlist
i have add button with the following code
if(form1.P1.ItemSet.EMPNO.rawValue != null){
form1.P1.ItemSet.instanceManager.addInstance();
form1.P1.execInitialize();
var dynamicArray = form1.P1.resolveNode("ItemSet[" + arrayIncri + "]");
dynamicArray .EMPNO.rawValue = form1.P1.hidden.h1.rawValue;
dynamicArray .EMPNAME.rawValue = form1.P1.hidden.h2.rawValue;
dynamicArray .DESIGNATION.rawValue = form1.P1.hidden.h3.rawValue;
arrayIncri++;
form1.P1.SF1.EmpID.rawValue = null;
form1.P1.SF1.EmpName.rawValue = null;
form1.P1.SF1.Designation.rawValue = null;
My delete button code is
_ItemSet.removeInstance(this.parent.index);
form1.P1.execInitialize();
My problem is adding is happening while click and deleting is happening to the perticular row but once i delete paricular row then again if i want to add new row then it is taking null values . and agian if i click add then the values are passing to the next row
means i am getting null row if i do add funtionality after delete funtionality....
Please help me out in this..
Subba reddyHi,
I got the answer for this query, but when i do download and upload of the files from R/3 to GRC. Still it is not showing me the new transactions which were developed in R/3.
it means when i try to add the transaction in a function, under search mode with respective of the r/3 system, it is not showing me the search results.
What i did was, i run the reports /VIRSA/ZCC_DOWNLOAD_DESC & /VIRSA/ZCC_DOWNLOAD_SAPOBJ and uploaded them as below in GRC.
Text Objects - /VIRSA/ZCC_DOWNLOAD_DESC
permissions - /VIRSA/ZCC_DOWNLOAD_SAPOBJ
For each of the download i get 2 files for each and i tried to upload both of them but no luck.
Please suggest me, as am missing anything in this process
SV -
Hi,
i want to delete all rows in a table which will be automaticlly updatet in a thread. the problem is that i get somtimes the message 9>=9 or 8>=3. did somebody know what that means ?!?it means the row index that you are trying to remove doesnt exist.
9>=9 means that you are trying to remove row index 9 in a table that has only 9 itmes (remember its zero based)
there's probably something dodgy with you remove code.
off the top of my head try looping through with (rowcount - 1) -
Problems on deleting rows in UIX pages
Hi,
I am new on using BC4J, Struts and uiXML and I am having some problems on it. I have tried to make a simple create/update/delete web application.
First, I have created a DataAction which PageForward displays a table with data from a view object. This page allows the user to select a row and request its deletion by clicking on a submit button.
The event triggered by the submit button calls a DataAction that displays another PageForward, composed by a read-only form, that asks for confirmation. If the user confirms, a DataAction that performs the Delete method from the view is called and the deletion is successful.
A problem occurs when I change the readonly property of the fields of the confirmation form: the row deleted is not the selected, but a random one.
I would like to know why the readonly property of the fields change the Delete method behavior. Also, an example of a simple create/update/delete struts page flow would be appreciated.
Thanks in advance.
Verner.Verner,
Are you using JDeveloper 10g Preview or JDeveloper 9i v9.0.3?
I'm not sure what problem you are having, but I just tried to reproduce your application by doing the following in JDeveloper 10g Preview:
1) Created new business components.
2) Created a new struts-config.xml.
3) Added to the Struts config (using the page flow modeler):
3.a) Browse data action and page forward to browse.uix
3.b) Confirm data action and page forward to confirm.uix
3.c) Delete data action.
3.d) Link from browse action to confirm action for outcome "delete".
3.e) Link from confirm action to delete action for outcome "delete".
3.f) Link from confirm action to browse action for outcome "cancel".
3.g) Link from delete action to browse action for outcome "success".
4) Then I made the delete action do the deletion by dragging the Delete operation from my data control onto the Delete data action in the page flow.
5) Then I created my UI pages.
browse.uix just has a read-only table created via the Data Control palette and then a delete button that fires the "delete" event when clicked. The delete handler returns the delete outcome.
confirm.uix has a read-only form also dragged from the Data Control palette for the same data control. There's a delete and a cancel button, each of which fire an event of the same name that returns an outcome of the same name.
When I run browseDataAction, I see my table. When I click "Delete", I see the read-only form with the details for the selected row. Clicking "Delete" from the confirmation page removes the same row I saw in the confirmation page, then goes back to the browse page showing the same range but with the given row removed.
If you continue to see a problem, what exactly is wrong? It should be the case that (A) the row selected in the table, (B) the row whose details are shown in the confirmation page, and (C) the row that gets deleted are the same row. If it's not the case that A = B = C, please give more details about what values of these three rows you are seeing. Is A=B but not =C? Or is B=C but not =A?
Hope this helps,
-brian
UIX Team -
Problem in deleting row from database in table component
Hi,
I have a table component that its content change by diffrent links.
in this table i have a hyperlink in each row to deleting that row from dataBase.
so i must get the current row .
i do it like this:
define a rowset in the page that have a delete query :
delete from response where responseID=?
in action of delete hyperlink ,i have:
Integer responseId=(Integer)responseDataProvider.
getValue("#{currentRow.value['responseID']}") ;
getSessionBean1().getResponseRowSet().setObject(1,responseId);
getSessionBean1().getResponseRowSet().execute();
but in first line occure a exception:
illigalArgument #{currentRow.value['responseID']}
thanks.by using data table
first you should get current record (row that recived action)
then delete it by using data provider.
I do not think that you could execute delete statement using rowSets because they just can provide Select statements.
btw , following code will retrive clicked row from data table and
delete that row
try {
RowKey rk = getTableRowGroup1().getRowKey();
if (rk != null) {
testDataProvider.removeRow(rk);
testDataProvider.commitChanges();
} catch (Exception ex) {
log("ErrorDescription", ex);
error(ex.getMessage());
hth
masoud -
Hi experts,
in the following method. I am deleting the records from the BAPI output table where the date and month do not correspond to todays date and current month.
When I execute the BAPI for one employee it gives me the correct output. ie one record. But when I execute it for all the employees and when I use the following code. It gives me a blank output.
public void wdDoInit()
//@@begin wdDoInit()
int date_today, current_date;
int month_today, current_month;
char date_satisfied, month_satisfied;
Date date = new Date(System.currentTimeMillis());
date_today = date.getDate();
month_today = date.getMonth();
int n = wdContext.nodeBirhtday_List().nodeItab().size();
int leadSelected = wdContext.nodeBirhtday_List().nodeItab().getLeadSelection();
// loop backwards to avoid index troubles
for (int i = n - 1; i >= 0; --i) {
current_date = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getDate();
current_month = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getMonth();
if (( current_date != date_today ) && ( current_month != month_today ))
wdContext.nodeBirhtday_List().nodeItab().removeElement(wdContext.nodeBirhtday_List().nodeItab().
getElementAt(i));
//@@end
can anybody please suggest me the solution
Regards
AbdullahHi Abhijeet,
I tried it the way you said using
wdContext.nodeBirhtday_List().nodeItab().moveFirst();
// loop backwards to avoid index troubles
for (int i = n - 1; i >= 0; --i)
current_date = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getDate();
current_month = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getMonth();
if (( current_date != date_today ) && ( current_month != month_today ))
wdContext.nodeBirhtday_List().nodeItab().removeElement(wdContext.nodeBirhtday_List().nodeItab().
getElementAt(i));
wdContext.nodeBirhtday_List().nodeItab().moveNext();
It adds records...
According to Valerys Solution, the IPrivate<CustomController> doesnt show me the required nodes. and gives me 'Unable to resolve' error.
Can you please suggest where I am going wrong
Regards
Abdullah -
How to delete row by row comparing to first collumn?
Hello!
I have a problem - I need to delete row by row , but the problem is, that I know that first COLUMN of any table is a PK.
To retrieve COLUMN NAME I use:
SELECT column_name, table_name FROM USER_TAB_COLUMNS WHERE column_id = 1 and table_name = c1.tmp_table_name;
But this somehow doesn't work.
Below you can see my script (not worked for now):
declare
xxx varchar2(100);
begin
for c1 in (select table_name, tmp_table_name from tmp_tables) loop
EXECUTE IMMEDIATE
' SELECT column_name into '|| xxx ||' FROM USER_TAB_COLUMNS WHERE column_id = 1 and table_name = ' ||''''||c1.tmp_table_name||'''';
execute immediate
'begin
for c2 in (select * from '|| c1.tmp_table_name || ') loop begin
insert into '|| c1.table_name || ' values c2; delete from '|| c1.tmp_table_name || ' where ' || xxx ||' = c2.'||xxx ||'; exception when others then null; end; end loop; end;';
end loop;
end;
P.S. Inserts work perfect. I have a problem with delete rows that are in c1.table_name, from c1.tmp_table_name (this two tables have the same structure, PK, always), because I have different column names in another tables tables that are PK. (for example: K, ID, NS and so on) please help me to write correct script.
For example for first fetched row it will be like:
begin
for c1 in (select table_name, tmp_table_name from tmp_tables) loop
execute immediate
'begin for c2 in (select * from '|| c1.tmp_table_name || ') loop begin
insert into '|| c1.table_name || ' values c2; delete from '|| c1.tmp_table_name ||' where K = c2.K; exception when others then null; end; end loop; end;';
end loop;
end;
That script works perfect. But I have many others tables with different PK - not K.Solution with error-logging table
-- create the error-logging table
CREATE TABLE tbl_MergeErrors (
Stamp TIMESTAMP(3),
TableName VARCHAR2(30),
KeyColumn VARCHAR2(30),
KeyValue VARCHAR2(4000),
ErrorCode NUMBER(5),
ErrorMsg VARCHAR2(4000),
CONSTRAINT pk_MergeErrors
PRIMARY KEY (TableName, Stamp)
USING INDEX
-- procedure to insert errors
CREATE OR REPLACE
PROCEDURE LogMergeError (pTableName IN VARCHAR2,
pKeyColumn IN VARCHAR2,
pKeyValue IN VARCHAR2)
IS PRAGMA AUTONOMOUS_TRANSACTION;
-- you couldn't insert SQLCODE or SQLERRM directly into a table (ORA-00984)
nSQLCODE NUMBER(5) := SQLCODE;
vcSQLERRM VARCHAR2(4000) := SQLERRM;
BEGIN
INSERT INTO tbl_MergeErrors
(Stamp, TableName, KeyColumn, KeyValue, ErrorCode, ErrorMsg)
VALUES (SYSTIMESTAMP, RTrim( SubStr( pTableName, 1, 30)),
RTrim( SubStr( pKeyColumn, 1, 30)), SubStr( pKeyValue, 1, 4000),
nSQLCODE, vcSQLERRM);
COMMIT WORK;
-- if an error occured here, then just roll back the autonomous transaction
EXCEPTION
WHEN OTHERS THEN ROLLBACK WORK;
END LogMergeError;
-- create the tables and insert test-data
CREATE TABLE TMP_TABLES (
TABLE_NAME VARCHAR2(200),
TMP_TABLE_NAME VARCHAR2(200),
CONSTRAINT TMP_TABLES_X PRIMARY KEY (TABLE_NAME)
CREATE TABLE TMP_KL002 (
K VARCHAR2(40),
N VARCHAR2(200)
CREATE TABLE TMP_TABLE1 (
NS VARCHAR2(40),
N VARCHAR2(200)
CREATE TABLE KL002 (
K VARCHAR2(40),
N VARCHAR2(200),
CONSTRAINT PK_KL002 PRIMARY KEY (K)
CREATE TABLE TABLE1 (
NS VARCHAR2(40),
N VARCHAR2(200),
CONSTRAINT PK_TABLE1 PRIMARY KEY (NS)
INSERT INTO TMP_TABLES (TABLE_NAME, TMP_TABLE_NAME) VALUES ('kl002','tmp_kl002');
INSERT INTO TMP_TABLES (TABLE_NAME, TMP_TABLE_NAME) VALUES ('table1','tmp_table1');
INSERT INTO tmp_KL002 (K, N) VALUES ('00', 'none');
INSERT INTO tmp_KL002 (K, N) VALUES ('07', 'exists');
INSERT INTO tmp_KL002 (K, N) VALUES ('08', 'not assigned');
INSERT INTO tmp_table1 (NS, N) VALUES ('2000', 'basic');
INSERT INTO tmp_table1 (NS, N) VALUES ('3000', 'advanced');
INSERT INTO tmp_table1 (NS, N) VALUES ('4000', 'custom');
COMMIT WORK;
-- to test, if it works correct when primary key values exists before
INSERT INTO KL002 VALUES ('07', 'exists before');
COMMIT WORK;
-- check the data before execution
SELECT * FROM TMP_KL002 ORDER BY K;
SELECT * FROM KL002 ORDER BY K;
SELECT * FROM TMP_TABLE1 ORDER BY NS;
SELECT * FROM TABLE1 ORDER BY NS;
-- empty the error-logging table
TRUNCATE TABLE tbl_MergeErrors DROP STORAGE;
-- a solution
DECLARE
PLSQL_BLOCK CONSTANT VARCHAR2(256) := '
BEGIN
FOR rec IN (SELECT * FROM <0>) LOOP
BEGIN
INSERT INTO <1> VALUES rec;
DELETE FROM <0> t WHERE (t.<2> = rec.<2>);
EXCEPTION
WHEN OTHERS THEN
LogMergeError( ''<1>'', ''<2>'', rec.<2>);
END;
END LOOP;
END;';
BEGIN
FOR tabcol IN (SELECT t.Tmp_Table_Name, t.Table_Name, c.Column_Name
FROM Tmp_Tables t,
User_Tab_Columns c
WHERE (c.Table_Name = Upper( t.Tmp_Table_Name))
AND (c.Column_ID = 1)
) LOOP
EXECUTE IMMEDIATE Replace( Replace( Replace( PLSQL_BLOCK,
'<0>', tabcol.Tmp_Table_Name),
'<1>', tabcol.Table_Name),
'<2>', tabcol.Column_Name);
END LOOP;
END;
-- check the data after execution ...
SELECT * FROM TMP_KL002 ORDER BY K;
SELECT * FROM KL002 ORDER BY K;
SELECT * FROM TMP_TABLE1 ORDER BY NS;
SELECT * FROM TABLE1 ORDER BY NS;
-- ... and also the error-logging table
SELECT * FROM tbl_MergeErrors ORDER BY Stamp, TableName;
-- of couse you must issue an COMMIT (the ROLLBACK is only for testing
ROLLBACK WORK;
-- drop the test-tables
DROP TABLE TABLE1 PURGE;
DROP TABLE KL002 PURGE;
DROP TABLE TMP_TABLE1 PURGE;
DROP TABLE TMP_KL002 PURGE;
DROP TABLE TMP_TABLES PURGE;
-- you shouldn't drop the error-logging table, but I use it to free up my db
DROP TABLE tbl_MergeErrors PURGE;Greetings, Niels -
hi,
I have a table with set of values. added three buttons below that in table. add row, delete row, save.
if I delete the row and save and if i come again to that application still that deleted row remains. what might be the problem?you can use flag in your internal table,
when you press delete button after selecting the particular row, set the flag for this entry in itab.
now in save event loop through the table checking flag, and delete enteries. now bind the table again by the itab.
you can do the same thing in delete button event also,
if not solved, please explain more
Yogesh N -
Hi, I'm new in apex and I tried to build master detail report on some view. Everything is cool but "delete checked" doesn't work.
"ORA-20001: Error in multi row delete operation: row= , ORA-06502: PL/SQL: numeric or value error: NULL index table key value,"
the problem is that I don't know what is wrong :), I have a special trigger "instead of delete on MY_VIEW", but in this error problem is not explained.
Anybody knows what can be wrong? It is probably a problem with trigger or multi row doesn't work with views? I couldn't find how MRD knows what kind of statement use to delete rows so I don't know if the statement that program used is correct. In debug it lokks that:
0.32: ...Do not run process "ApplyMRU", process point=AFTER_SUBMIT, condition type=REQUEST_IN_CONDITION, when button pressed=
0.32: ...Process "ApplyMRD": MULTI_ROW_DELETE (AFTER_SUBMIT) #OWNER#:MY_VIEW:ITEM1:ITEM2
0.33: Show ERROR page...
0.33: Performing rollback...
thanks for any help
//sorry for english mistakes
edit: it doesn't matter if I use in trigger delete from ... where item1=:OLD.item1 ; or if I use item1=:P4_item1 (which actually saves correct values)
Edited by: user5931224 on 2009-06-13 08:55I realised that this is not a problem with trigger, I changed trigger to "NULL;" and problem is the same. Maybe sb used master detail on view not only on tables and know what can be wrong in this situation?
-
Problem of deletion of rows in jtable, table refreshing too
Hi,
I have a table with empty rows in the beginning with some custom properties( columns have fixed width...), later user would be adding to the rows to this table and can delete, I've a problem while deleting the rows from table,
When a selected row is deleted the model is also deleting the data but the table(view) is not refreshed.
Actually i'm selecting a cell of a row, then hitting the delete button.
So the model is deleting the information, but i'm not able to c the fresh data in table( especially when the last cell of last row is selectd and hit the delete button, i am getting lots of exception)
Kindly copy the below code and execute it, and let me know,
* AuditPanel.java
* Created on August 30, 2002, 3:05 AM
import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.Vector;
* @author yaman
public class AuditPanel extends javax.swing.JPanel {
// These are the combobox values
private String[] acceptenceOptions;
private Vector colNames;
private Color rowSelectionBackground = Color.yellow;
private int rowHeight = 20;
private int column0Width =70;
private int column1Width =96;
private int column2Width =327;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
/** Creates new form AuditPanel */
public AuditPanel() {
public void renderPanel(){
initComponents();
public String[] getAcceptenceOptions(){
return acceptenceOptions;
public void setAcceptenceOptions(String[] acceptenceOptions){
this.acceptenceOptions = acceptenceOptions;
public Vector getColumnNames(){
return colNames;
public void setColumnNames(Vector colNames){
this.colNames = colNames;
public Vector getData(){
Vector dataVector = new Vector();
/*dataVector.add(null);
dataVector.add(null);
dataVector.add(null);
return dataVector;
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jPanel2 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jTable1 = new javax.swing.JTable();
setLayout(new java.awt.GridBagLayout());
setBorder(new javax.swing.border.EmptyBorder(0,0,0,0));
jPanel2.setLayout(new java.awt.GridBagLayout());
jPanel2.setBorder(new javax.swing.border.EmptyBorder(0,0,0,0));
jButton1.setText("Add");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 8;
gridBagConstraints.insets = new java.awt.Insets(0, 1, 5, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
jPanel2.add(jButton1, gridBagConstraints);
jButton2.setText("Delete");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
jPanel2.add(jButton2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
add(jPanel2, gridBagConstraints);
jPanel1.setLayout(new java.awt.GridBagLayout());
jPanel1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED, Color.black, Color.gray) );
jTable1.setModel(new javax.swing.table.DefaultTableModel(getData(), getColumnNames()));
// get all the columns and set the column required properties
java.util.Enumeration enum = jTable1.getColumnModel().getColumns();
while (enum.hasMoreElements()) {
TableColumn column = (TableColumn)enum.nextElement();
if( column.getModelIndex() == 0 ) {
column.setPreferredWidth(column0Width);
column.setCellEditor( new ValidateCellDataEditor(true) );
if( column.getModelIndex() == 1) {
column.setPreferredWidth(column1Width);
column.setCellEditor(new AcceptenceComboBoxEditor(getAcceptenceOptions()));
// If the cell should appear like a combobox in its
// non-editing state, also set the combobox renderer
//column.setCellRenderer(new AcceptenceComboBoxRenderer(getAcceptenceOptions()));
if( column.getModelIndex() == 2 ) {
column.setPreferredWidth(column2Width); // width of column
column.setCellEditor( new ValidateCellDataEditor(false) );
jScrollPane1 = new javax.swing.JScrollPane(jTable1);
jScrollPane1.setPreferredSize(new java.awt.Dimension(480, 280));
jTable1.setMinimumSize(new java.awt.Dimension(60, 70));
//jTable1.setPreferredSize(new java.awt.Dimension(300, 70));
//jScrollPane1.setViewportView(jTable1);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
jPanel1.add(jScrollPane1, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
add(jPanel1, gridBagConstraints);
// set the row height
jTable1.setRowHeight(rowHeight);
// set selection color
jTable1.setSelectionBackground(rowSelectionBackground);
// set the single selection
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// avoid table header to resize/ rearrange
jTable1.getTableHeader().setReorderingAllowed(false);
jTable1.getTableHeader().setResizingAllowed(false);
// Table header font
jTable1.getTableHeader().setFont( new Font( jTable1.getFont().getName(),Font.BOLD,jTable1.getFont().getSize() ) );
jButton1.setMnemonic(KeyEvent.VK_A);
// action of add button
jButton1.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent actionEvent){
// If a button press is the trigger to leave a JTable cell and save the data in model
if(jTable1.isEditing() ){
//System.out.println("table is edition ");
String text=((javax.swing.text.JTextComponent)jTable1.getEditorComponent()).getText();
jTable1.setValueAt(text,jTable1.getSelectedRow(),jTable1.getSelectedColumn()) ;
jTable1.getCellEditor().cancelCellEditing();
// find out total available rows
int totalRows = jTable1.getRowCount();
int cols = jTable1.getModel().getColumnCount();
if( jTable1.getModel() instanceof DefaultTableModel ) {
((DefaultTableModel)jTable1.getModel()).addRow(new Object[cols]);
int newRowCount = jTable1.getRowCount();
// select the first row
jTable1.getSelectionModel().setSelectionInterval(newRowCount-1,newRowCount-1);
jButton2.setMnemonic(KeyEvent.VK_D);
// action of Delete button
jButton2.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent actionEvent){
int totalRows = jTable1.getRowCount();
// If there are more than one row in table then delete it
if( totalRows > 0){
int selectedOption = JOptionPane.showConfirmDialog(null,"Are you sure you want to delete this audit row?","Coeus", JOptionPane.YES_NO_OPTION);
// if Yes then selectedOption is 0
// if No then selectedOption is 1
if(0 == selectedOption ){
// get the selected row
int selectedRow = jTable1.getSelectedRow();
System.out.println("Selected Row "+selectedRow);
if( selectedRow != -1 ){
DefaultTableModel dm= (DefaultTableModel)jTable1.getModel();
java.util.Vector v1=dm.getDataVector();
System.out.println("BEFOE "+v1);
v1.remove(selectedRow);
jTable1.removeRowSelectionInterval(selectedRow,selectedRow);
System.out.println("After "+v1);
}else{
// show the error message
JOptionPane.showMessageDialog(null, "Please Select an audit Row", "Coeus", JOptionPane.ERROR_MESSAGE);
} // end of initcomponents
class AcceptenceComboBoxRenderer extends JComboBox implements TableCellRenderer {
public AcceptenceComboBoxRenderer(String[] items) {
super(items);
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(rowSelectionBackground);
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
// Select the current value
setSelectedItem(value);
return this;
class AcceptenceComboBoxEditor extends DefaultCellEditor {
public AcceptenceComboBoxEditor(String[] items) {
super(new JComboBox(items));
} // end editor class
public class ValidateCellDataEditor extends AbstractCellEditor implements TableCellEditor {
// This is the component that will handle the editing of the
// cell value
JComponent component = new JTextField();
boolean validate;
public ValidateCellDataEditor(boolean validate){
this.validate = validate;
// This method is called when a cell value is edited by the user.
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int rowIndex, int vColIndex) {
if (isSelected) {
component.setBackground(rowSelectionBackground);
// Configure the component with the specified value
JTextField tfield =(JTextField)component;
// if any vaidations to be done for this cell
if(validate){
//tfield.setDocument(new JTextFieldFilter(JTextFieldFilter.NUMERIC,4));
tfield.setText( ((String)value));
// Return the configured component
return component;
// This method is called when editing is completed.
// It must return the new value to be stored in the cell.
public Object getCellEditorValue() {
return ((JTextField)component).getText();
// This method is called just before the cell value
// is saved. If the value is not valid, false should be returned.
public boolean stopCellEditing() {
String s = (String)getCellEditorValue();
return super.stopCellEditing();
public void itemStateChanged(ItemEvent e) {
super.fireEditingStopped();
}//end of ValidateCellDataEditor class
public static void main(String args[]){
JFrame frame = new JFrame();
AuditPanel auditPanel = new AuditPanel();
frame.getContentPane().add(auditPanel);
auditPanel.setAcceptenceOptions(new String[]{"Accepted", "Rejected", "Requested"} );
java.util.Vector colVector = new java.util.Vector();
colVector.add("Fiscal Year");
colVector.add("Audit Accepted");
colVector.add("Comment" );
auditPanel.setColumnNames( colVector);
auditPanel.renderPanel();
frame.pack();
frame.show();Hi,
I've got the solution for it. As when the cursor is in cell of
a row and hit the delete button, the data in that cell is not saved,
So i'm trying to save the data first into the model then firing the action event by doing this ..
jButton2.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent actionEvent){
// If a button press is the trigger to leave a JTable cell and save the data in model
if(jTable1.isEditing() ){
String text=((javax.swing.text.JTextComponent)jTable1.getEditorComponent()).getText();
jTable1.setValueAt(text,jTable1.getSelectedRow(),jTable1.getSelectedColumn()) ;
jTable1.getCellEditor().cancelCellEditing();
// HERE DO THE DELETE ROW OPERATION
<yaman/> -
Delete row internal bank problem
Hi,
i wasn't able to delete row of my internal bank, despite i delete this bank in my BP account and in all payment method.
Also i delete all the information in internal banck account ( branch, count number, iban,etc) but when i delete the row the system give me this messagge error
bank account is currently in use and therefore can not be eliminated 705-20
i currently use 2007A SP 01 patch level 7
how can i resolve this problem? thanks a lotHi,
thanks a lot, but this bank is not linked to any one field in Sap B1
1) in initial details there isn't
2) in payment methods there isn't
3) in registry BP there isn't
where can i has to find it????
By copy espress i had copied all payment methods ( with this bank), and after i deleted this payment methods without using this payment method in anyone Sap b1 documents....and here the strange thing -
Bizarre Problem for table row deletion.please help
Folks
I am facing a most BIZARRE PROBLEM!!!
I have a table with a deleteButton by the side.
The table has 3 rows
ABC-----DELETE
BCD-----DELETE
VDG-----DELETE
I click on the delete Button of the first row,the record gets deleted from the table,
Now there are 2 records..
BCD-----DELETE
VDG--- -DELETE
I click on the delete Button of the first row,and I get the error
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1
The table.getSelectedRow() becomes -1 automatically...
Now if I comment out the Table deletion statements, and I click on any delete Button
i get the correct messages
You clicked row : 1
you clicked row : 2
After deletion of the first record,i am unable to delete the 2nd record,i get the
error above.
any suggestions
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Table Row clicked is : " + table.getSelectedRow());
// Delete row from window.
((DefaultTableModel)table.getModel()).removeRow(table.getSelectedRow());
table.revalidate();
};after deleting the row call this method
fireTableRowsDeleted()
-Ashish -
Delete rows from table...Bizarre problem.
Folks
i HAVE this bizarre problem.
I hava a Java class which displays data read into a table with a delete
option by the side of each row.
Now lets assume you have 3 rows in the Table.
abc deleteButton
efg deleteButton
xyz deleteButton
When I click the first delete,that row gets deleted from the table.(perfect...)
Now I have 2 rows.
When I click on the first row,I get the error
'You clicked -1'
java.lang.ArrayIndexOutofBoundsException: -1 < 0.
Can anyone tell me why this is happening even though there are rows in the table.???
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("You clicked row : " + table.getSelectedRow());
javax.swing.table.TableModel model = table.getModel();
Object o = model.getValueAt(table.getSelectedRow(),0);
//System.out.print(model.getValueAt(table.getSelectedRow(), 0));
//System.out.println();
MyDeleteFunction(o.toString());
// Delete row from window.
((DefaultTableModel)table.getModel()).removeRow(table.getSelectedRow());
table.revalidate();
table.repaint();Hi ritu,
This class is called
new DisplayCall_IDTodisconnect(hashTable);
its a long file.
its attached below.
The rows are displayed by reading a hashtable into a vector
and the vector is iterated and appended..
public class DisplayCall_IDToDisconnect {
public static JTable createTable(Vector data, String buttonLabel, ActionListener action){
return createTable(data.iterator(), buttonLabel, action);
public static JTable createTable(
Iterator dataIterator,
String buttonLabel,
ActionListener action) {
DefaultTableModel model = new DefaultTableModel() {
public boolean isCellEditable(int row, int col) {
return col == 1;
model.setColumnCount(2);
while (dataIterator.hasNext()) {
Object[] row = { dataIterator.next().toString(), null };
model.addRow(row);
DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
columnModel.addColumn(new TableColumn(0, 100));
columnModel.addColumn(new TableColumn(1, 80,
new TableButtonCellRenderer(buttonLabel),
new TableButtonCellEditor(buttonLabel, action)
JTable table = new JTable(model, columnModel) {
public void valueChanged(ListSelectionEvent e) {
super.valueChanged(e);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
return table;
private static class TableButtonCellRenderer implements TableCellRenderer {
final JButton button;
TableButtonCellRenderer(String buttonLabel) {
button = new JButton(buttonLabel);
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus, int row, int column) {
return button;
private static class TableButtonCellEditor
extends AbstractCellEditor
implements TableCellEditor, ActionListener {
final JButton button;
final ActionListener callback;
TableButtonCellEditor(String buttonLabel, ActionListener callback) {
button = new JButton(buttonLabel);
this.callback = callback;
button.addActionListener(this);
public Component getTableCellEditorComponent(
JTable table,
Object value,
boolean isSelected,
int row, int column) {
return button;
public Object getCellEditorValue() {
return null;
public void actionPerformed(ActionEvent e) {
button.getParent().requestFocus();
callback.actionPerformed(e);
static JTable table;
Vector items;
final ClientManager clientMgr;
// Constructor.
public DisplayCall_IDToDisconnect(Hashtable callLegTable,ClientManager clientMgr){
Vector vCSeqnos = displayCSeqNos(callLegTable);
this.clientMgr = clientMgr;
JFrame frame = new JFrame("Disconnect Options");
/*Vector*/ items = new Vector();
Enumeration vEnum = vCSeqnos.elements();
while(vEnum.hasMoreElements()){
items.add(vEnum.nextElement());
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
//System.out.println("You clicked row ,col: " + table.getSelectedRow()+
// table.getSelectedColumn());
javax.swing.table.TableModel model = table.getModel();
Object o = model.getValueAt(table.getSelectedRow(),0);
System.out.print(model.getValueAt(table.getSelectedRow(), 0));
System.out.println();
closeConnection(o.toString());
// Delete row from window too.
((DefaultTableModel)table.getModel()).removeRow(table.getSelectedRow());
table.revalidate();
table = DisplayCSeqNos.createTable(items, "Disconnect", al);
frame.getContentPane().add(new JScrollPane(table));
frame.pack();
frame.show();
} // End Constructor.
public void closeConnection(String s){
/*1. Disconnect the current session*/
this.clientMgr.disconnectCall(s);
/*2. refresh the Disconnect window*/
this.refreshWindow();
public Vector displayCSeqNos(Hashtable callLegTable){
Enumeration eNum;
String str;
Vector v = new Vector();
eNum=callLegTable.keys();
while(eNum.hasMoreElements()){
str = (String) eNum.nextElement();
//System.out.println("Key : " + str + " Value : " + callLegTable.get(str));
v.addElement(str);
return v;
} // End of displayCSeqNos. -
I'm having a problem with the add row and delete row for my table. I have a table set up with the add row button in the header, and the delete row button in the first cell of the row beneath the header. I have it set so that the initial count of the row is 2. My problem is if the user adds several rows with data, and save the form. When that user goes back into the same form later, it keeps the several rows that the user entered, which is fine, but then it automatically adds 3 more blank rows to the table, which I don't want. I don't understand why it is doing this. Does anyone have a clue to why this is happening?
Thanks
ConnieHi Connie,
Just make sure that you have checked the below thing.\
File > Form Properties > Run tIme > Scripting > Automatically is checked.
Thanks,
Bibhu.
Maybe you are looking for
-
Help errors ATI radeon hd 4550
error: the catalyst control center is not supported bu the driver version of your enabled graphics adapter. please update your AMD graphics driver, or enable your amd adapter using the displays manager. <- this messenger my computer. i try any time
-
How to reconfigure numbering scheme of scsi-controllers manually after Inst
We installed an E420 with solaris 8. This machine should be part of a sun cluster for this reason the numbering of the scsi-controllers which manage the ecternal diskarrays should be identical on all machines. Om on machine we had another external di
-
Hi, I know that Costs at Operation Level is possible in Ehp6 version of ECC 6.0, but in our system it is not available/not showing. I hope some business function need to activate to get the Costs at Operation Level node, Any body have idea how to act
-
Keeping TreeSet order up to date
As the properties change in the object kept in the TreeSet, the order becomes incorrect (order is set by custom Comparator). I was just wondering what the most efficient way to keep the TreeSet in order. The only way i have come up with is remove and
-
Is it true that putting your ipod on hold wastes battery life? People i know say it does, and so far,(i'm testing this hypothesis), it seems to be increasing my battery--pretty good actually. But also, is it really worth it? I mean, does the hold but