PDA

Vollständige Version anzeigen : Seitenformat eines Druckers ändern


HH
18.12.2000, 22:43
Ich suche eine Lösung, wie ich bei einem Drucker unter Geräteeinstellung beim Traktor von A4 auf z.B. Letter Format umstellen kann.

Ich habe versucht die Seite ,Chapter 10: Controlling Your Printer' (http://www.microsoft.com/AccessDev/Articles/GetzCh10.HTM) durchzulesen. Leider ist mein Englisch nicht gerade das Beste und habe auch keinen Hinweis gefunden, wie ich dies durchführen kann.

Auch habe ich mir die mdb Ch10.mdb angesehen. Konnte dort aber nur Informationen finden, wie ich diese auslesen kann, aber nicht wie ich Änderungen am Drucker durchführen kann.

Vielleicht können sie mir da weiterhelfen, bzw. haben bereits eine funktionierende Lösung dafür.
Wäre sehr dankbar.
Harry

SoftNet
20.12.2000, 09:31
Hi Harry,

schau mal auf http://www.access-home.de in die Downloads. Dort sollte die KnowHow 3.0 von Klaus Oberdalhoff zu finden sein in der Du evtl. eine Lösung für Dein Problem findest.

Gruss, Tommy. http://www.access-home.de

HH
20.12.2000, 21:49
Vielen Dank Tommy!

In der KnowHow3.0 habe ich schon nachgesehen, konnte aber leider nichts passendes finden.

Vielleicht kannst du mir einen Suchbegriff sagen. Vielleicht habe ich da etwas übersehen.

Hoffe noch auf eine Antwort
Vielen Dank
Harry

Andole
22.12.2000, 09:13
Hallo Harry, ich hoffe ich habe dein Problem richtig verstanden.

Wenn du unter "Datei" - "Seite einrichten" hineingehst, dann auf "Seite", kannst du unter Spezieller Drucker die Einstellungen für dieses Formular, Bericht usw. machen.- Es bezieht sich nur darauf.-

Dort kannst du alle Einstellungen vornehmen, wie man es von anderen Office-Anwendungen gewöhnt ist.

Also wie gesagt, ich hoffe ich habe dein Problem richtig verstanden.


Andole

HH
22.12.2000, 15:14
Den speziellen Drucker händisch (manuell) eines Berichtes auszuwählen ist kein Problem.

Nur sollte das ganze automatisch per VB Code funktionieren.

Hoffe da hat noch jemand eine Idee. Konnte im ganzen Internet niergends etwas finden.

Harry

Karl Donaubauer
22.12.2000, 15:43
Schau dir in der OH das 2. Beispiel bei der "PrtDevMode-Eigenschaft" an.
Einfach mittels Zwischenablage in ein Standardmodul kopieren und nach deinen Wünschen anpassen.

Vorraussetzung ist, dass du den Bericht im Entwurf öffnen kannst. Geht also nicht in einer mde.

HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com

HH
22.12.2000, 20:37
Hy Karl!

Vielen Dank für deinen Hinweis.

Ich habe mir das Beispiel angesehen:


Sub AusrichtungWechseln(strName As String)
Const DM_HOCHFORMAT = 1
Const DM_QUERFORMAT = 2
Dim GeräteZF As str_DEVMODE
Dim DM As type_DEVMODE
Dim strGerätemodus As String
Dim rpt As Report
DoCmd.OpenReport strName, acDesign ' Den Bericht in der Entwurfsansicht öffnen.
Set rpt = Reports(strName)
If Not IsNull(rpt.PrtDevMode) Then
strGerätemodus = rpt.PrtDevMode
GeräteZF.strGZF = strGerätemodus
LSet DM = GeräteZF
DM.lngFields = DM.lngFields Or DM.intOrientation ' Das Element Fields initialisieren.

If DM.intOrientation = DM_HOCHFORMAT Then

DM.intOrientation = DM_QUERFORMAT
Else
DM.intOrientation = DM_HOCHFORMAT
End If
LSet GeräteZF = DM ' Die Eigenschaft aktualisieren.
Mid(strGerätemodus, 1, 94) = GeräteZF.strGZF
rpt.PrtDevMode = strGerätemodus
End If
End Sub


Ich denke, dass ich da bei DM.???? die entsprechende Option bekomme.

Mein Problem ist nur, welchen Verweis ich da in Access97 einbinden muss, damit ich den Typ type_DEVMODE und str_DEVMODE verwenden kann und welche Konstantwerte ich für einen speziellen Drucker verwenden kann.

Vielleicht kann mir da noch jemand weiterhelfen.

Auch habe ich in der OH gelesen, dass ich mir da anscheinden das Win32 Software Development Kit ansehen muss.

Vielleicht kann mir da auch jemand einen Hinweis geben, was ich da alles so im Code ändern muss.

Vielen Dank
Harry

Karl Donaubauer
22.12.2000, 23:01
Du brauchst keinen zusätzlichen Verweis und ohne SDK sollte es auch gehen.

Die Typ-Definitionen für str_DEVMODE und type_DEVMODE findest du am Anfang des genannten Beispiels in der OH.

Unten hab ich dir schnell zusammengefuchtelt, wie das Modul für deine Zwecke abgeändert aussehen könnte. Die Definitionen sind einfach kopiert, auch wenn man das meiste nicht braucht. Statt Orientation wird PaperSize eingestellt.

Die sonst. Konstanten für die Papiergrößen stehen auch in der Beschreibung zu PrtDevMode (beim Element "PaperSize").


'********** CODE START ***********
Option Compare Database
Option Explicit

Type str_DEVMODE
strGZF As String * 94
End Type

Type type_DEVMODE
strDeviceName As String * 16
intSpecVersion As Integer
intDriverVersion As Integer
intSize As Integer
intDriverExtra As Integer
lngFields As Long
intOrientation As Integer
intPaperSize As Integer
intPaperLength As Integer
intPaperWidth As Integer
intScale As Integer
intCopies As Integer
intDefaultSource As Integer
intPrintQuality As Integer
intColor As Integer

intDuplex As Integer
intResolution As Integer
intTTOption As Integer
intCollate As Integer
strFormName As String * 16
lngPad As Long
lngBits As Long
lngPW As Long
lngPH As Long
lngDFI As Long
lngDFr As Long
End Type

Sub PapierGroesseWechseln(strName As String)
Const PSize_US_Letter = 1
Const PSize_A4 = 9
Dim GeräteZF As str_DEVMODE
Dim DM As type_DEVMODE
Dim strGerätemodus As String
Dim rpt As Report
DoCmd.OpenReport strName, acDesign ' Den Bericht in der Entwurfsansicht öffnen.
Set rpt = Reports(strName)
If Not IsNull(rpt.PrtDevMode) Then
strGerätemodus = rpt.PrtDevMode
GeräteZF.strGZF = strGerätemodus
LSet DM = GeräteZF

If DM.intPaperSize = PSize_A4 Then ' von A4 auf US-Letter umstellen oder zurück auf A4
DM.intPaperSize = PSize_US_Letter
Else
DM.intPaperSize = PSize_A4
End If

LSet GeräteZF = DM ' Die Eigenschaft aktualisieren.
Mid(strGerätemodus, 1, 94) = GeräteZF.strGZF
rpt.PrtDevMode = strGerätemodus
End If

DoCmd.Close acReport, acSaveYes

End Sub
'*************** CODE END *****************

Ich hab in deiner Beschreibung noch nicht verstanden, ob der Drucker fix im Bericht hinterlegt ist oder nicht. Falls ja sollte das hier reichen.

Wenn du aber vorher auch den Drucker noch umstellen musst, dann kann's kompliziert werden. Ich hab das mit dem Element "DeviceName" noch nicht versucht. Hab hier keinen zweiten Drucker. Wenn's damit nicht klappt, findest du ein paar Links zum Drucker-Umstellen auf meiner u.a. Seite in FAQ 5.1 "Drucker wechseln".

BTW Anregung an die hochwohllöbliche Geschäftsführung des Forums: Das Kastel für die Antwort ist zu klein für etwas größere Code-Beispiele. Das ordentliche Umbrechen war mir deshalb zu mühsam.

HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com

HH
23.12.2000, 00:49
Hy Karl!

Mal vielen Dank für deine prompte Antwort.
Hat wunderbar funktioniert. Jetzt kann ich mit der ch10.mdb (herausfinden der codes der einzelnen seitenformate) und deinem code auf eine bestimmte Seite umstellen.

Wie du schon festsgestellt hast, besitze ich mehrere Drucker und muss da jeden Bericht auf einen bestimmten umstellen.

Zurzeit verwende ich die Lösung von der knowhow3.0, wo ich immer den Standarddrucker umstelle und dann wieder zurück.

Dies dauert natürlich ein wenig, da er im code einiges durchlaufen muss.

Früher hatte ich da jeden Bericht auf einen speziellen Drucker gebunden.

Das ganze Problem tat sich auf, als ich einen Win2000 Rechner im Netz hatte, der keine Netzdrucker mehr umbenennen kann.

Ich bin mit der Lösung ganz zu frieden. Ich weiss nicht ob es eine bessere, bzw. schnellere Lösung gibt, wo man vielleicht nur den speziellen Drucker umstellt. Ich glaube aber, das es das selbe ist, wie wenn ich den Standarddrucker umstelle.

Vielen Dank
Harry