hallo,
ich habe folgendes Problem.
Wenn der Nutzer eine JTable-Zelle geändert hat, soll der bisherige Wert in einer Logtabelle samt Änderungsdatum, mandant, usw. abgespeichert werden. Wie komme ich an diesen Wert?
Hier der Code
(Die vielen element++ liegen an den Testdaten (unterschiedl. Anzahl Spalten))
von diesem Fragment geht das ganze los. (2 setValues sind sicherlich unnötig, ich weiß aber im Moment nicht wie ich das ändern kann)
das hier wird aufgerufen
ich habe folgendes Problem.
Wenn der Nutzer eine JTable-Zelle geändert hat, soll der bisherige Wert in einer Logtabelle samt Änderungsdatum, mandant, usw. abgespeichert werden. Wie komme ich an diesen Wert?
Hier der Code
(Die vielen element++ liegen an den Testdaten (unterschiedl. Anzahl Spalten))
von diesem Fragment geht das ganze los. (2 setValues sind sicherlich unnötig, ich weiß aber im Moment nicht wie ich das ändern kann)
Code:
// TableModelListener einfügen
jTable.getModel().addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent event)
{
int zeile = event.getFirstRow();
int spalte = event.getColumn();
System.out.println("event.getColumn " + spalte);
System.out.println("event.getRow " + zeile);
// Änderung mitloggen
if (spalte > -1)
{
model.setValueAt(model.getValueAt(zeile, spalte), zeile, spalte);
}
}
});
VbrmEJB bean = createVbrmEJB();
Object[] liste = bean.getFirst100Wertpapiere(mandant);
int spalte;
int zeile;
int element = 0; // Element im Array
// durch die Liste iterieren
for (zeile = 0; zeile < 100; zeile ++)
{
for (spalte = 0; spalte < SPALTENANZAHL; spalte++)
{
try
{
model.setValueAt(liste[element], zeile, spalte);
}
catch (RuntimeException e1)
{
e1.printStackTrace();
}
element++;
}
model.addRow(rowData);
element++;
element++;
element++;
element++;
element++;
}
das hier wird aufgerufen
Code:
public void setValueAt(Object value, int row, int col)
{
int rowIndex = row;
if (indexes != null)
{
rowIndex = indexes[row];
}
try
{
// nur Änderungen mithämmern, wenn eingelesene Daten aktualisiert werden
GetMandantInfoRequest request = new GetMandantInfoRequest();
String tmp = this.getValueAt(0,0).toString();
request.setMandant(new BigDecimal(tmp));
GregorianCalendar kalender = new GregorianCalendar();
java.util.Date datum = null;
java.sql.Date dbdatum = null;
VbrmEJB aVbrmEJB = createVbrmEJB();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try
{
datum = sdf.parse(this.getValueAt(0,1).toString());
dbdatum = new java.sql.Date(datum.getTime());
request.setStichtag(dbdatum);
}
catch (ParseException e1)
{
// TODO Auto-generated catch block
// e1.printStackTrace();
}
request.setFeld(this.getColumnName(col));
request.setWertAlt_Log(this.getValueAt(row, col).toString());
request.setWertNeu_Log(value.toString());
request.setTabelle("WP_POSITION");
request.setRisikoArt(this.getValueAt(0,2).toString());
request.setRisikoSchl(this.getValueAt(0,3).toString());
// um 100% die richtige Zeitzone zu bekommen
kalender.setTimeZone(TimeZone.getTimeZone("ECT"));
request.setTimestmp (new Timestamp(kalender.getTime().getTime()));
try
{
aVbrmEJB.setLogEntry(request);
}
catch (RemoteException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
// }
}
catch (Exception e)
{
}
super.setValueAt(value, rowIndex, col);
}