PDA

View Full Version : ... der Anfang ist ganz schön schwer



GhostShotIV
14-Apr-2011, 07:14 AM
Hallo,

ich habe die Dokumentation gelesen und die Beispiele angesehen, doch ich weiß immer noch nicht, was ich machen muss, wenn sich einen Report sofort, ohne Preview, auf Papier bringen möchte. Zuvor sollen aber Filter gesetzt werden und danach möchte ich gerne wissen, wieviele Seiten es waren.

Beispiel:
Rechnung 1. Kunde - Seitenzahl
Rechnung 2. Kunde - Seitenzahl
....

Kann mir bitte jemand einen kurzen Tipp geben, bzw. ein kleines Beispiel?

Danke,
Brigitte


Über PrintReport kann man den Report direkt auf den Drucker ausgeben, dabei kommt eine Druckdialog-Auswahlbox. Ein Beispiel liefert die Auswahl von Option 3 im deutschen Assistenten.
Die Ermittlung der Anzahl der Seiten ist noch nicht Bestandteil des Produkts, das hat DAE bereits auf eine Wunschliste gesetzt.
Viele Grüße
Matthias


Das ist ja alles recht schön, aber ich will keine Druckdialog-Auswahlbox. Mein Anwender weiß zu welchem Drucker er laufen muss, doch eine Auswahl im Dialog möchte ich ihm nicht zumuten. Der Ausdruck soll ganz einfach auf dem Drucker erfolgen, welcher beim Speichern des Reports eingetragen wurde.
Ich kann es dem Anwender auch nicht zumuten, wenn er 1000 Rechnungen am Tag ausdruckt jedemal den Drucker auszuwählen.

Wann ist die nächste Version vom VRW geplant? Ich möchte den Crystal wirklich gerne los werden, doch solange die für mich notwendigen Funktionen nicht realisiet sind, muss ich wohl noch warten.

Die Seitenzahl kann man auslesen. Dies habe ich ausprobiet indem ich ein PDF ausgegeben habe. Dabei stört mich aber noch das Preview-Fenster, welches sich wohl nicht unterdrücken lässt.

Brigitte


Ich habe es an DAE weiter gegeben und hoffe, dass sie ein Beispiel für die direkte Übergabe eines Druckers bereitstellen können.
Vielleicht kannst Du den "Mitlesern" mal Deinen Tipp weitergeben, wie Du in der .PDF automatisiert die Anzahl der Seiten ermittelt hast?
Matthias


Hallo,

die Dokumentation zum VRW ist recht umfangreich und hat auch viele Beispiele. Hier das Beispiel, wie ich die Seitenanzahl auslese:

Object btnPrint is a Button
Set Size to 23 50
Set Location to 265 219
Set Label to "&Packzettel drucken"
Set MultiLineState to True

// fires when the button is clicked
Procedure OnClick
Integer iSeiten

Send OutputReport of oVisualReport1 0
Get ReportPageCount of oVisualReport1 to iSeiten
End_Procedure

End_Object

Object oVisualReport1 is a cVisualReport
Set Size to 251 571
Set Location to 8 16
Set pbAutoLocateDFFiles to False
Set Visible_State to False
Set psReportName to "f:\perv\rpt\servpkz.vrw"
Set peOutputDestination to PRINT_TO_FILE
Set psExportFileName to "f:\perv\temp\Seiten.pdf"

Procedure OnInitializeReport
Date dEVT
String sDate

Get pEVT of oApplication to dEVT
Forward Send OnInitializeReport
Get VRWDate dEVT to sDate
Set psFilterFunction '' to ('return({Formular.evt} =' + sDate + ')')
End_Procedure

End_Object

Wenn der Anfang gemacht ist, ist es doch nicht mehr so schwer.

Brigitte


Hallo Brigitte,

hier ein Beispiel, wie man einen Report direkt auf den Standarddrucker ausgeben kann und die Seitenanzahl danach zurückgibt.

Object btnPrint is a Button
Set Size to 14 50
Set Location to 238 298
Set Label to "drucken"
// fires when the button is clicked
Procedure OnClick
Integer iSeiten
Get SofortDruck of oVisualReport1 to iSeiten
Send Info_Box ("Anzahl der Seiten: "+String(iSeiten))
End_Procedure
End_Object
Object oVisualReport1 is a cVisualReport
Set psReportName to "D:\temp\Order Entry\data\My First Report.vrw"
Function SofortDruck Returns Integer
Handle hPrntDlg hoPrintDialog hPrintDlg
Integer iRetval
Integer iSeiten PrinterDC
String sReportId
//Einen PrintDialog erzeugen
Get Create (RefClass (cPrintDialog)) to hoPrintDialog
//Diesem sagen, das er den Default Drucker zurück geben soll
Set piFlags of hoPrintDialog to PD_RETURNDEFAULT
//PrintDialog aufrufen (taucht nicht auf, da er direkt den
//Standarddrucker zurück gibt)
Get PrintDialog of hoPrintDialog to iRetval
If (iRetval<>0) Begin
//Handel vom PrintDialog holen
Get phPrintDlg of hoPrintDialog to hPrintDlg
//Report öffnen
Get OpenReport of oVisualReport1 to sReportId
//Report mit den Einstellungen des PrintDialogs drucken
Send PrintReport of oVisualReport1 hPrintDlg
//PrintDialog wieder zerstören. Ansonsten bleibt er im Speicher
Send Destroy of hoPrintDialog
End
//Seitenzahl des Reports ermitteln
Get ReportPageCount of oVisualReport1 to iSeiten
Send CloseReport of oVisualReport1 sReportId
Function_Return iSeiten
End_Function
End_Object


Danke,

soweit war ich auch schon. Doch hat schon jemand eine Lösung, wenn ich den Report A auf dem Drucker A und den Report B auf dem Drucker B, natürlich ohne Dialog ausgeben möchte?

Post vom 16.9.2010 aus dem alten DataFlex-Community.de Forum