[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Per STRQM kommst du in das Menü zum Erstellen von QMQRY-Objekten.
    Diese können (je nach Berechtigung) alle möglichen SQL's enthalten.
    Ähnlich CLP können Variablen mit &NAME definiert werden. Vom Typ sind diese alle als Zeichenkette zu werten und können maximal 54 Zeichen aufnehmen.

    Per STRQMQRY kann per SETVAR dann jeder Variablen ein Wert zugewiesen werden.
    Zu beachten hierbei ist, dass Zeichenketten in Hochkommata übergeben werden müssen.
    Man kann also keine Variable per '&NAME' verwenden da dies eine Konstante ist.

    Enthält der QMQRY einen "Select" können die Daten auch in eine Ausgabedatei erstellt werden, ansonsten werden Sie zur Ansicht gebracht.

    Da STRQMQRY ein CMD ist, kann es also nur per CLP, QCMDEXC oder REXX ausgeführt 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

  2. #2
    Registriert seit
    Nov 2015
    Beiträge
    80
    Alles klar, vielen Dank. Mit den Tipps bin ich heute morgen schon ein gutes Stück weitergekommen.
    Leider läuft mein Programm noch auf einen Fehler (SQL Fehler).
    Da das "manuelle" ausführen der SQL Abfrage im QueryManager funktioniert, vermute ich es liegt am übergeben der Werte.

    Beispiel:
    PGM PARM (&MDC)
    ...
    ...setvar(MDC &MDC)

    Aufruf des PGM's: CALL PGM(BIB/PGM) PARM('45B%') --> (Im SQL Statement ist eine LIKE Abfrage)

    Dann kommt folgender SQL -103 Fehler:
    Ursache . . . . : SQLCODE hat den Wert -103. SQLSTATE hat den Wert 42604.
    Der DB2 für i5/OS SQL-Nachrichtentext für diesen Fehler lautet: Numerische
    Konstante 45B
    ungültig.

    In meinem SQL steht ganz normale ....where Spalte LIKE &MDC.... --> Das sollte ja eig passen

    Wie kann ich diesen Fehler noch beheben?

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wie ich schon sagte, Textkonstanten sind in HOCHKOMMA zu übergeben:
    DCL &MDCX *CHAR(wie MDC + 2)

    CHGVAR &MDCX ('''' *CAT &MDC *TCAT '''')

    Beachte: die 4 Hockommas stellen 1 Hochkomma zur Verfügung!

    SETVAR((MDC &MDCX))
    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
    Nov 2015
    Beiträge
    80
    Läuft jetzt alles, vielen Dank für die vielen Rückmeldung.
    Zwei letzte Verständnisfrage hätte ich noch:
    Welche Funktionen haben *CAT und *TCAT etc.?
    Ich habe da im Netz nichts gefunden und logisch nachvollziehen kann ich den Unterschied auch nicht wirklich.
    Außerdem, warum entsprechen ausgerechnet 4 Hochkamma genau einem Hochkomma welches übergeben wird?

    Grüße
    _MG_

  5. #5
    Registriert seit
    Oct 2013
    Beiträge
    175
    "CAT" steht für "concatenate" und heißt "zusammenfügen".
    Das "T" steht für "trailing" und heißt, dass die Blanks des Feldes links von TCAT entfernt werden.
    (es gibt auch ein BCAT, B für Beginning, das schneidet BLanks rechts weg.)
    In CL kann man auch !< für TCAT und !> für BCAT verwenden, da zeigt die Spitze des Stanitzels in die Richtung, wo die Blanks entfernt werden.
    Und die 4 auf 1 sind auch recht leicht erklärt: Damit innerhalb eines Strings 1 Hochkomma erhalten bleibt, muss man 2 angeben. Diese Zeichenfolge steht nun selber unter Hochkomma = 4 Hochkommas.

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    *CAT / *BCAT / *TCAT (B=Blank und T=Truncate)

    Command delimiters > Because an apostrophe inside a quoted string is paired with the opening apostrophe (delimiter) and is interpreted as the ending delimiter, an apostrophe inside a quoted string must be specified as two apostrophes. A pair of adjacent apostrophes used this way is counted as a single character.

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    189
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wie ich schon sagte, Textkonstanten sind in HOCHKOMMA zu übergeben:
    DCL &MDCX *CHAR(wie MDC + 2)

    CHGVAR &MDCX ('''' *CAT &MDC *TCAT '''')

    Beachte: die 4 Hockommas stellen 1 Hochkomma zur Verfügung!

    SETVAR((MDC &MDCX))
    meine Lösung für die verwirrendende '''' (es gibt mir Augenschmerz) ist, um ein Feld mit ihm zu erklären. Dann einfach *cat nach Bedarf. Dies funktioniert für CL und RPG.
    Code:
    DCL        VAR(&Q) TYPE(*CHAR) LEN(1) VALUE('''')  
    CHGVAR     VAR(&QRYSLT) VALUE(&QRYSLT *BCAT &Q *TCAT &CUSC +
                              *TCAT &Q *BCAT '*AND optn01 *EQ' *BCAT &Q *tCAT +
                              &OPTN *TCAT &Q)
    Hoffe das hilft.
    mfg

    Kit
    www.ecofitonline.com
    DeskfIT - ChangefIT - XrefIT

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Der *TCAT ist erforderlich um die Leerzeichenbeim Like hinter dem "%" zu entfernen.
    Denn sonst sucht SQL auf jeden Fall einen Wert der nach dem "%" mindestens noch genauso viele Leerzeichen enthält wie durch die Konstante definiert.
    Lösen kann man das im SQL ggf. noch per TRIM-Funktion.
    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

  9. #9
    Registriert seit
    Nov 2015
    Beiträge
    80
    Danke für die vielen Rückmeldungen und die wirklich sehr guten Erklärungen von euch!! Damit löst man Probleme echt auf Anhieb, und vor allem versteht man die Probleme und die Lösungswege, was ja eigentlich das wichtigste ist. :-)

    Danke!

    Grüße
    _MG_

Similar Threads

  1. Artikel: Virtuelles Netzwerk innerhalb des Unternehmens
    By NEWSolutions Redaktion in forum NEWSolutions artikel
    Antworten: 0
    Letzter Beitrag: 28-01-15, 19:31
  2. Excel-Dateien innerhalb von OS/400 erstellen
    By Klaus in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 20-04-02, 18:37
  3. Frage zu RPG: Aufruf RPG-Programm mit Parametern
    By hs in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 09-10-01, 12:06
  4. Info über benutzte Tabellen innerhalb eines PGM
    By KB in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 02-08-01, 09:46

Tags for this Thread

Berechtigungen

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