[Gelöst]zeitliche Verzögerung beim Report-Druck einbauen

13. Januar 2011 08:57

Nachtrag: Classic Client

Hallo liebes Forum,

ich habe schon mehrfach nach einem solchen Thread gesucht, bin aber leider nicht fündig geworden.

Ich beschäftige mich gerade mit folgender Frage:
Beim Druck eines Reports als Beleg einer EC- oder Barzahlung über einen Bondrucker, der ja eine Endlospapierrolle hat, soll eine Kopie des Belegs erstellt werden.

Soweit kein Problem. Grundsätzlich über eine KopieSchleife lösbar.
Das Problem ist, wie gesagt, die Endlospapierschleife, bei der die beiden Seiten direkt nacheinander kommen, ohne die Möglichkeit diese voneinander zu trennen.
Nur nach erfolgtem Druck händisch mit Schere.

Die Idee war nun, eine Verzögerung über einen SLEEP Befehl einzubauen, der den Druck nach der ersten Seite kurz anhält, damit diese abgerissen werden kann und erst dann die zweite Seite auszugeben.

Bei mir funktioniert es nur, wenn ich entweder eine Art "Steuerungsreport" schreibe, der mit Report.RUN den Bericht quasi zweimal ausgibt, vor dem zweiten Ausdruck aber den SLEEP Befehl erhält.

Nun also meine Frage:
Ist es möglich, den Druck INNERHALB des Reports zu verzögern? Meine Versuche haben ergeben, dass immer nur der gesamte Druck angehalten wurde.

Besten Dank, falls sich jemand meiner Frage annimmt.
Zuletzt geändert von Zepee am 11. Februar 2011 12:57, insgesamt 2-mal geändert.

Re: zeitliche Verzögerung beim Report-Druck einbauen

13. Januar 2011 09:15

Wie wäre es denn, beim Aufruf des Reports einzugreifen? Du druckst einmal das Original, wartest dann mit einer Confirm-Box oder so etwas auf das Ok des Anwenders, und rufst den Report ein zweites Mal auf. Dann müsstest du dem Report nur noch über eine Funktion im Report mitgeben, dass er nun als Kopie drucken soll.

Re: zeitliche Verzögerung beim Report-Druck einbauen

13. Januar 2011 10:22

Grds. würde das schon funktionieren.
Allerdings hätte ich dadurch das Problem, dass die Abfrage am Ende des Reports mit erneutem Aufruf des Reports sich ja immer wiederholen würde.
Die Zählung wie oft gedruckt wurde, könnte ja grds. über eine Globale Variale abbilden, allerdings habe ich hier keine Möglichkeit, diese zwischen den Reports zu transferieren als über eine CodeUnit. Oder sehe ich das falsch?
Dazu reicht meine Lizenz aber nicht.

Code:
Report - OnPostReport()
IF CONFIRM ('Wollen Sie fortfahren?') THEN
  REPORT.RUN(50068,FALSE);


Klar, der Benutzer kann dann die erneute Abfrage abbrechen, aber am Besten wäre eine Verzögerung, eben wie SLEEP, bei der der Nutzer gar nicht eingreifen muss.

Wie gesagt, über eine Steuerung in der Form oder über einen Steuerreport, der denselben Report zweimal, aber einmal mit Verzögerung aufruft, würde es gehen, aber ich würde es gern im selben Report ohne weitere Objekte realisieren können.

Re: zeitliche Verzögerung beim Report-Druck einbauen

13. Januar 2011 10:32

Ich meinte den Punkt (Button/Menu Item o.Ä.), an dem der Druck ausgelöst wird. Anstatt eines Report.run(modal) ... machst du zwei, getrennt durch ein Sleep oder confirm. Der zweite Aufruf müsste dann nur so erfolgen, dass dem Report durch eine Funktion im Report mitgeteilt wird, dass er nun als Kopie laufen soll.
Den Aufruf des Reports aus sich selbst bräuchte man dann nicht mehr. Und auch kein neues Objekt, denn du erweiterst ja nur welche, die es schon gibt.

Geht's hier eigentlich um CC oder RTC?

Re: zeitliche Verzögerung beim Report-Druck einbauen

13. Januar 2011 10:46

Hallo,
danke für die Antwort. Wir nutzen z.Zt. den Classic Client.
Hm dass man das von dem Aufrufsobjekt her machen kann, war mir soweit klar.
Ich dachte nur, dass man diese Verzögerung auch im Report selbst wie beschrieben einbauen könnte; denn unsere Lizenz reicht nicht für das Codedesigning von anderen Objekten außer Reports, weswegen wir für solche Sachen immer einen Entwicklungsauftrag an unsere Softwarefirma geben müssen, auch wenn uns die grds. Handhabe klar wäre.

Aber wenn es aus dem Report Objekt heraus nicht so möglich ist, dann können wir auch die entsprechende Anpassung beauftragen.

Re: zeitliche Verzögerung beim Report-Druck einbauen

13. Januar 2011 10:52

Ob das nicht aus dem Report geht, weiß ich nicht. Ich vermutete nur, dass der Druckjob erst dann an den Spooler raus geschickt wird, wenn der Report durchgelaufen ist und nicht mittendrin und auch genau da dein Problem liegt.

Edit: und das ist wohl auch so

Re: zeitliche Verzögerung beim Report-Druck einbauen

13. Januar 2011 11:46

Ok, danke für die Auskunft

Also, es geht tatsächlich nur über den externen, also außerhalb des Berichts liegenden verzögerten Aufruf.
Nachdem in der Form, hier z.B. ein Kassenmodul, beim Aufruf eine Wartezeit vor dem erneuten Aufruf desselben Berichts eingebaut wurde.

Konkret reicht den Anwendern
Code:
SLEEP(5000);
für ein manuelles Trennen der beiden Seiten.