[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.072

    Ich verstehe es nicht

    Manchmal glaube ich, ich sollte in Rente gehen.

    Habe hier ein SQL-Statement das im Green Screen mit strsql sauber läuft.
    Code:
         
     insert into dat007 /*11.08.20 09:29*/                       
          (D007PLKZ, D007KZ1, D007ARTNR, D007KZ2, D007FILLE1,   
           D007KZ3, D007FILLE2, D007KZ4, D007FILLE3, D007KZ5,   
           D007PREIS1, D007KZ6,                                 
           D007PREIS2, D007KZ7,                                 
           D007PREIS3, D007KZ8,                                 
           D007PREIS4, D007KZ9,                                 
           D007PRAB2,  D007KZ10,                                
           D007PRAB3,  D007KZ11,                                
           D007PRAB4)                                           
           select                                               
           CAST(case when preisliste = ' ' then ' '    
                     when preisliste = 'EH' then ' '         
                     when preisliste = '201869'  then '1000'    
                     when preisliste = '200065'  then '1001'    
                     when preisliste = '201903'  then '1002'    
                     when preisliste = '201779'  then '1003'    
                     when preisliste = '2041689' then '1004'      
                     when preisliste = '2041728' then '1005'      
                     when preisliste = '2041798' then '1006'      
                     else preisliste end                          
          AS CHAR(5) CCSID 273),                       
           ';', material, ';', ' ',                    
           ';', ' ', ';', ' ', ';',                    
           dec(EK_PR00001, 6 , 2), ';',                
           dec(EK_PR00002, 6 , 2), ';',                
           dec(EK_PR00003, 6 , 2), ';',                
           dec(EK_PR00004, 6 , 2), ';',                
           dec(replace(STAFF00001,'.',''), 4, 0), ';', 
           dec(replace(STAFF00002,'.',''), 4, 0), ';', 
           dec(replace(STAFF00003,'.',''), 4, 0)       
     from dat012
    Wenn ich das selbe unter IBM i Access Client Solutions Version: 1.1.8.2 (sprich Java Version) mache, bekomme ich eine Fehlermeldung mit der ich nichts anfangen kann.

    Code:
          SQL-Status: 22018
    Anbietercode: -420
    Nachricht:      [SQL0420] Zeichen in CAST-Argument ungültig. Ursache  . . . . :  Ein      Zeichen im Argument für die Funktion CAST war nicht korrekt.      Fehlerbeseitigung:  Die Ergebnisdatenart in eine Art ändern, die die      Zeichen im CAST-Argument erkennt, oder das Argument so ändern, dass es die      gültige Darstellung eines Werts für die Ergebnisdatenart enthält. Die      Anforderung wiederholen.
     Die      Verarbeitung wurde beendet, weil die hervorgehobene Anweisung nicht      erfolgreich ausgeführt wurde.
    Wenn ich aus dem insert ein Select mache läuft der durch.
    Ich habe diverse Felder mal entfernt und der Übeltäter scheint das hier zu sein: dec(EK_PR00001, 6 , 2), ';',

    Verstehe ich aber nicht, weil die Werte hinterher gut aussehen und wie schon gesagt der GreenScreen nicht mosert.

    Was tun außer sich im See zu ertränken?

    GG 3945


    Wenn ich ein Teilselect im GreenScreen laufen lasse sieht das Ergebnis so aus:

    Anfang auf Zeile . . . . . .
    ....+....1....+....2....+...
    "EK-Preis0" Funktion CAST
    6,47 6,47
    1,19 1,19
    1,19 1,19
    1,35 1,35
    1,19 1,19
    1,35 1,35
    1,52 1,52
    1,19 1,19
    1,19 1,19


    in Java so:
    6,47 -
    1,19 -


    sprich er zeigt mir da schon keine korrekten Werte an.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Irgendwas vermisse ich da noch.
    Wozu sind die ganzen ';'-Spalten gut?

    Andererseits habe ich bzgl. des DEC-Casts auch schon Probleme in V7R3 bekommen, wenn Nachkommastellen abgeschnitten werden.
    STRSQL setzt da irgendeine Option (habe ich nicht gefunden), die diese Warnungen ignoriert.
    Mache ich das dann native im Programm wird eine Diagnosenachricht "Signifikante Stellen abgeschnitten" ausgeworfen und der SQL stirbt. Die Meldung findet man auch nur im Joblog.

    Selbst ein "dec(round(feld, 2), 11, 2)" führt zu diesem Fehler.
    Erst ein "cast round(feld, 2) as dec(11, 2))" funktionierte, da die Funktion DEC() wohl anders implementiert ist als CAST().
    Zu mal früher das Abschneiden von Nachkommastellen nie zu Fehlern geführt hat.
    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

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    mach mal 6, 2 statt 6 , 2
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Die Anzahl Leerzeichen zwischen Parametern ist nicht relevant, es muss nur sichergestellt sein, dass nicht eine Zahl interpretiert wird.
    dec(a, 11, 2)
    dec(a, 11 , 2 )
    dec(a, 11,2) <= Führt bei Decimalcomma (Connection) zu Fehler, bei Decimalpoint funktionierts.
    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

  5. #5
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Irgendwas vermisse ich da noch.
    Wozu sind die ganzen ';'-Spalten gut?
    Die Daten werden dann per CPYTOIMPF exportiert

  6. #6
    Registriert seit
    Jan 2007
    Beiträge
    904
    Mach einen ACS update auf 1.1.8.5!
    kf

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Für den CPYTOIMPF brauchst du die nicht, da FLDDLM ja als Trennzeichen angegeben wird.
    Und der Fehler wird von SQL gemeldet und nicht von ACS abhängig.
    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

Berechtigungen

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