Im Beitrag „Bericht mit unterschiedlichen Seitenrändern“ (www.access-im-unternehmen.de/1517) haben wir untersucht, wie wir einem Bericht für gerade und ungerade Zahlen unterschiedliche Seitenränder zuweisen können. Das ist zunächst vor allem daran gescheitert, dass die in der Seiteneinrichtung zugewiesenen Seitenränder größer waren als die per VBA eingestellten. Diese konnten wir zwar korrigieren, aber scheinbar willkürlich wurden diese wieder auf Werte eingestellt, die nicht mit unseren Anpassungen harmonierten. Also schauen wir uns im vorliegenden Beitrag einmal an, woher diese Daten überhaupt kommen, wo sie gespeichert werden und wie wir dafür sorgen können, dass sie uns nicht ins Gehege kommen, wenn wir die Seitenränder einmal auf kleinere Werte einstellen, als wir in den Seiteneinstellungen vorfinden.
Das Problem in dem oben genannten Beitrag ist, dass wir die Seitenränder für die linke und die rechte Seite abhängig davon, ob es sich um eine gerade oder eine ungerade Seite handelt, einstellen wollen. Für die Seiten 1, 3, 5 und so weiter soll links ein 25 mm-Rand vorliegen und rechts ein 10 mm-Rand. Die Seiten 2, 4, 6 und so weiter wollten wir mit einem linken Rand von 10 mm und einem rechten Rand von 25 mm ausstatten.
Das klappt auch, aber wir haben zwischenzeitlich einmal im Dialog Seite einrichten den linken Rand auf 25 mm und den rechten Rand auf 10 mm eingestellt. Diese Ränder werden von Access immer eingehalten. Auch wenn wir für den Bericht per VBA einen linken Rand von 10 mm einstellen – dann werden die Inhalte zwar um 15 mm nach links verschoben, aber der im Dialog Seite einrichten vorgegebene Seitenrand überschreibt diese Inhalte einfach.
Da sich die Werte in der Seiteneinrichtung scheinbar zufällig ändern, wollen wir dieses Verhalten einmal grundlegend beleuchten.
Standardwerte für einen neuen Bericht in einer neuen, leeren Datenbank
Wenn wir eine neue, leere Datenbank öffnen, finden wir für einen ebenfalls neuen Bericht die Einstellungen aus Bild 1 im Dialog Seite einrichten vor. Diese liegen für alle Seitenränder bei 6,35 mm. Diesen Dialog öffnen Sie, indem Sie den Bericht in der Entwurfsansicht öffnen und im Ribbon unter Seite einrichten|Seitenlayout den Befehl Seite einrichten betätigen.
Bild 1: Standardeinstellung der Seitenränder
Um zu prüfen, wie diese Werte nun unter VBA erscheinen, hinterlegen wir für das Ereignis Bei Seite die folgende Ereignisprozedur:
Private Sub Report_Page() Debug.Print "Linker Rand: " & Me.Printer.LeftMargin Debug.Print "Rechter Rand: " & Me.Printer.RightMargin Debug.Print "Oberer Rand: " & Me.Printer.TopMargin Debug.Print "Unterer Rand: " & Me.Printer.BottomMargin End Sub
Nach einem Wechsel in die Seitenansicht erhalten wir im Direktbereich die folgenden Werte:
Linker Rand: 360 Rechter Rand: 360 Oberer Rand: 360 Unterer Rand: 360
Wir erhalten also erstmal die korrekten Werte, hier in der Einheit Twips. 567 Twips entsprechen einem Zentimeter.
Nun schauen wir uns an, was geschieht, wenn wir die Seitenränder alle auf 1 cm einstellen (siehe Bild 2).
Bild 2: Manuell geänderte Seitenränder
Wechseln wir wieder in die Seitenansicht, erhalten wir nun die folgende Ausgabe:
Linker Rand: 567 Rechter Rand: 567 Oberer Rand: 567 Unterer Rand: 567
Wir speichern und schließen den Bericht nun unter dem Namen rpt10mm. Nach dem erneuten Öffnen erhalten wir wieder die Seitenränder von 10 mm.
Einstellungen in einem weiteren neuen, leeren Bericht
Wir legen nun einen weiteren neuen, leeren Bericht an und öffnen den Dialog Seite einrichten. Hier finden wir nun wieder die Seitenränder von 6,35 mm vor.
Es scheint also so zu sein, dass diese Einstellungen mit dem Bericht gespeichert werden und nicht als Standardeinstellungen übernommen werden, wenn man diese in einem Bericht ändert.
Wo werden die Seitenränder gespeichert?
Nun möchten wir herausfinden, wo diese Einstellungen gespeichert werden. Dazu speichern wir den Bericht im Textformat auf der Festplatte, und zwar mit dem folgenden Befehl:
SaveAsText acReport, "rpt10mm", _ Currentproject.Path & "\rpt10mm.txt"
Dies legt eine Textdatei mit dem kompletten Code für den Bericht an.
Auf den ersten Blick finden wir hier keine Einstellung, die nach den Seitenrändern für den Bericht aussieht. Also ändern wir diese nun auf jeweils 20 mm und speichern den Bericht erneut, diesmal unter dem Dateinamen rpt20mm.txt (allerdings unter dem gleichen Berichtsnamen):
SaveAsText acReport, "rpt10mm", _ Currentproject.Path & "\rpt20mm.txt"
Nun öffnen wir die beiden Dateien in einem Texttool, welches das Vergleichen von Dateien erlaubt – zum Beispiel Notepad++ mit dem Plugin ComparePlus.
Die Unterschiede sehen wir in Bild 3. Die Checksumme stimmt nicht überein, was in Anbetracht weiterer folgender Unterschiede logisch ist.
Bild 3: Unterschiede der als Datei gespeicherten Berichte
Der erste Unterschied sind die beiden Eigenschaften Right und Bottom:
Die Eigenschaft Right hat bei der 10 mm-Variante den Wert 22.245 und bei 20 mm den Wert 21.990.
Die Differenz beträgt 255. Bei der Eigenschaft Bottom beträgt die Differenz ebenfalls 255.
Außerdem gibt es noch Unterschiede bei den Eigenschaften PrtMip und PrtDevMode. Diese enthalten verschiedene Informationen für den Drucker:
- PrtMip (Printer MIP – Mode Information Packet): Diese Eigenschaft enthält verschiedene Druckereinstellungen und -parameter, die in einer kompakten binären Form gespeichert sind. PrtMip speichert Informationen wie Seitenlayout, Papiergröße, Druckauflösung oder Randeinstellungen im binären Format.
- PrtDevMode (Printer Device Mode): PrtDevMode enthält Informationen über den Druckermodus und -einstellungen. Dies umfasst: Papierformat, Druckqualität, Farb- oder Schwarz-Weiß-Druck, Orientierung und druckertreiber-spezifische Einstellungen.
Damit ist offensichtlich, dass die Änderungen in der Definition des Berichts gespeichert werden.
Nun schauen wir uns an, wie und wann sich eine Änderung der Seitenränder per VBA auf den Bericht auswirkt und wann nicht.
Druckbaren Bereich mit Hintergrund versehen
Damit wir bei den folgenden Tests direkt erkennen können, welcher der bedruckbare Bereich des Berichts ist, fügen wir dem Seitenkopf, dem Detailbereich und dem Seitenfuß einen grauen Hintergrund hinzu.
Wenn wir alle vier Seitenränder im Dialog Seite einrichten auf 10 mm einstellen, erhalten wir die Ausgabe aus Bild 4. Diesen Bericht speichern wir nun einmal.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo