Seitenrnder in Access-Berichten

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 unterschliedliche 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 wir 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 sie 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-Rang. 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, daber 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 cm 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-Variange 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 beiden 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. Bild 4: Seitenr nder von 10 mm Dann f gen wir der Prozedur f r das Ereignis Bei Seite den folgenden Code hinzu: Private Sub Report_Page() Me.Printer.LeftMargin = 1134 Me.Printer.RightMargin = 1134 Me.Printer.TopMargin = 1134 Me.Printer.BottomMargin = 1134 End Sub Wir schlie en und speichern den Bericht, damit der ge nderte Code gespeichert wird. 20 mm Rand erst links, dann beim n chsten ffnen berall Beim n chsten ffnen erhalten wir den gleichen Bericht, der diesmal allerdings 20 mm Rand an der linken Seite aufweist (siehe Bild 5). Bild 5: Seitenrand von 20 mm auf der linken Seite Au erdem erscheint vor der Anzeige die Meldung aus Bild 6. Diese resultiert allerdings daraus, dass wir den Detailbereich etwas breiter gemacht haben als den Bericht und die H he von Berichtskopf, Detailbereich und Berichtsfu auch die Gesamth he einer DIN A4-Seite berschreitet. Bild 6: Meldung beim ndern des Randes Dennoch berrascht es, dass wir nur links den ge nderten Seitenrand vorfinden. Nun wechseln wir allerdings nochmal in die Entwurfsansicht und erneut in die Seitenansicht. Wir erhalten wieder die genannte Meldung und diesmal erhalten wir die gew nschte Seitenr nder (siehe Bild 7). Bild 7: Nun erhalten wir auf jeder Seite 20 mm Seitenrand. Wenn wir den Bericht nun schlie en, ohne zu speichern, finden wir im Dialog Seite einrichten wieder 10 mm Abstand f r alle Seiten vor. ffnen wir den Bericht nun erneut, wiederholt sich das Spiel: beim ersten ffnen 20 mm links und 10 mm an den anderen Seiten, nach Wechsel in Entwurf und wieder zur ck 20 mm Rand auf allen Seiten. Was geschieht nach dem Speichern? Bevor wir den Bericht schlie en, speichern wir diesen nun und ffnen ihn erneut. Erst jetzt erhalten wir einen Seitenrand von 20 mm an allen vier Seiten. Das liegt daran, dass nun der neue Seitenrand bereits in den Berichtseinstellungen gespeichert ist. Kleinere Seitenr nder anzeigen Starten wir ein weiteres Experiment. Nun wollen wir bei einem Bericht mit gespeicherten 20 mm Rand auf allen Seiten per Code berall 10 mm Rand einstellen. Der Bericht enth lt jetzt im gespeicherten Zustand berall 20 mm Abstand zum Rand. Wir ffnen den Bericht in der Entwurfsansicht und vergewissern uns nochmal von dieser Einstellung. Nun ndern wir den Code wie folgt: Private Sub Report_Page() Me.Printer.LeftMargin = 567 Me.Printer.RightMargin = 567 Me.Printer.TopMargin = 567 Me.Printer.BottomMargin = 567 End Sub Nun ffnen wir den Bericht in der Seitenansicht. Wer erwartet hat, dass nun vielleicht nur der linke Rand 10 mm betr gt, sieht sich get uscht: Es sind alle R nder wie zuvor noch 20 mm breit. Wechseln wir nochmals in die Entwurfsansicht und zur ck in die Seitenansicht, erhalten wir auf allen Seiten 10 mm Seitenrand. Auch das l sst sich reproduzieren. Seitenr nder von au en ndern Wir k nnen die Seitenr nder nicht nur in einem Ereignis wie Bei Seite ndern, sondern auch von au erhalb. Und dabei haben wir auch interessante Ergebnisse erhalten. Bei ge ffnetem Bereicht mit jeweils 10 mm Rand laut Seite einrichten-Dialog f hrten wir zuerst diese Prozedur aus: Public Sub ReportBorders() Dim rpt As Report Set rpt = Reports(0) With rpt .Printer.LeftMargin = 1134 .Printer.RightMargin = 1134 .Printer.TopMargin = 1134 .Printer.BottomMargin = 1134 End With End Sub Ergebnis: links, oben und rechts 10 mm Rand und unten 20 mm Rand. Allerdings haben wir nun vier Mal die Meldung von oben erhalten. Nun haben wir einmal den Code so ge ndert, dass der obere Rand zuletzt ge ndert wird. Und siehe da: Nun hatte nur der obere Rand 20 mm und die brigen R nder 10 mm. Wenn man die Randeigenschaften von au en ndert, wird also offensichtlich nur die letzte Zeile ber cksichtigt. Bericht per Code mit den gew nschten R ndern ffnen Schlie lich k nnen wir das Verhalten des Berichts mit VBA abbilden. Wir ffnen den versteckt in der Seitenansicht, dann wiederum versteckt in der Entwurfsansicht und erneut in der Seitenansicht, diesmal allerdings nicht versteckt: Public Sub SetMargins() DoCmd.OpenReport "rpt10mm", acViewPreview, , , acHidden DoCmd.OpenReport "rpt10mm", acViewDesign, , , acHidden DoCmd.OpenReport "rpt10mm", acViewPreview End Sub Auf diese Weise werden die Seitenr nder korrekt abgebildet. Zusammenfassung und Ausblick Dieser Beitrag zeigt, das Berichte ein etwas merkw rdigses Verhalten bei Festlegen von Seitenr ndern per Code aufweisen. Mit ein paar Tricks bekommt man es jedoch hin, die Seitenr nder auch per Code einzustellen hnlich interessant ist es, die Seitenr nder abwechselnd auf unterschiedliche Werte einzustellen. Dies schauen wir uns im Beitrag Bericht mit unterschiedlichen Seitenr ndern (www.access-im-unternehmen.de/1517) an. The post Seitenr nder in Access-Berichten appeared first on Access im Unternehmen.

zum Artikel gehen

UPS Access Point

Sie sollten Ihre Zeit nicht damit verbringen, auf Pakete zu warten. Lassen Sie Ihre Pakete an einen UPS Access Point Standort, ein Partnerunternehmen vor Ort, senden und holen Sie sie ab, wenn es in Ihren Zeitplan passt. So können Sie sicher sein, dass Ih

zum Artikel gehen

Enable ESXi-Host as VNC-Server to access a vSphere-VM remotely

I prefer accessing VMs using SSH or RDP directly. Sometimes, the IP-Address of the VM isnt reachable, or protocols for remoteaccess need to be disabled for security reasons. In these cases, if an IP-connection to the ESXi-Server is available this could be

zum Artikel gehen

Die Rakete ist erfolgreich ins All gestartet! Wir wiederholen, Space for Sale Early Access ist JETZT LIVE!

Heute ist das interplanetarische Abenteuer Space for Sale von Mirage Game Studios in den Early Access auf Steam gestartet! Du kannst die aufregende Reise eines Weltraummaklers alleine oder mit einem Freund oder einer Freundin antreten und deine Erfolgscha

zum Artikel gehen

Der PS5 Access Controller: Ein genauer Blick auf die Hardware und PlayStations Vision für Barrierefreiheit

Bevor der PS5 Access Controller am 6. Dezember 2023 f r 89,99 auf den Markt kommt, wollten wir uns anschauen, wie viel Barrierefreiheit er wirklich erm glicht. Wir haben PlayStation in London besucht, um zu verstehen, was die neue Hardware alles kann un

zum Artikel gehen

Expires Header in .htaccess auf Apache

Wie man Ablaufzeit-Header (Expires Header) mit .htaccess auf einem Apache-Webserver hinzufügt erfahrt ihr hier! Wenn dein Webhosting-Anbieter den Apache-Webserver verwendet, könnet ihr den Ablaufzeit-Header mithilfe der .htaccess-Datei hinzufügen. Die bef

zum Artikel gehen