Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Drucker für Schnelldruck festlegen

Begonnen von Jochen1, Februar 23, 2023, 17:51:02

⏪ vorheriges - nächstes ⏩

Jochen1

#15
Hallo PhilS,

vielen Dank für die Antwort, jetzt funktioniert es  :) !

Jetzt ist leider ein kleines Folgeproblem aufgetaucht:

Beim Ausdruck wird nicht erkannt, in welchem Format der Bericht vorliegt (Hoch- Querformat), unabhängig, ob ich in der Funktion Application.Printer oder den definierten Drucker hinterlege. Es wird immer im Hochformat gedruckt. Auch das Komprimieren/Reparieren/Neustart der DB hat nichts gebracht.
 
Das ist eigenartig, denn mit der bisherigen Schnelldruck-Funktion

Private Sub Schaltfläche_Schnelldruck_Click()
    'Druckt das Dokument sofort aus (Schnelldruck)
    DoCmd.PrintOut
End Sub

ist das nicht aufgetaucht. Der Fehler ist reproduzierbar.

Zudem ist nach dem Druck der Bericht nur noch "verzerrt" und lückenhaft auf dem Bildschirm zu sehen, keine Ahnung warum. EDIT: Durch "DoCmd.Requery" lässt sich Letzteres abfangen.

Hast Du eine Idee, woran das mit der Druckausrichtung liegen könnte ?

Jochen


_______________
Access 2010

PhilS

Zitat von: Jochen1 am Februar 26, 2023, 12:26:12DoCmd.PrintOut
Zitat von: Jochen1 am Februar 26, 2023, 12:26:12Beim Ausdruck wird nicht erkannt, in welchem Format der Bericht vorliegt (Hoch- Querformat), unabhängig, ob ich in der Funktion Application.Printer oder den definierten Drucker hinterlege. Es wird immer im Hochformat gedruckt.
"nicht erkannt"?
D.h. du hast für den Bericht explizit Querformat eingestellt, aber es wird trotzdem im Hochformat gedruckt?
Ändert sich dabei das eingestellte Berichtsformat in Access?
Wenn ja, kannst du mal versuchen nachzuvollziehen, wann diese Änderung genau passiert?
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Jochen1

Hallo,

ZitatD.h. du hast für den Bericht explizit Querformat eingestellt, aber es wird trotzdem im Hochformat gedruckt?
Ja.

ZitatÄndert sich dabei das eingestellte Berichtsformat in Access?
Es gibt unterschiedliche Berichte, entweder als Hoch- oder Querformat gespeichert. 

Nach dem Drucken des Berichtes mit Querformat (der als Hochformat über mehrere Seiten ausgedruckt wird) steht in der Entwurfsansicht der Bericht auf "Hochformat". Wenn ich den Bericht schliesse, werde ich nicht zum Speichern aufgefordert.

Beim erneuten Öffnen des Berichtes steht er in der Entwurfsansicht wieder auf "Querformat". Das Hochformat wird also nicht im Bericht "hinterlegt", das Format scheint vor bzw. während des Druckvorgangs auf Hochformat zu springen.

Dieses Verhalten habe ich noch nie festgestellt, der Druck hat stets im hinterlegten Berichtsformat (seit Jahren) geklappt. Es gibt auch keine Änderungen an der Druckerkonfiguration o.ä.. Ganz eigenartig.

Die von mir im erwähnte "verzerrte Anzeige" tritt direkt nach dem Drucken auf. Z.B. werden die Buttons (bis auf den Schnelldruck-Button) nicht mehr angezeigt. Die Anzeige wirkt nach meinem Eindruck "auf Hochformat verdichtet".

Beim Ausdruck über das Druckmenü mit dem identischen Drucker erfolgt der Druck im gewünschten Querformat.

Grüße,
Jochen

 
_______________
Access 2010

PhilS

Zitat von: Jochen1 am Februar 27, 2023, 09:55:59Nach dem Drucken des Berichtes mit Querformat (der als Hochformat über mehrere Seiten ausgedruckt wird) steht in der Entwurfsansicht der Bericht auf "Hochformat". Wenn ich den Bericht schliesse, werde ich nicht zum Speichern aufgefordert.
Ich hatte gehofft, du findest den genauen Zeitpunkt, wann sich das Format von Quer auf Hoch ändert. Dann könntest du vorher das eingestellte Format speichern und es nach der ungewollten Änderungen wieder auf den zuvor gespeicherten Wert setzen.

Ich kenne dieses Verhalten nicht und kann es auch bei mir in genau diesem Szenario nicht reproduzieren.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Jochen1

Hallo,

Ich hatte gehofft, du findest den genauen Zeitpunkt, wann sich das Format von Quer auf Hoch ändert.
Das mache ich gerne, aber wie stelle ich das an, der Druck erfolgt sehr schnell und währenddessen kann ich nicht auf den Bericht zugreifen ? 
_______________
Access 2010

Jochen1

Zitat von: Jochen1 am Februar 27, 2023, 11:03:13Hallo,

Ich hatte gehofft, du findest den genauen Zeitpunkt, wann sich das Format von Quer auf Hoch ändert.
Das mache ich gerne, aber wie stelle ich das an, der Druck erfolgt sehr schnell und währenddessen kann ich nicht auf den Bericht zugreifen ? 

_______________
Access 2010

Jochen1

Mit welchem Befehl knnte ich das versuchen ?

Ich nehme an, dieser müsste dann zwischen die beiden Zeilen

DruckerSetzen Reports(BerichtName)
DoCmd.PrintOut

und das "Rückgängigmachen" im Anschluss ?

Ich probiere das gerne, aber bräuchte Hilfe, wie der Befehl lauten müsste.

Danke für die Unterstützung !
_______________
Access 2010

PhilS

Ich hatte etwas vorschnell eine Lösung mit Verweis auf die Eigenschaft Orientation (Ausrichtung) des Berichts gepostet. - Auf den zweiten Blick hat sich herausgestellt, dass diese Eigenschaft die Leserichtung (vLnR oder vRnL) meint.

Die vermutlich richtige Eigenschaft ist die Orientation des Printer-Objektes. Da ich vermute, dass diese beim Ändern des Druckers verloren geht. - Das solltest du ggfls. nochmal genauer verfolgen.
Auf Basis dieser Annahme würde ich den Code in der DruckerSetzen Prozedur unterbringen. Z.B. so:
Public Sub DruckerSetzen(derBericht As Report)
    Dim oldOrientation As AcPrintOrientation
    oldOrientation = derBericht.Printer.Orientation
    Set derBericht.Printer = Application.Printers("HP LaserJet Professional M1217nfw MFP")
    derBericht.Printer.Orientation = oldOrientation
End Sub
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Jochen1

Hallo,

mit diesem Code funktioniert es jetzt :), super !

Um zu testen, ob der Fehler mit der Ausrichtung an meiner DB lag, hatte ich das Ganze zusätzlich in eine neue Datenbank gespeichert, aber der Fehler liess sich dort und auf einem anderen Rechner reproduzieren.

Da ich vor diesem Thread nirgendwo etwas (für mich) Verwertbares gefunden habe, nachstehend noch einmal eine kurze Zusammenfassung für alle, die auch mit diesem Problem konfrontiert sind und bei ihrer Suche im Netz auf diesen Post stossen:

Der nachstehende Code erlaubt es, mittels einer auf einem Bericht hinterlegten Schaltfläche einen Bericht im Schnelldruck mit dem gewünschten Drucker auszudrucken, ohne das Druckmenü aufzurufen. Der Code wählt dabei den "Standarddrucker" oder einen hinterlegten Drucker aus, auch wenn zuletzt mit einem anderen Drucker gedruckt worden ist.

In einem Modul hinterlegen:

Public Sub DruckerSetzen(derBericht As Report)
    Dim oldOrientation As AcPrintOrientation
    oldOrientation = derBericht.Printer.Orientation
    Set derBericht.Printer = Application.Printers("Druckername")
     'Set derBericht.Printer = Application.Printer wäre der "Standarddrucker"
    derBericht.Printer.Orientation = oldOrientation

End Sub

Public Function fct_Sofortdruck(ByVal BerichtName As String)
    DruckerSetzen Reports(BerichtName)
    DoCmd.PrintOut
    DoCmd.Requery 'Optional. Aktualisiert den Bericht nach dem Drucken, wenn Berichtsanzeige nach Drucken auf Bildschirm verzerrt dargestellt wird.
End Function

In der "BeimKlicken"-Eigenschaft" der Schaltfläche auf dem Bericht hinterlegen:

=fct_Sofortdruck([Name])
Die Beispieldatenbank habe ich hochgeladen:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Nochmals vielen Dank an Dich, PhilS, für Deine Geduld und Unterstützung bei der Lösung meines Problems !

Jochen
_______________
Access 2010

PhilS

@Jochen1, vielen Dank für das Feedback und die Beispiel-DB.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor