tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
268
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    thoser thoser ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    45
    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
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    
       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.
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.885
    Blog-Einträge
    29
    Hallo,

    bau doch mal ein kleines Beispiel für die Berechnung anhand von Daten aus einem double[] das kann dann jeder auch nachvollziehen und direkt ausprobieren.

    Weiterhin solltest du genauer beschreiben, was schief geht.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    thoser thoser ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    45
    Mit schief gehen, meinte ich, es kommt ein Ergebnis mit 12-Stellen vor dem Komma raus.
    Mittlerweile bin ich sicher, das es ein reines SQL-Problem ist, darum schreibe ich es mal dort rein.
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 01.05.08, 13:38
  2. Antworten: 1
    Letzter Beitrag: 17.02.07, 18:39
  3. COM4J eine alternative Java - COM Bridge mit Java 5 Mitteln
    Von Thomas Darimont im Forum Java Technology News
    Antworten: 0
    Letzter Beitrag: 10.10.06, 17:49
  4. Java is Hot! Java News - Java Polis 2005
    Von Thomas Darimont im Forum Java
    Antworten: 0
    Letzter Beitrag: 03.12.05, 16:23
  5. Antworten: 0
    Letzter Beitrag: 30.12.04, 09:11

Stichworte