[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.936
    Hallo,

    bevor Du irgendwas anderes versuchst, füge zunächst ein paar Blanks ein, vor allem beim ROUND-Befehl, nach dem Komma.
    (Kann auch sein, dass die Anzeige hier im Forum sie verschluckt hat!)

    SQL interpretiert solche die Angaben ,Zahl als Dezimalstelle und kommt damit ins schleudern.

    Vielleicht war das das Problem:
    PHP-Code:
    C/EXEC SQL 
    C
    UPDATE LIB/FILE SET 
    C
    FELD3 round((100/FELD2), 4) * FELD1 * -
    C
    WHERE FELD 2 AND FELD1 0
    C
    /END-EXEC 
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Feb 2006
    Beiträge
    25
    Danke für die schnelle Antwort.... Leider kein Erfolg.

    FELD3 = round((100/FELD2), 4) klappt problemlos (auch ohne Runden).

    Sobald die 1. Multiplikation ins Spiel kommt erscheint der Fehler.

    Mit diesen Zahlen passierts:

    F1 = 2298.9
    F2 = 212.5

    auch diese Felder sind definiert mit Packed 17,6.

    Wie bereits erwähnt, interaktiv wird alles berechnet wie gewünscht.

    Haben wir eventuell ein Problem mit dem PTF Stand? Wir arbeiten mit R5V3

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.768
    Das Problem sind auch hier die Zwischenergebnisse:

    Bei "100 / Feld2" wird ggf. ein Zwischenergebnis bereits ohne NK berechnet.
    Versuch es mal mit "100.000000 / Feld2".
    Wenn das nicht klappt, musst du ggf. zusätzlich das Feld2 casten, da es zu viele NK's enthält: dec(feld2, 11, 2).

    Auch die Multiplikation stellt ggf. ein Problem dar, da hier ein Zwischenfeld mit 12 NK's benötigt würde. Also sind auch hier mittels Cast vorher die NK's zu kürzen.

    Zwischen embedded SQL und Dialog-SQL besteht leider immer ein Unterschied, da die embedded Statements ja prepared werden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.936
    Wie Fuerchau sagt, liegt es daran, dass die numerischen Felder zu groß werden.

    Da Du bereits auf Release V5R3M0 bist, kannst Du hast Du die Möglichkeit das Maximum der Anzahl Ziffern und Anzahl Nachkomma-Stellen von 31 auf 63 zu setzen.

    Dies kann entweder im Compile-Befehl CRTSQLRPGI über die OPTION DECRESULT oder durch Einfügen eines entsprechenden SET OPTION-Statements mit der entsprechenden Auswahl.

    Damit sollte es keine Probleme mehr geben.

    Zusätzlich könntest Du noch das Ergebnis der Rundung entsprechend casten. (Hier z.B. auf 7,4)

    PHP-Code:
    C/EXEC SQL 
    C
    UPDATE LIB/FILE SET 
    C
    FELD3 Cast(round((100/FELD2), 4) as Dec(74)) * FELD1 * -
    C
    WHERE FELD 2 AND FELD1 
    C
    /END-EXEC 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Feb 2006
    Beiträge
    25
    Herzlichen Dank euch beiden. Klappt hervorragend....

    Freundliche Grüsse

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 11:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 15:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 12:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 15:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •