Quote Originally Posted by Brigitte
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
Quote Originally Posted by Matthias
Ü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
Quote Originally Posted by Brigitte
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
Quote Originally Posted by Matthias
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
Quote Originally Posted by Brigitte
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
Quote Originally Posted by GhostShotIV
Hallo Brigitte,

hier ein Beispiel, wie man einen Report direkt auf den Standarddrucker ausgeben kann und die Seitenanzahl danach zurückgibt.
Code:
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
Quote Originally Posted by Brigitte
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