Ich habe derzeit eine Access 2003-Datenbank, die über ein Formular zum Drucken einer Reihe von Berichten basierend auf dem Job, den der Benutzer auswählt, verfügt. Die Abfrage befindet sich ebenfalls im VBA-Code, der die katalogisierten Teile des Jobs betrachtet und deren entsprechende Berichte öffnet.Wie wähle ich einen Drucker für den gesamten Job aus?
Hier ist der Code, der so tut, richtig:
Private Sub Print_Report_Click()
Dim default_cat As Dao.Database
Dim d As Dao.Recordset
Dim q As String
Set default_cat = CurrentDb
q = "SELECT DISTINCT CATALOG, USER3 FROM [_MASTER_UPLOAD] WHERE SerialNumber='" & Me.[SerialNumberSelection] & "'"
Set d = default_cat.OpenRecordset(q, dbOpenDynaset)
d.MoveFirst
DoCmd.RunCommand acCmdPrint
Do While Not d.EOF
Select Case d!USER3
Case "COM"
DoCmd.OpenReport "RPTCompressor", , , "CATALOG = '" & d!CATALOG & "'"
Case "CON"
DoCmd.OpenReport "RPTCondenser", , , "CATALOG = '" & d!CATALOG & "'"
Case "CRV"
DoCmd.OpenReport "RPTCapacityRegValve", , , "CATALOG = '" & d!CATALOG & "'"
Case "CV"
DoCmd.OpenReport "RPTCheckValve", , , "CATALOG = '" & d!CATALOG & "'"
Case "etc..."
End Select
d.MoveNext
Loop
d.Close
End Sub
Grundsätzlich jetzt, wo mein Problem liegt in der Druckerauswahl ist DoCmd.RunCommand acCmdPrint
. Das Popup-Fenster erscheint und ich kann den gewünschten Drucker auswählen, aber diese Auswahl scheint nur den ersten Bericht der Gruppe zu beeinflussen (alle anderen gehen zum Standarddrucker des Computers). Höchstwahrscheinlich drucke ich die Berichte von unserem Druckereidrucker aus oder wandle sie einfach in PDFs um, aber das bedeutet auch, dass ich sie nicht fest codieren kann, um immer an einen bestimmten Ort zu drucken.
Wie kann ich sicherstellen, dass meine Druckerauswahl für alle Berichte gültig bleibt, vorzugsweise ohne den Befehl acCmdPrint für jeden einzelnen Bericht in derselben Gruppe ausführen zu müssen?
Vielen Dank im Voraus.
EDIT
Diese Frage angegeben ist und fortgesetzt hier: How to pass reference to combobox?
Das Problem bei den ersten beiden Optionen, die Sie aufgelistet haben, ist, dass Sie den Druckernamen hart codiert haben. Ich kann nicht immer auf demselben Drucker drucken, auch die Anzahl der Berichte hängt vom Job ab. Wie gesagt, mit 'DoCmd.RunCommand acCmdPrint' bekomme ich eine Liste meiner Drucker und kann einen auswählen, aber dieser Drucker ist nur für den ersten Bericht aktiv. Die nächsten Berichte werden an den Standarddrucker gesendet. – cdomination
Das war nur ein Beispiel für die Einfachheit. Fügen Sie anstelle von "DoCmd.RunCommand acCmdPrint" dem Formular eine Dropdown-Box "Drucker auswählen" hinzu, wie auf der MSDN-Seite angezeigt. Dies ist der Name des Druckergeräts, den Sie verwenden. Sie müssen diese Methoden an Ihre Bedürfnisse anpassen, ich hatte nicht vor, fertigen Code für Ihre genaue Situation zu schreiben. – Andre
Um meine Frage zu beantworten, kann ich meinen Standarddrucker nicht vorübergehend auf den Drucker setzen, den ich mit "DoCmd.RunCommand acCmdPrint" ausgewählt habe. – cdomination