Neuigkeiten:

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

Mobiles Hauptmenü

Bericht in SW drucken?

Begonnen von cyberchris, August 04, 2010, 09:18:55

⏪ vorheriges - nächstes ⏩

cyberchris

Hallo,

folgender VBA-Code ermöglicht das Drucken in S/W.


Private Sub PrintReportSW(sReportName As String)
   Dim rpt As Report
   
   Application.Printer = Application.Printers(0)
   
   DoCmd.OpenReport sReportName, acViewPreview, , , acHidden
   Set rpt = Reports(sReportName)
   
   rpt.Printer.ColorMode = acPRCMMonochrome
   
   DoCmd.OpenReport sReportName, acViewNormal
   DoCmd.Close acReport, sReportName, acSaveNo
   
   Set Application.Printer = Nothing
End Sub


Ist das Drucken in S/W auch ohne den Befehl möglich?
"DoCmd.OpenReport sReportName, acViewPreview, , , acHidden"

Denn bisher habe ich S/W nicht festgelegt und acViewPreview wird auch nicht ausgeführt.
Funktionert wunderbar - druckt ohne dass der Bericht geöffnet wird.

Jedoch soll der Bericht in S/W gedruckt werden. In Access kann ich das sonst nicht einstellen und die Standarddruckeinstellungen in Windows sind auf S/W gestellt - jedoch druckt Access bisher immer in Farbe.

danke
gruß Christoph

bahasu

Hallo Christoph,

probier mal, ob Du Dein Ziel erreichst, wenn Du im Report beim Ereignis "Beim Öffnen" den Befehl

Me.Printer.ColorMode = acPRCMMonochrome

einträgst.

Aufruf dann wie von Dir beschrieben mit ... acNormal.

Harald
Servus

cyberchris

hi,

wo muss ich dass dann hier eibauen?

DoCmd.OpenReport "PMDB-Auszug_ST", acViewNormal, , "IDoWAG ='" & IDoWAG.Value & "'"

danke
Christoph

bahasu

#3
Zitat von: cyberchris am August 04, 2010, 12:13:27
hi,

wo muss ich dass dann hier eibauen?

DoCmd.OpenReport "PMDB-Auszug_ST", acViewNormal, , "IDoWAG ='" & IDoWAG.Value & "'"


Hi Christoph,

nicht in dieser Zeile, sondern im Report/Bericht. Dort die Eigenschaften öffnen und im Reiter "Ereignis" bei "Beim Öffnen" in VBA das folgende eintragen:
Me.Printer.ColorMode = acPRCMMonochrome

Dann ist das bei diesem Bericht hinterlegt. Denkbar ist auch, in einer erweiterten Version eine Variable zu übergeben (z.B. Me.OpenArgs oder mit einer global deklarierten) und damit in einer if-Anweisung zu steuern, ob farbig oder schwarz/weiß.
Harald
Servus

cyberchris

Funktioniert leider nicht.

Option Compare Database

Private Sub Report_Open(Cancel As Integer)
Me.Printer.ColorMode = acPRCMMonochrome
End Sub

bahasu

#5
Hallo Christoph,

stimmt, im Bericht funktionierte das Umschalten nicht.

Mit den folgenden Zeilen, die vor dem Berichtsaufruf stehen, funktionierte bei mir das Umschalten:
   Dim ReportName As String
   ReportName = "Der Name Deines Berichts"
   DoCmd.OpenReport ReportName, acViewDesign
'    Reports(ReportName).Printer.ColorMode = acPRCMColor
   Reports(ReportName).Printer.ColorMode = acPRCMMonochrome
   DoCmd.RunCommand acCmdSave
   DoCmd.Close acReport, ReportName, acSaveYes

Mit der Zeile "DoCmd.OpenReport ReportName, acViewDesign , , , acHidden" funktionerte das Umschalten nicht.

Geholfen hatte mir: http://www.utteraccess.com/forum/Modify-report-properties-t1852331.html

Harald
Servus

cyberchris

Kann man vielleicht was z.b. im Detailbereich des Berichts beim Ereignis "Beim Drucken" was machen?

danke

bahasu

Zitat von: cyberchris am August 06, 2010, 06:59:48
Kann man vielleicht was z.b. im Detailbereich des Berichts beim Ereignis "Beim Drucken" was machen?

danke

Moin Christoph

1. Definiere "was" {Irgend etwas kann man bestimmt im Detailbereich machen  ;D}
2. Haben die obigen Zeilen nun das gewünschte Ergebnis gebracht?

Harald
Servus

cyberchris

Hallo,

ich möchte eben ohne acView den Bericht drucken, da der Bericht nicht aufpoppen soll.
Und das hat leider nicht funktioniert.

Auch habe ich dann noch versucht bei den Ereignissen des Berichts "Beim Drucken" das einzufügen.
Me.Printer.ColorMode = acPRCMMonochrome
Hat leider auch nicht funktioniert - er hat dann garnichts gedruckt.

Meine Frage ist, ob ich das Ereignis mit einem Code befüllen kann, dass ich in S/W drucken kann ohne acView.

danke
gruß Christoph

bahasu

Hi Christoph

siehe obiger Link:
"Good work, Craig!
I never found any way for such actions without opening the object, except for Querydefs of which you can just alter the SQL property.

I like working with the object reference, it gives a handle on the Controls-collection. I used such to manipulate a selection of reports in a larger database, that had either an Image-control or a PictureBox containing a person's signature, and a textbox with the guy's name. Text and signature needed replacement, and the target controls could have different names on each report. It worked very swell by using arrays with candidate control names that my code could choose from.

Leaning back then to watch every report open, change and close is so much fun.

Daan o! "

Dann muß ich passen, aber vielleicht wissen die Gurus noch eine Möglichkeit (mal abgesehen davon, dass Du zwei nahezu identische Berichte hast: einer in SW, der andere in Farbe}

Harald
Servus

cyberchris

Vielen Dank trotzdem für deine Hilfe.
Es geht nur darum, dass unsere Drucker geleast sind und Farbdrucke separat berechnet werden - egal was gedruckt wird.

gruß