[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.975

    Navigator SQL empfindlicher als STRSQL, wo ist der Fehler

    dieses sql bringt im STRSQL ein ergebnis und im
    Navigator den Fehler
    Code:
     select substr(MR1REFK, 1, 3) as was1,                           
              substr(MR1REFK, 5, 11) as was2,                          
              mr1dtlg, substr(MR1REFK, 5, 15) as was3,                 
              MR1USER, MR1DIFF-MR1DIFE as std,                         
              (select dec(max(substr(nttext, 1, 11)), 11, 2) from pntm1
               where nttabl = 'PWE' and nttabw = mr1user and           
                     ntadat <= mr1dtlg group by nttabw) as stds        
       FROM  PPTL/MR1M1                                                
       WHERE MR1DTLG >= 20160101  AND MR1DTLG <= 20161031
    Code:
    SQL-Status:01565 Vendorecode 420 
    Zeichen in cast-Argument ungültig
    Wie kann ich die Ursache suchen?
    Es gibt zu JEDEM MR1USER mind. 1 PNTM1 NTTABW Satz mit 20010101 als datum
    In NTTEXT steht
    00000015,06 oder
    00000017,33

    Wie gesagt, STRSQL geht, Navigator nicht

    alle Ideen wilkommen
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Bin etwas weiter ...
    select dec(substr(nttext, 1, 11)), 11, 2) from pntm1
    where nttabl = 'PWE' and nttabw <> ' '

    bringt STRSQL ein Ergebnis, im Navigator nur +++++++

    select dec(substr(replace(nttext, ',', '.'), 1, 11)), 11, 2) from pntm1
    where nttabl = 'PWE' and nttabw <> ' '
    genau umgekehrt

    Im Navigator erwartet er also ein dezimal-Punkt, im STRSQL ein Komma

    Habe den DEC nun so
    dec(substr(nttext, 1, 11), 11, 2, ',')

    das ging

    Robi

    Danke
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ich vermute mal, in den Verbindungseigenschaften im Navigator wird als Dezimaltrenner ein Punkt definiert. Wenn dann in den Daten ein Komma vorkommt, knallt es halt.
    Prüfe die Dezimaleinstellungen in der Verbindung.

    Anmerkung:
    In einem skalaren Subselect macht ein Group By keinen Sinn, da du per direktem Bezug zu deinem übergeordneten Satz mit dem NTTABW den Maxwert erhälst.
    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.873
    Du kannst sowohl beim IBM i Navigator als auch beim STRSQL das Dezimal-Trennzeichen einstellen.
    Beim STRSQL ist das Trennzeichen per Default ein Komma (vermutlich System-Wert) im IBM i Navigator standardmäßig ein Punkt.

    Einstellen im IBM i Navigator:
    Connection/Verbindung --> JDBC Einstellungen --> Format --> Decimal Separator/Trennzeichen

    ... übrigens wenn Du Dezimal-Trennzeichen Komma verwendest, musst Du immer ein Leerzeichen nach dem Komma-Separator innerhalb einer Funktion oder eines SQL-Statements angeben.

    Birgitta
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Aber nur bei Zahlen...
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Aber nur bei Zahlen...
    Warum?
    Bei Trennzeichen kann man eigentlich nie zuviel Blanks angegeben, nur zuwenig!
    Birgitta Hauser

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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Mir ging es ja nur um das "muss".
    Bei Zahlen muss man, bei allem anderen kann man.
    Wichtig ist ja nur, dass man das Blank nach der Zahl angeben muss.
    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Warum?
    Bei Trennzeichen kann man eigentlich nie zuviel Blanks angegeben, nur zuwenig!
    ... bei ordentlichen Programmiersprachen nicht, bei free RPG schon, mach mal ein Semikolon am Anfang der nächsten Zeile, da kriegt der Compiler die Vogelgrippe.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nun ja, wenn die vorherige Zeile nicht mit Semikolon aufhört, funktionierts.
    Das mache ich gerne bei längeren SQL's und Prozeduraufrufen.
    Nur "leere" Zeilen, also 2 auf einander folgende Semikolons, mag der Compiler nicht.
    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

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nun ja, wenn die vorherige Zeile nicht mit Semikolon aufhört, funktionierts.
    Das mache ich gerne bei längeren SQL's und Prozeduraufrufen.
    Nur "leere" Zeilen, also 2 auf einander folgende Semikolons, mag der Compiler nicht.
    ... das Problem fängt an, wenn hinter dem Semikolon in der selben Zeile was anderes wie Kommentar kommt...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Jan 2007
    Beiträge
    905
    Zitat Zitat von BenderD Beitrag anzeigen
    ... bei ordentlichen Programmiersprachen nicht, bei free RPG schon, mach mal ein Semikolon am Anfang der nächsten Zeile, da kriegt der Compiler die Vogelgrippe.
    D*B
    Grundsätzlich richtig, aber bevor die Vogelgrippe ausbricht, hustet dir RDi noch was.
    kf

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von BenderD Beitrag anzeigen
    ... bei ordentlichen Programmiersprachen nicht, bei free RPG schon, mach mal ein Semikolon am Anfang der nächsten Zeile, da kriegt der Compiler die Vogelgrippe.
    D*B
    Was soll denn schon wieder der Seitenhieb auf RPG in einem Thread in dem es um SQL (noch nicht einmal embedded SQL!) ging?
    Birgitta Hauser

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

Similar Threads

  1. Performance sqlrpgle / strsql
    By Robi in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 03-11-16, 17:17
  2. STRSQL
    By KingofKning in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-15, 00:32
  3. Antworten: 7
    Letzter Beitrag: 23-03-15, 17:21
  4. SQL per Navigator V5R4
    By KingofKning in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 03-10-14, 11:37
  5. STRSQL
    By Günther in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 20-03-03, 13:51

Berechtigungen

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