PDA

View Full Version : Parameterübergabe bei verknüpften Tabellen



padawan
12-08-10, 09:12
Hallo,
V5R4

Ich habe ein seltsames Phänomen:
Im CL starte ich den Befehl STRQMQRY:
PGM PARM(&VAR1)
DCL VAR(&VAR1) TYPE(*DEC) LEN(6 0)
DCL VAR(&VAR1_A) TYPE(*CHAR) LEN(6)
CHGVAR VAR(&VAR1_A) VALUE(&VAR1)

DMPCLPGM
STRQMQRY QMQRY(TRUMPFH/TTRWLSVSRE) OUTPUT(*OUTFILE) +
OUTFILE(DTALIB/TTRWLSVSRE) +
ALWQRYDFN(*YES) SETVAR((VAR1 &VAR1_A))
MONMSG MSGID(CPF0000)

Die gestartete Abfrage hat 1 Tabelle und in Sätze auswählen einen Parameter:
WVLDAT EQ :VAR1

Funktioniert alles einwandfrei und ich bekomme die richtigen Daten über die Parameterübergabe. Aberrrr, jetzt zum Problem/Frage: Sobald ich in der Abfrage eine zweite Tabelle verknüpfe bekomme ich keine Daten mehr. Zwecks Test in strqry: Wenn ich in Sätze auswählen statt des Parameters (:VAR1) einen richtigen Wert eingebe, bekomme ich Daten. Warum ist das so bzw. wie kann ich das lösen???

Vielen Dank. Hoffe mich verständlich ausgedrückt zu haben.

Gruss
Tobias

Pikachu
12-08-10, 09:26
STRQMQRY ALWQRYDFN(*YES) interessiert sich nicht für die im Query/400-Query angegebene "Art der Verknüpfung" sondern nimmt immer "1=Gleiche Sätze" als "Art der Verknüpfung", macht also immer einen INNER JOIN.

padawan
12-08-10, 09:35
...ich habe einen left outer join -

bei gleiche Sätze (Option 1 = Gleiche Sätze) bekomme ich keine Daten -

beim left outer join (Option 2 = Mit Primärdatei gleiche Sätze) schon.

Wie kann man dies lösen?

Danke.

Gruss
Tobias

BenderD
12-08-10, 09:46
... per Prametrisiertem QMQRY eine Ausgabedatei mit einem Satz erstellen und dann einen Query/400 hinterherfeuern, der diese Datei mit verknüpft.

D*B


...ich habe einen left outer join -

bei gleiche Sätze (Option 1 = Gleiche Sätze) bekomme ich keine Daten -

beim left outer join (Option 2 = Mit Primärdatei gleiche Sätze) schon.

Wie kann man dies lösen?

Danke.

Gruss
Tobias

padawan
12-08-10, 11:23
entschuldigung, ich habe es nicht ganz verstanden.
Heißt das, die Abfrage mit nur einer Tabelle über QMQRY und dem Parameter starten, diese Daten in eine Datenbankdatei schreiben und danach eine weitere Abfrage mit der zweiten Tabelle, die wiederum die eben in die Datenbankdatei geschriebenen Daten verknüpft - aber diesmal ohne Parameter???

BenderD
12-08-10, 11:47
...nur den Parameter in eine Tabelle mit einem Satz und einem Feld schreiben und dann das Query. Dieses Verfahren empfiehlt sich auch für die unsäglichen Stafetten von Queries, bei denen monatlich jeweils der Monat von Hand geändert wird, um sie anschließend aufzurufen.

D*B


entschuldigung, ich habe es nicht ganz verstanden.
Heißt das, die Abfrage mit nur einer Tabelle über QMQRY und dem Parameter starten, diese Daten in eine Datenbankdatei schreiben und danach eine weitere Abfrage mit der zweiten Tabelle, die wiederum die eben in die Datenbankdatei geschriebenen Daten verknüpft - aber diesmal ohne Parameter???

padawan
12-08-10, 13:54
vielen Dank, werde es so machen.