PDA

View Full Version : Jobdatum beim Runqry



Seiten : [1] 2

Jenne
10-06-04, 10:09
Hallo Kollegen,
wer kann mir einen Tip geben bei meinem folgenden Problem ?

Ich möchte aus einem CL heraus ein RUNQRY starten und diesem ein bestimmtes Datum übergeben. Da ich nur die passenden Daten bekommen möchte. Das Datum wird von mir mit einem CMD eingegeben.

Danke im Voraus !

B.Hauser
10-06-04, 11:26
Hallo Kollegen,
wer kann mir einen Tip geben bei meinem folgenden Problem ?

Ich möchte aus einem CL heraus ein RUNQRY starten und diesem ein bestimmtes Datum übergeben. Da ich nur die passenden Daten bekommen möchte. Das Datum wird von mir mit einem CMD eingegeben.

Danke im Voraus !

Hallo,

ich nehme an, dass jeweils die Werte von einem bestimmten Datum auswerten willst.
Wenn das Datum jeweils das System-Datum wäre, könntest Du es direkt im Query über Current(Date) ermitteltn.

Handelt es sich um ein echtes Datum oder einen numerischen Wert?

Für numerische und alphanumerische Felder gibt es folgende Möglichkeit. (Mit Datums-Feldern habe ich es noch nicht probiert!)

1.Query-Definition muss erstellt sein
2.Die Variablen Auswahlen müssen mit :FELD bei Sätze auswählen hinterlegt werden.


AND/OR Feld Test Wert
FIRNR EQ :PFINR
AND ADTPA EQ :PTPA


3. Das Query wird nicht mit RUNQRY, sondern mit STRQMQRY aufgerufen
3.1. Die Variablen werden fix vorgegeben
z.B. STRQMQRY QMQRY(MYLIB/MYQRY)
ALWQRYDFN(*YES)
SETVAR((PFINR 240) (PTPA '''E'''))

3.2. Die Variablen werden variabel versorgt
z.B. STRQMQRY QMQRY(MYLIB/MYQRY)
ALWQRYDFN(*YES)
SETVAR((PFINR &QryFiNr) (PTPA &QryTPA)

Beispiel:


PGM PARM(&P$FINR &P$TPA)

DCL VAR(&P$FINR) TYPE(*DEC) LEN(3)
DCL VAR(&QryFINR) TYPE(*CHAR) LEN(3)
DCL VAR(&P$TPA) TYPE(*CHAR) LEN(2)
DCL VAR(&QryTPA) TYPE(*CHAR) LEN(4)

ChgVar Var(&QryFiNr) Value(&P$FINR)
ChgVar Var(&QryTpa)
Value('''' *cat &P$TPA *Cat '''')

/* Aufruf Query
StrQmQry QmQry(MyQry) +
Output(*PRINT) +
QmForm(*QMQRY) +
AlwQryDfn(*YES) +
SetVar((PFINR &QryFiNr) (PTPA &QryTpa))

EOP: ENDPGM


Birgitta

Jenne
10-06-04, 11:55
Hallo Birgitta,

die Query Definition ist vorhanden. Wenn ich die Variable in die Definition (:VAR) eingebe, kommt eine neue Maske in der ich etwas eingeben muss (???)
Aber was ?


Qualifikationsmerkmale für abhängige Werte angeben

Auswahl eingeben und Eingabetaste drücken.

Qualifikationsmerkmal 1 1=Abfrage, 2=Datei

Abfrage oder Datei . . Name, F4=Dateiliste
Bibliothek . . . . . Name, *LIBL, F4=Liste

Bei 2=Datei:
Teildatei . . . . . Name, *FIRST, F4=Liste

B.Hauser
10-06-04, 12:02
Hi Jenne,

diese Informationen sind nur beim Mischen für Mehrfachbriefe mit IBM OfficeVision/400 relevant, d.h. Du kannst irgendwas einfügen.
Bei mir steht:


Qualifikationsmerkmale für abhängige Werte angeben

Auswahl eingeben und Eingabetaste drücken.

Qualifikationsmerkmal 2 1=Abfrage, 2=Datei

Abfrage oder Datei . . DUMMY Name, F4=Dateiliste
Bibliothek . . . . . QTEMP Name, *LIBL, F4=Liste

Bei 2=Datei:
Teildatei . . . . . *FIRST Name, *FIRST, F4=Liste


Birgitta

Jenne
10-06-04, 12:23
Hallo Brigitta,

mein Query bricht mit STRQMQRY ab. SQL Fehlercode -104.

Was mache ich bloß falsch ?

B.Hauser
10-06-04, 13:38
Hallo Jenne,

was hast Du gemacht?
Das Query zu Fuss aufgerufen mit den Parametern?

Hast Du bei alphanumerischen Feldern auch die richtige Anzahl an Hochkommata gesetzt?

Die SQL-Fehler-Meldung sagt: Ungültiger Token.

Birgitta

Jenne
10-06-04, 13:48
Hallo Brigitta,
eigentlich sollte alles richtig sein. Mit Runqry läuft der Job (natürlich ohne die Variablen, habe ein anderen Query aufgerufen)
Ich analysiere noch !

Jenne
11-06-04, 07:56
Hallo Brigitta,
leider komme ich nicht mehr weiter.
folgende QUERY Einstellungen sind bei mir vorhanden.

Ergnisfelder :

AKTIME current(timestamp)
TAG day(t04.letzt_we)
JAHR year(t04.letzt_we
MONAT month(t04.letzt_we)
DATUM substr(digits(Tag), 9, 2) !! '.'
!! substr(digits(monat), 9, 2) !!
'.' !!substr(digits(jahr), 7, 4)

Sätze auswählen :
T01.BESTMNG NE t01.menge_nach
AND AKTIME RANGE t03.guelt_von t03.guelt_bis
AND T01.MANDANT_NR EQ t04.mandant_nr
AND T02.FILIAL_NR EQ t04.filial_nr
AND T01.MANDANT_NR EQ 1
AND DATUM EQ :AKTIME2

Cl-Programm : (&DATUM = 'tt.mm.jjjj')
STRQMQRY QMQRY(JENQRY/PSNAEI28B) ALWQRYDFN(*YES) +
SETVAR((ADKTIME2 &DATUM))

B.Hauser
11-06-04, 08:11
Hallo Jenne,

schau Dir nochmal mein Beispiel oben an.
Du wirst feststellen, dass der alphanumerische Parameter um 2Byte länger ist, als das Original-Feld.

Bei alphanumerischen Felder muss ein führendes und ein folgendes Hochkomma mit mit übergeben werden. Um ein Hochkomma darzustellen, müssen jeweils 2 Hochkommata (keine Anführungszeichen) codiert werden.

Also:


DCL VAR(&P$Datum) TYPE(*CHAR) LEN(10)
DCL VAR(&QryDatum) TYPE(*CHAR) LEN(12)
ChgVar Var(&QryDatum)
Value('''' *cat &P$Datum *Cat '''')
StrQmQry QmQry(MyQry) +
Output(*PRINT) +
QmForm(*QMQRY) +
AlwQryDfn(*YES) +
SetVar((PDatum &QryDatum))


Schau Dir außerdem die Definition von Deinem Datum an. Ist das so wirklich in Ordnung?

Birgitta

Jenne
11-06-04, 09:32
Hallo Brigitta,

alles so gemacht wie Du es mit beschrieben hast.
Programm bricht trotzdem ab mit folgender Fehlermeldung :

QWM2701 40 ESC Befehl STRQMQRY fehlges
chlagen.
CPF9999 40 ESC Funktionsprüfung. QWM27
01 nicht überwacht durc
h PSNTAGENDE bei Anweis
ung 1102, Instruktion X
'0039'.

Habe den Wert für AKTIME2 manuell vorgegeben '18.05.2004'
trotzdem kein Erfolg.