Forums Neueste Beiträge
 

Falscher Papierschacht trotz Druckerwechsel

21/01/2010 - 10:28 von Matthias Körner | Report spam
Access 2002-SP3, WinXP-SP3, MDE-Runtime

Hallo an Alle,
folgende Situation:
Es sind in Windows mehrere Drucker eingerichtet, um einen Dokumentensatz
über verschiedene Papierschàchte auszugeben.
Diese werden beim Programmstart in eine Tabelle eingelesen.
Über die unten aufgeführte Prozedur wird, abhàngig von den übergebenen
Parametern, je nach Bedarf der Standarddrucker gewechselt und nach dem Druck
wieder zurückgesetzt.
Der Dokumentensatz kann auf bis zu 4 verschiedenen Druckern ausgegeben
werden, die Sub wird für jede einzelne zu druckende Seite des Satzes
aufgerufen.
Aus Performancegründen wird noch geprüft, ob der Bericht evtl. im
Entwurfsmodus geöffnet werden muss, um die Randeinstellung anzupassen.

Nun ist bei einem Kunden das Problem aufgetreten, dass trotz Wechsel des
Druckers der Bericht nicht aus dem in den Druckereinstellungen vorgegebenen
Papierschacht ausgegeben wird, obwohl in der Tabelle der eingelesenen
Drucker unterschiedliche Werte für PaperBin vorhanden sind.
Da die PaperBin-Werte jedoch nur zur Kontrolle dienen und nicht als
Parameter beim Drucken aus Access benutzt werden, müsste IMO doch eigentlich
der zum gewàhlten Druckertreiber angegebene Schacht angesteuert werden,
zumal der Drucker ja dann der Windows Standarddrucker ist.
Tatsache ist auch, dass immer der gleiche Papierschacht angewàhlt wird, egal
welche Druckerreihenfolge für den Dokumentensatz voreingestellt wurde.

Bei den betreffenden Druckern handelt es sich um Netzwerkdrucker, es wurde
auch schon mit Freigaben und lokal installierten Treibern versucht.
Das Problem betrifft alle angeschlossenen PC's.
Bei allen Berichten ist unter Eigenschaften der Standarddrucker und als
Papierquelle automatische Auswahl vorgegeben.

Kennt jemand dieses Problem bzw. gibt es eine Lösung dafür?

Viele Grüße
Matthias Körner


Hier die Sub:
Public Sub ChangePrinter(sReportName As String, iPrtIndex As Integer,
Optional lngCopies As Long = 1, Optional lngAusrichtung As Long = 1,
Optional strKrit As String = "", Optional lngMargin As Long = 0)
On Error GoTo ChangePrinter_Error
Dim strError As String
Dim prtDefault As Printer
Dim prtPrinter As Printer
Dim i As Integer
Set prtDefault = Application.Printer
If iPrtIndex = 999 Then
Set prtPrinter = Application.Printer
Else
Set prtPrinter = Application.Printers(iPrtIndex)
End If
'Standarddrucker gewàhlt und Randanpassung = 0
If Application.Printer.DeviceName = prtPrinter.DeviceName Then
If Val(SetupEintrag("BottomMargin")) = 0 Then
For i = 1 To lngCopies
If strKrit = "" Then
DoCmd.OpenReport sReportName, acViewNormal
Else
DoCmd.OpenReport sReportName, acViewNormal, , strKrit
End If
Next i
Exit Sub
End If
End If
'kein Standarddrucker gewàhlt und Randanpassung = 0
Application.Printer = prtPrinter
If Val(SetupEintrag("BottomMargin")) = 0 Then
For i = 1 To lngCopies
If strKrit = "" Then
DoCmd.OpenReport sReportName, acViewNormal
Else
DoCmd.OpenReport sReportName, acViewNormal, , strKrit
End If
Next i
Application.Printer = prtDefault
Exit Sub
End If
'kein Standarddrucker gewàhlt und Randanpassung <> 0
DoCmd.OpenReport sReportName, acViewPreview, acHidden
With Reports(sReportName).Printer
.Copies = lngCopies
.Orientation = lngAusrichtung
If lngMargin <> 0 Then
.BottomMargin = Val(SetupEintrag("BottomMargin"))
End If
End With
If strKrit = "" Then
DoCmd.OpenReport sReportName, acViewNormal
Else
DoCmd.OpenReport sReportName, acViewNormal, , strKrit
End If
DoCmd.Close acReport, sReportName, acSaveNo
Application.Printer = prtDefault
On Error GoTo 0
Exit Sub
ChangePrinter_Error:
strError = "Problem mit gewàhltem Drucker!" & vbCrLf
strError = strError & "Fehler-Nummer: " & err.Number & vbCrLf
strError = strError & "Fehlermeldung: " & err.Description
MsgBox strError, 64, "ACHTUNG..."
End Sub
 

Lesen sie die antworten

#1 Thomas Möller
21/01/2010 - 17:45 | Warnen spam
Hallo Matthias,

Am 21.01.2010 10:28, schrieb Matthias Körner:
Nun ist bei einem Kunden das Problem aufgetreten, dass trotz Wechsel des
Druckers der Bericht nicht aus dem in den Druckereinstellungen vorgegebenen
Papierschacht ausgegeben wird, obwohl in der Tabelle der eingelesenen
Drucker unterschiedliche Werte für PaperBin vorhanden sind.



ich verstehe aus Deinen Schilderungen noch nicht ganz, wo die Tabelle
ins Spiel kommt.

Ein anderer Ansatz: Warum übergibst Du Deiner Prozedur nicht zusàtzlich
den Wert für "PaperBin". Diesen könntest Du dann jeweils direkt setzen.


CU
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen