PDA

View Full Version : QMQRY - Variablenübergabe



wolfinho
23-05-07, 09:08
Hallo zusammen,

wir haben einen Query, der konstante Werte (Ergebnisfelder) und Werte aus einer Datei mischt, und diese in eine Ausgabedatei hinzufügt.

Diesen Query würde ich gerne über ein CL laufen lassen und ein Abbild in SQL erstellt. Der sieht wie folgt aus:

SELECT
-- Spalten
CHAR(A.RZBK0, 4),
CHAR(A.KUNR0, 10),
CHAR(A.ZWNR0, 3),
CHAR(&AKT, 8),
CHAR('MZF', 20),
CHAR('J', 1),
DECIMAL(1, 8, 0),
CHAR('USR', 10),
DECIMAL(9, 8, 0)
-- Tabellen
FROM "xxx"/"xxx" A
-- Zeilenauswahl
WHERE (KUNR0 > '0000000000')
-- Sortierspalten
ORDER BY 1, 2


Der SQL benötigt Variablenwerte. Daher habe ich den folgenden Befehl abgesetzt:

STRQMQRY QMQRY(YC03XF5/QMW0010) OUTPUT(*OUTFILE) +
OUTFILE(BBTDB/B5122P00) OUTMBR(*FIRST *ADD) +
SETVAR((AKT 'TEST'))

Leider bekomme ich dann folgenden Fehler:

Spalte TEST nicht in angegebenen Tabellen.
Befehl RUN für Objekt QUERY mit SQLCODE -206 fehlgeschlagen.
Befehl RUN QUERY aufgrund eines Fehlers beendet.
Befehl STRQMQRY fehlgeschlagen.

Ich verstehe nicht, warum Test als Spalte gesucht wird, wenn ich diesen als Variablenwert in dem Befehl mitgegeben habe.

Vorab schon einmal vielen Dank

Viele Grüße

Oliver

Fuerchau
23-05-07, 09:18
Das Problem ist hier die Übergabe mit den Hochkommata:

"SETVAR((AKT 'TEST'))" übergibt in die Variable nur TEST. Die Hochkommata des CMD's werden entfernt, dadurch wird TEST nicht als Konstante interpretiert.

Möchtest du Hochkommata übegeben, so sind diese zu verdoppeln (Standardregel von CMD's):

"SETVAR((AKT '''TEST'''))"

wolfinho
23-05-07, 09:23
Vielen Dank. Das war des Rätsels Lösung. Hoffentlich bin ich demnächst über den AAnfängerstatus hinweg. :)