PDA

View Full Version : Problem mit QM-Aufruf



Seiten : [1] 2

apparat
14-09-05, 13:42
hallo.


ich rufe im PGM ein Query auf und kriege folgenden Fehler:

13000 - STRQMQRY QMQRY(QGPL/SAVPRTFSL) SETVAR((FIELDS1 'NAME, OUTQ,
LAENGE, BREITE, OVRFL, CPI, LPI, DREHUNG') (FIELDS2 'HOLD, SAVE, TEXT')
(NAME 'QDFUPRT') (OUTQ '*JOB') (LAENGE ' 72') (BREITE ' 132')
(OVRFL ' 66') (CPI '10') (LPI '6') (DREHUNG '*AUTO') (HOLD '*NO') (SAVE
'*NO') (TEXT 'DFU PRINT FILE'))
Token * ungültig. Gültige Token: ( + - ? : DAY RRN CASE CAST CHAR DAYS
HOUR LEFT NULL TRIM USER.
Befehl RUN für Objekt QUERY mit SQLCODE -104 fehlgeschlagen.
Befehl RUN QUERY aufgrund eines Fehlers beendet.


wo ist da der TOKEN * denn drinne?? ist doch nirgendsdabei ????

hier noch der sql-code:

INSERT INTO GOLZ/SAVPRTF (&FIELDS1, &FIELDS2) VALUES(&NAME, &OUTQ, &LAENGE ,
&BREITE , &OVRFL , &LPI , &CPI , &DREHUNG, &HOLD, &SAVE, &TEXT)


entweder bin ich zu blöd oder :D

Pikachu
14-09-05, 15:02
Hallo!

wo ist da der TOKEN * denn drinne?? ist doch nirgendsdabei ????
Doch, ist dabei. Zum Beispiel beim Parameter OUTQ. Da du im SQL Zeichenketten verwendest, die in Hochkommas angegeben werden müssen, musst du diese Hochkommas selbst auch mitgeben, z.B. so: (NAME '''QDFUPRT''') (OUTQ '''*JOB''') ... D.h. dein SQL muss mitsamt deinen übergebenen Zeichenketten eine korrekte SQL-Anweisung ergeben. Die einfachen im STRQMQRY die Parameterwerte umschließenden Hochkommas sind selbst nicht Teil dieser Parameterwerte und werden nicht mit übergeben!

Viele Grüße
Jürgen

apparat
14-09-05, 15:36
naja wenn ich mit setvar übergebe geht das nicht. ich müsste praktisch die variablen erweitern und die hochkommas in die variable schreiben. aber das ist dann eine menge arbeit jedesmal mit *cat

naja wird schon gehen, aber den gleichen gedanken wie du hatte ich auch wie du

Fuerchau
14-09-05, 17:06
Mit SETVAR gehts auch:

SETVAR((VAR1 ('''' *CAT &MYVAR *CAT '''')) (VAR2 ....)

Etwas Tipparbeit, aber ob du die Variablen vergrößerst (problem ggf. bei Verwendung als CALL-Parameter) oder dies im SETVAR machst bleibt dir überlassen, aber machen musst du es.

apparat
15-09-05, 09:23
irgendwie kommt jetzt hier mein nächster fehler :(

13300 - STRQMQRY QMQRY(QGPL/SAVPRTFSL) SETVAR((FIELDS1 '"NAME", "OUTQ",
"LAENGE", "BREITE","') (FIELDS2 '"OVRFL", "CPI", "LPI", "DREHUNG""')
(NAME '"QDFUPRT"') (OUTQ '"*JOB"') (LAENGE '" 72"') (BREITE '"
132"') (OVRFL '" 66"') (CPI '"10"') (LPI '"6"') (DREHUNG '"*AUTO"')
(HOLD '"*NO"') (SAVE '"*NO"') (TEXT '"DFU PRINT FILE"') (FIELDS3
'"HOLD", "SAVE", "TEXT""'))
Token OVRFL ungültig. Gültige Token: ) ,.
Befehl RUN für Objekt QUERY mit SQLCODE -104 fehlgeschlagen.

Fuerchau
15-09-05, 10:13
Dazu müsste man jetzt den verwendeten SQL des QM's mal sehen.

Pikachu
15-09-05, 10:24
Hallo!

Die Felder in FIELDS1 und FIELDS2 solltest du weiterhin wie bisher ohne zusätzliche Hochkommas übergeben, da sie im SQL ohne Hochkommas stehen sollten. (Abgesehen davon wäre bei FIELDS1 und FIELDS2 ganz am Schluss jeweils das letzte doppelte Hochkomma zuviel.)

Bei FIELDS1 ist das letzte Komma zuviel, da das an dieser Stelle benötigte Komma bereits im SQL steht.

Bei FIELDS3 ist das letzte doppelte Hochkomma zuviel!

Viele Grüße
Jürgen

apparat
15-09-05, 10:25
ich habs nochmal umgebaut hier die neue lösung: habe jetzt mal die spalten fest angegeben und natürlich wierder nen anderen fehler. ich meld mich gleich wieder und poste alles rein

apparat
15-09-05, 14:23
bin leider noch nicht dazu gekommen es auszuprobieren. habe eine andere aufgabe vom chef bekommen. vielleicht morgen dann :)....

apparat
16-09-05, 11:45
könntent ihr mir ein ganz simples sql schreiben bzw sagen wo jetzt was hin muss? hier mal mein versuch:

DCL VAR(&PROBE) TYPE(*CHAR) LEN(4) VALUE('test')
/* ------------------------------------------ */
STRQMQRY QMQRY(GOLZ/SAVPRTFSL3) SETVAR((NAME2 +
(&PROBE)))


und mein SQL sieht so aus:


INSERT INTO GOLZ/SAVPRTF ("NAME") VALUES(&NAME2)




achja wenn ihr Anführungszeichen statt Hockkommas nehmt sagt es mal bitte auch. die kann man nicht unterscheiden hier.