MS ReportViewer - Druckproblem

07/10/2009 - 13:18 von Frank Gebelein | Report spam
Hallo Newsgroup!

Ich habe ein Problem mit dem Reportviewer-Steuerelement. Die Frage ist
im Netz schon gestellt, aber ich habe leider keine Antwort gefunden.

Folgendes Problem: Ich muss feststellen, ob der User einen Bericht
tatsàchlich gedruckt hat, da ein "Mahnstufen"-Zàhlwert hochgesetzt
werden soll.

Das ReportViewer1_Print-Ereignis reagiert noch vor dem Druck, also
sobald der Button in der Toolbar geclickt wird. Den Druckdialog per
ReportViewer1.PrintDialog() aufzurufen ist auch kein Problem. Das
Dialogfenster gibt aber _keinen_ Wert zurück.

Weiß jemand eine Lösung für das Problem?

Liebe Grüße...
Frank Gebelein
 

Lesen sie die antworten

#1 Thorsten Doerfler
08/10/2009 - 20:21 | Warnen spam
Frank Gebelein schrieb:
Folgendes Problem: Ich muss feststellen, ob der User einen Bericht
tatsàchlich gedruckt hat, da ein "Mahnstufen"-Zàhlwert hochgesetzt
werden soll.



4 Varianten, die mir dazu einfallen, wie Du das alternativ lösen könntest:

1.) Du stattest das Fenster, das den Report anzeigt mit zwei
Schaltflàchen aus "Abbrechen" sowie, "Mahnstufe abgeschlossen" o.à.
passend eindeutig bezeichnet aus.

2.) Du fragst den Benutzer nachdem er das Reportfenster verlassen hat
explizit, ob der Druck erfolgt ist und der Mahnstufen Zàhlwert erhöht
werden soll.

3.) Du fragst den Benutzer, nachdem der PrintDialog geschlossen wurde
(wenn Du ihn selber aufrufst).

4.) Du betrachtest das Print-Ereignis als hinreichende Bedingung für
einen erfolgten Ausdruck.

Den Benutzer hier entscheiden zu lassen, halte ich persönlich ohnehin
für den besseren Weg, alleine schon, weil Du in Deiner Anwendung nicht
feststellen kannst, ob der Ausdruck auch tatsàchlich erfolgt ist. D.h.
nachdem der Druck in den Druckspooler gestellt ist, ist die Kontrolle
durch Dein Programm auch weitestgehend am Ende. Jetzt kann es aber
passieren, dass der Ausdruck nie auf einem Blatt Papier erscheint, weil
der Toner alle ist, kein Papier mehr im Drucker oder ein Papierstau den
Ausdruck unbrauchbar gemacht hat.

Deine Anwendung betrachtet die Mahnstufe also als erledigt, wàhrend der
Anwender den Vorgang noch einmal ausdrucken möchte, wo bei Deiner
Automatik wahrscheinlich die nàchst höhrere Mahnstufe in Gang gesetzt würde.

Daher wàre auch Variante 4 ausreichend zuverlàssig, denn die
Wahrscheinlichkeit, dass der Benutzer Abbrechen wàhlt und nicht drucken
möchte ist àhnlich hoch, wie ein technischer Hinderungsgrund.

Den Druckdialog per
ReportViewer1.PrintDialog() aufzurufen ist auch kein Problem. Das
Dialogfenster gibt aber _keinen_ Wert zurück.



Warum man das so implementiert hat, ist mir auch schleierhaft. Eventuell
durfte sich da ein Praktikant austoben.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen