PDA

View Full Version : Queries automatisieren



ath
26-09-11, 17:50
Hallo,

ich habe mehrere Queries in einem CL zusammengefaßt. Das ganze sieht dann so aus:

RUNQRY QRY(mylib/abfrage_01)
RUNQRY QRY(mylib/abfrage_02) RCDSLT(*YES)
RUNQRY QRY(mylib/abfrage_03)

Mir geht es um abfrage_02 mit RCDSLT(*yes). Das Query poppt auf und erwartet die Eingabe des Vergleichwertes. In meinem Fall handelt es sich um ein Datum in der Form yyyymmdd.

Kann ich da so automatisieren, daß hier immer das Tagesdatum -1 übergeben wird? Wenn der Job also bspw. am 27.09.2011 um 00:01 Uhr läuft, soll als Parameter für die Abfrage 20110926 übergeben werden.

Danke und Gruß
Andreas

Fuerchau
26-09-11, 17:57
Das geht leider nur mit QMQRY.
Du kannst dir per RTVQMQRY aus einem QRYDFN ein QMQRY erstellen und dann den Parameter mt &VAR definieren.
Per STRQMQRY kannst du dann das Datum übergeben.

Mittels SQL-Funktionen kann man sich das Datum ggf. auch berechnen.

ath
26-09-11, 18:20
Hmm, was muß ich denn bei RTVQMQRY für Parameter angeben?
Mit RTVQMQRY QMQRY(mylib/ziel) SRCFILE(mylib/abfrage_02) ALWQRYDFN(*YES) erhalte ich nur Befehl RTVQMQRY fehlgeschlagen. [@]

BenderD
26-09-11, 18:57
Das geht leider nur mit QMQRY.
Du kannst dir per RTVQMQRY aus einem QRYDFN ein QMQRY erstellen und dann den Parameter mt &VAR definieren.
Per STRQMQRY kannst du dann das Datum übergeben.

Mittels SQL-Funktionen kann man sich das Datum ggf. auch berechnen.

... eleganter ist es meistens mit einem parametrisierten QMQRY eine Ausgabedatei zu erzeugen, in die man die variablen Werte reinstellt und dann diese in dem Query mit dazu zu nehmen, damit geht amn den Join Problemen aus dem Weg, die bei RTVQMQRY entsetehen können. Manchmal reicht allerding aber auch bereits eine SQL View.

D*B

Fuerchau
26-09-11, 21:20
@ATH
Schau dir die Parameter mal mit F1-Hilfe an, dann wirst du fündig.

Dieters Idee ist in diesem Fall auch nicht schlecht.
Fülle einfach eine Parameterdatei mit den gewünschten Abfragewerten und verknüpfe diese im Query.
In der Satzauswahl vergleichst du dann mit der Parameterdatei.

K_Tippi
27-09-11, 07:33
Hallo ath,
das geht auch ganz alleineim QRY.
1. Schritt: ergebnisfelder def.
HEUTE current(date)

X heute -(1 day)

XT char(X)

Dann mein Buchungsdatum umstellen
über Ergebnisfelder
B digits(lbbuda)

BD substr(b, 7, 2)!!'.'!!substr(b, 5
, 2)!!'.'!!substr(b, 3, 2)

Sätze auswählen
BD EQ xt

(ich habe das Datum auf 6 Stellen gekürzt)
Das ist das Ergebnis ( Anzeig inc. der Ergenisfelder)
....+....1....+....2....+....3....+....4....+....5
HEUTE B BD X XT


27.09.11 20110926 26.09.11 26.09.11 26.09.11
27.09.11 20110926 26.09.11 26.09.11 26.09.11
Da ich aus den Datumsfeldern String gemacht habe kannst du die natürlich über Substring drehen wie du willst.

Klaus

B.Hauser
27-09-11, 07:49
Zunächst ein paar Fragen:
Ist das Datum, das übergeben werden soll alpha oder numerisch?
Wird dieses Datum verwendet, um jeweils die Werte vom Vortag zu selektieren?

Wenn es nur darum geht das Datum vom Vortag zu ermitteln und anschließend entsprechende Werte zu selektieren, könnte dies auch über Ergebnis-Felder bewerkstelligt werden:
1. Ergebnis-Feld: Datum des Vortages

CURRENT(DATE) - 1 DAY

2. Ergebnis-Feld: Alphanumerische Darstellung des Vortages-Datums

CHAR(VorTag: ISO)

3. Ergebnis-Feld: Alphanumerische Darstellung es Vortages ohne Trennzeichen:

SUBSTR(CharVT, 1, 4) !!
SUBSTR(CharVT, 6, 2) !!
SUBSTR(CharVT, 9, 2)

Dieses alphanumerische Datum könnte dann zur Selektierung verwendet werden.

Birgitta

ath
27-09-11, 16:18
Hallo,

erst einmal vielen Dank für die vielen Antworten. Das Datum, welches ich benötige, ist numerisch.

Da ich aber noch viele andere Queries im Einsatz habe, wäre die Umsetzung mittels RTVQMQRY schon interessiert. Für den zweiten Parameter muß ich ja vorher eine physikalische Datei anlegen. Daran scheine ich zu scheitern. Es wäre nett, wenn mir jemand sagen könnte mit welchem Kommando ich eine solche Datei anlegen kann.

Der Hinweis von Klaus (K_Tippi) ist für mich am einfachsten umzusetzen (da hätte ich auch selber drauf kommen können).

Klaus: In Deinem Beispiel sehe in das Feld lbbuda. Kann ich draus schließen, daß Deine Datei die LGBW ist?

Gruß
Andreas