PDA

View Full Version : Query nur drucken, wenn Ergebnissätze vorhanden sind?



Salutaris
14-12-09, 07:09
Hallo zusammen,

vielleicht gibt es da eine Möglichkeit.

Ich habe hier mehrere Querys, die immer montags zu Kontrollzwecken gedruckt werden. Allerdings enthalten sie häufig keine Sätze, und da ist es eigentlich Papierverschwendung, das Ergebnis wirklich zu drucken.

Gibt es denn eine Möglichkeit, das Drucken eine Querys zu unterbinden, wenn es keine Ergebnissätze liefert?

Wenn mir da jemand helfen würde, wäre das echt gut.

Danke und Grüße
Daniel

Robi
14-12-09, 08:01
Auf reiner Query ebene ist mir da nix bekannt.
Druck halt nicht, sondern schau dir die Ergebnisse im Spool an.
Vielleicht kannst du es so hinmanipulieren, das dein Ergebnis s auf Seite 2 gedruckt wird. Dann kannst du einseitige spools ohne anzusehen löschen. oder das sogar automatisieren.
Gruß
Robi

Fuerchau
14-12-09, 08:22
Wie wärs mit einem vorherigen OVRPRTF ... HOLD(*YES) ?
Dann wird erst nach expliziter Freigabe gedruckt.

Altenrativ:
1. Aufruf mit Ausgabe in Datei, wenn per RTVMBRD NBRCURRCD (oder so) Sätze vorhanden, dann 2. Aufruf mit Druckausgabe.

cbe
14-12-09, 10:18
Hallo Daniel,

Vorschlag: anstatt direkt zu drucken schreib das Ergebnis des Queries in eine Datei und frag dann ab, ob Sätze drin sind.
Wenn ja, kannst Du entweder das Query nochmal ausführen als Druck oder die Tempdatei ausgeben, je nachdem, wie laufzeitaufwendig das Query ist.

DCL VAR(&NBRCURRCD) TYPE(*DEC) LEN(10 0)
...
RTVMBRD FILE(QTEMP/FTP1000P) NBRCURRCD(&NBRCURRCD)
IF COND(&NBRCURRCD > 0) THEN(DO)
...

So machen wir es, nur dass wir die Queries dann per eMail versenden. (Listen mag ich nicht so gern, die kann ich z.B. vom homeOffice sclecht lesen ...)


Gruß,
Christian

uwer
22-12-09, 07:22
Hier die Lösung von CBE noch einmal etwas ausführlicher:

/* Wenn durch die 1. Query mindestens ein Satz gespeichert wird: */
/* Aufrufen der 2. Query */

RUNQRY QRY(QRY01) OUTTYPE(*OUTFILE) +
OUTFILE(QTEMP/QRY01P *FIRST *RPLFILE)

RTVMBRD FILE(QTEMP/QRY01P) NBRCURRCD(&NBRCURRCD)

IF COND(&NBRCURRCD *NE 0) THEN(DO)
RUNQRY QRY(QRY01)
ENDDO