Ich soll die Formel für ZÄR in Java programmieren.
In der Beschreibung steht:
die Summe über alle Einträge der Spalte "SHIFT_STD_GB" wo das Feld "WWKTO" nicht leer und in WP_POSITIONEN ist "WWKZH" ist 0 oder 1 minus der Summe über alle Einträge der Spalte "BARWERT_AKT" in "STAT_BARWERTSIMULATION" wo das Feld "WWKTO" nicht leer ist und in "WP_POSITION" ist "WWKZH" '0' oder '1'.
Ich habe bisher folgendes
Das Ergebnis ist kompletter Unsinn, allerdings finde ich nicht heraus wo der Fehler ist.
Falls es wichtig ist, die Datenbank ist eine DB2.
In der Beschreibung steht:
die Summe über alle Einträge der Spalte "SHIFT_STD_GB" wo das Feld "WWKTO" nicht leer und in WP_POSITIONEN ist "WWKZH" ist 0 oder 1 minus der Summe über alle Einträge der Spalte "BARWERT_AKT" in "STAT_BARWERTSIMULATION" wo das Feld "WWKTO" nicht leer ist und in "WP_POSITION" ist "WWKZH" '0' oder '1'.
Ich habe bisher folgendes
Java:
public MahViewReply fillS_ZAER_BB(MahViewReply reply) throws SQLException
{
StringBuffer queryBarwertAkt = new StringBuffer("SELECT SUM (barwert_akt) FROM rm.STAT_BARWERTSIMULATION s, rm.RISKDATEN r, rm.WP_POSITION w WHERE s.MANDANT_ID = ");
PreparedStatement ps = null;
ResultSetMetaData rsmt = null;
Statement stmt = DBUtil.createStatement(conn);
BigDecimal wwkzh = new BigDecimal(0);
int werte[] = new int[8];
BigDecimal erg = new BigDecimal(0);
BigDecimal barwert = new BigDecimal(0);
BigDecimal tmp = new BigDecimal(0);
String wwkto = null;
// SZAERBB
String queryS51 = new String("SELECT wwkto, "+ shiftStdGb +" FROM rm.STAT_BARWERTSIMULATION s, rm.RISKDATEN r WHERE s.wwkto ");
try
{
ps = DBUtil.prepareStatement(conn,queryS51 + " <> '' AND s.mandant_id = " + mandant + " AND s.stichtag = '" + stichtag + "' AND r.inaktiv = 0 AND s.stichtag = r.stichtag AND s.mandant_id = r.mandant_id AND r.risiko_art = 'WP' GROUP BY s.wwkto, " + shiftStdGb);
rs = DBUtil.executeQuery(ps);
while (rs.next())
{
wwkto = rs.getString(1);
// alle Ergebnisse auslesen
for (int vw = 2 ; vw <= rsmt.getColumnCount(); vw++)
{
tmp = tmp.add(rs.getBigDecimal(vw));
}
}
erg = erg.add(tmp);
// nun Barwert abfragen
queryBarwertAkt.append(mandant + " AND s.STICHTAG = '" + stichtag + "' ");
queryBarwertAkt.append(" AND r.INAKTIV = 0 ");
queryBarwertAkt.append(" AND r.MANDANT_ID = s.MANDANT_ID ");
queryBarwertAkt.append(" AND r.STICHTAG = s.STICHTAG ");
queryBarwertAkt.append(" AND r.RISIKO_ART = 'WP' ");
queryBarwertAkt.append(" AND w.WWKZH IN ('0', '1') ");
queryBarwertAkt.append(" AND s.MANDANT_ID = w.MANDANT_ID ");
queryBarwertAkt.append(" AND s.STICHTAG = w.STICHTAG ");
ps = DBUtil.prepareStatement(conn, queryBarwertAkt.toString());
rs = DBUtil.executeQuery(ps);
if (!rs.next())
{
wwkzh = new BigDecimal(9);
}
else
{
barwert = rs.getBigDecimal(1);
// jetzt geht alles in die DB
erg = erg.subtract(barwert);
ausgabeSZaerBB.append(" S_ZAER_BB= " + erg);
ausgabeSZaerBB.append(" WHERE mandant_id = " + mandant);
ausgabeSZaerBB.append(" AND stichtag = '" + stichtag + "'");
LOG.finer("AusgabeSZaerBB= " + ausgabeSZaerBB.toString());
flag = stmt.execute(ausgabeSZaerBB.toString());
}
}
catch (SQLException e2)
{
e2.printStackTrace();
LOG.fine("SQLException132 aufgetreten! " + e2);
throw e2;
}
finally
{
DBUtil.safeClose(rs);
DBUtil.safeClose(ps);
DBUtil.safeClose(stmt);
}
if (wwkzh.intValue() < 9)
{
this.fillBonRiskStd(wwkto, reply);
}
return reply;
}
Das Ergebnis ist kompletter Unsinn, allerdings finde ich nicht heraus wo der Fehler ist.
Falls es wichtig ist, die Datenbank ist eine DB2.