Bericht mit unterschiedlichen Seitenrndern

Berichte werden in der Regel so ausgelegt, dass sie immer auf der linken Seite einen Rand zum Abheften haben. Bei den meisten Dokumenten ist das v llig ausreichend, zum Beispiel f r Rechnungen oder Angebote. Es gibt jedoch auch wesentlich anspruchsvollere Aufgaben, die mit einer Access-Anwendung samt Bericht erledigt werden. Diese sollen dann so ausgedruckt werden k nnen, dass Vorder- und R ckseite eines Blatts bedruckt werden und beim aufgeklappten Dokument der breitere Rand immer zur Heftung hin zeigt. Auch wenn die dazu notwendigen Einstellungen selten angewendet werden: Es gibt sie und in diesem Beitrag zeigen wir, wie man einen Bericht so druckt, dass die Seiten als Brosch re geheftet werden k nnen. Bericht vorbereiten Als Erstes ben tigen wir einen geeigneten Bericht. Eigentlich eignet sich dazu jeder Bericht, der vier und mehr Seiten enth lt. Als Beispiel verwenden wir einen Bericht, der die Adressen der Mitarbeiter aus unserer Mitarbeiterverwaltung als Liste ausgibt. Wir erstellen also eine neuen, leeren Bericht, dem wir die Tabelle tblMitarbeiter als Datensatzquelle zuweisen. Wir ziehen die Felder MitarbeiterID, AnredeID, Vorname, Nachname, Strasse, PLZ und Ort in den Detailbereich des Entwurfs. Dann wollen wir diese m glichst effizient in die Tabellenform berf hren, also so, dass die Bezeichnungsfelder als Spalten berschriften im Seitenkopf-Bereich landen und die eigentlichen Felder im Detailbereich verbleiben. Dazu markieren wir alle Steuerelemente und bet tigen im Ribbon den Befehl Anordnen|Tabelle|Tabelle (siehe Bild 1). Bild 1: Hinzuf gen und Anordnen der anzuzeigenden Felder Damit erhalten wir die Ansicht aus Bild 2. Damit k nnen wir bereits fast arbeiten. Bild 2: Tabelle als Basis unseres Berichts Wenn wir jedoch in die Seitenansicht wechseln, stellen wir fest, dass wir noch ein paar optische Verbesserungen vornehmen m ssen (siehe Bild 3): Bild 3: Die Optik muss noch optimiert werden. Die Zeilen werden noch mit wechselnder Hintegrundfarbe angezeigt. Die einzelnen Textfelder haben noch R nder. Die Breite der Textfelder muss noch optimiert werden, damit alle Eintr ge auf die Breite des bedruckbaren Bereichs passen. Die wechselnden Hintergr nde stellen wir ber die Eigenschaft Alternative Hintergrundfarbe, der wir den gleichen Wert hinzuf gen, den die Eigenschaft Hintergrundfarbe aufweist. Die R nder der Textfelder entfernen wir, indem wir diese markieren und die Eigenschaft Rahmenart auf Transparent einstellen. Schlie lich wechseln wir in die beraus praktische Layoutansicht des Berichts. Diese zeigt die Daten so an, wie sie auch in der Berichtsansicht erscheinen und was ungef hrt der Ansicht in der Seitenansicht entspricht zumindest bez glich der Spaltenbreiten. Diese Ansicht bietet aber gleichzeitig die M glichkeit, Einstellungen an den Elementen vorzunehmen. Dazu geh rt auch das Definieren der Spaltenbreiten. Wir brauchen nur wie in Bild 4 den rechten Rand eines der Steuerelemente einer Spalte nach links oder rechts zu ziehen, um die Breite an den Inhalt anzupassen. Bild 4: Anpassen der Spaltenbreiten Hier m ssen wir die Spaltenbreiten nun insgesamt so verkleinern, dass auf der rechten Seite kein Element mehr aus der gestrichelten Markierung herausragt. Die Spalten berschriften der Felder MitarbeiterID und AnredeID ndern wir noch auf ID und Anrede, sodass diese weniger Platz ben tigen. Dazu brauchen wir diese nur doppelt anzuklicken und anzupassen. Die Inhalte der Spalte MitarbeiterID, die nun die berschrift ID tr gt, wollen wir au erdem noch linkszentriert ausrichten. Dazu wechseln wir im Ribbon zum Bereich Format|Schriftart, markierten die Spalten berschrift und stellen f r diese als Ausrichtung Linksb ndig ausrichten ein. Das Gleiche erledigen wir dann noch f r die Feldinhalte dieser Spalte. Hier sehen wir beim Anklicken eines der Eintr ge, dass direkt alle Elemente der Spalte markiert werden (siehe Bild 5). Bild 5: Ausrichten der IDs am linken Spaltenrand berschriften hervorheben Schlie lich wollen wir die berschriften noch fett drucken und unter den berschriften eine Linie hinzuf gen. Das erledigen wir wieder in der Entwurfsansicht (siehe Bild 6). Hier sehen wir gegebenenfalls auch noch, dass die Seite wesentlich breiter als der Platz ist, der durch die Steuerelemente beansprucht wird in diesem Fall ziehen wir den rechten Seitenrand bis an den rechten Rand des ganz links platzierten Steuerelements heran. Bild 6: Der Bericht in der Entwurfansicht Seitenr nder korrekt einrichten Wechseln wir nun zur Seitenansicht, erhalten wir die Ansicht aus Bild 7. Das sieht schon gut aus, aber der Seitenrand betr gt auf beiden Seiten nur weniger als einen Zentimeter. Bild 7: Der Bericht in der Seitenansicht Die genauen Einstellungen finden wir im Dialog Seite einrichten, den wir in der Entwurfsansicht des Berichts im Ribbon unter Seiten einrichten|Seitenlayout mit dem Befehl Seite einrichten aufrufen k nnen. Hier sehen wir nun, dass der Abstand f r alle Seiten auf 6,35 Millimeter eingestellt ist (siehe Bild 8). Bild 8: Dialog zum Einrichten der Seite Wir werden die Seitenr nder gleich ohnehin per VBA einstellen. Dieser soll f r den u eren Rand 10 mm betragen und f r den inneren Rand 25 mm. Wenn das keine Rolle spielt, warum gehen wir nicht direkt zur Programmierung der Seitenr nder ber? Weil wir aktuell links und rechts in Summe nur 13 mm Seitenrand sehen und wir sp ter insgesamt 35 mm ben tigen. Das hei t, dass der Inhalt aktuell noch zu viel Platz ben tig. Also stellen wir in diesem Dialog zun chst die linke Seite auf 25 mm und die rechte auf 10 mm Seitenrand ein. Wechseln wir nun zur Seitenansicht, stellen wir fest, dass auf der ersten Seite der rechte Rand der rechten Spalte abgeschnitten wird. Um dies zu korrigieren, wechseln wir erneut zur Layoutansicht und justieren die Spaltenbreiten so, dass diese wieder in den gestrichelt markierten Bereich hineinpassen (siehe Bild 9). Bild 9: Die Spalten sind aktuell wieder zu breit. Nach einigen Korrekturen und dem Durchlaufen aller Inhalte zur Pr fung, ob diese noch vollst ndig sichtbar sind, sieht der Entwurf in der Layoutansicht wie in Bild 10 aus. Lediglich die Linie im Seitenkopf m ssen wir hier noch k rzen. Bild 10: Spalten mit perfekter Breite Abwechselnde Seitenr nder Danach hat der Bericht die Form, mit der wir in die Programmierung der alternierenden Seitenr nder einsteigen k nnen. Das Ziel ist, dass der Seitenrand f r die erste Seite links 25 mm betr gt und rechts 10 mm diese Seite ist die Titelseite. Die zweite und die dritte Seite sollen dann die folgenden Seitenr nder aufweisen: Zweite Seite: Links 10 mm, rechts 25 mm Dritte Seite: Links 25 mm, rechts 10 mm. F r die folgenden Seiten wechseln die Seitenr nder entsprechend. Das hei t also: F r alle Seiten mit einer ungeraden Seitennummer betr gt der linke Rand 25 mm und der rechte Rand 10 mm und alle Seiten mit einer geraden Seitennummer erhalten die umgekehrten Seitenr nder. Aktuell betragen die Seitenr nder f r alle Seiten links 10 mm und rechts 25 mm. Das werden wir nun ndern. Hier nutzen wir das Ereignis Bei Seite (siehe Bild 11). F r diese Prozedur hinterlegen wir zun chst einmal zwei Anweisungen, mit denen wir die Werte f r die aktuellen Seitenr nder herausfinden. Dazu nutzen wir die Eigenschaften LeftMargin und RightMargin des Printer-Objekts des aktuellen Berichts. Der Code sieht wie folgt aus: Bild 11: Anlegen einer Ereignisprozedur f r das Ereignis Bei Seite Private Sub Report_Page() Debug.Print "Linker Rand: " _ Me.Printer.LeftMargin Debug.Print "Rechter Rand: " _ Me.Printer.RightMargin End Sub Damit erhalten wir die folgende Ausgabe: Linker Rand: 567 Rechter Rand: 1418 Diese Werte verwenden wir als Ausgangspunkt f r die Programmierung der Seitenr nder. Wir nutzen zun chst die folgende Prozedur, die aus logischer Sicht das gew nschte Ergebnis liefern sollte: Private Sub Report_Page() If Me.Page Mod 2 = 1 Then Me.Printer.LeftMargin = 1418 Me.Printer.RightMargin = 567 Else Me.Printer.LeftMargin = 567 Me.Printer.RightMargin = 1418 End IfEnd Sub Wir pr fen hier, ob die aktuelle Seitennummer geteilt durch zwei den Rest 1 liefert. In diesem Fall stellen wir den linken Seitenrand auf 1418 ein (also auf ca. 25 mm) und den rechten auf 567 (ca. 10 mm). Dies sind also die Abst nde f r die Seiten 1, 3, 5 und so weiter. Wenn Me.Page Mod 2 nicht den Wert 1 ergibt, dann sind wir auf der Seite 2, 4, 6 und so weiter. Dann soll der linke Seitenrand auf 567 und der rechte auf 1418 eingestellt werden. Damit erhalten wir f r die erste Seite allerdings auf jeder Seite 25 mm Seitenrand (siehe Bild 12). Hier wird au erdem der rechte Teil der Tabelle abgeschnitten. Bild 12: Seitenr nder f r die erste Seite direkt nach dem ffnen Wechseln wir zur zweiten Seite, stimmt die Anzeige (siehe Bild 13). F r die folgenden Seiten wiederholt sich dieses Bild. Bild 13: Auf der zweiten Seite stimmt die Anzeige. nderung: Einf gen der Seitenzahl M glicherweise werden die Seiten schneller gerendert, als die Prozeduren ausgef hrt werden. Also probieren wir einmal etwas aus und f gen dem Seitenfu ein Textfeld hinzu, dem wir den Namen txtSeite geben und das wir mit dem folgenden Steuerelementinhalt f llen (siehe Bild 14): Bild 14: Hinzuf gen eines Steuerelements mit der Seitenzahl =[Seite] Damit erhalten wir die gleiche fehlerhafte Darstellung. Wir verwenden die Seite aus diesem Textfeld einmal zur Berechnung: If Me.txtSeite Mod 2 = 1 Then Me.Printer.RightMargin = 567 Me.Printer.LeftMargin = 1418 Else Me.Printer.RightMargin = 1418 Me.Printer.LeftMargin = 567 End If Dies macht es jedoch nur noch schlimmer die erste Seite wird mit den gleichen falschen R ndern wir zuvor abgebildet und die zweite hat die gleichen R nder. Bei der dritten Seite das gleiche Bild und erst die vierte Seite wird korrekt dargestellt. Nun verschieben wir das Textfeld mit der Seitenzahl einmal in den Seitenkopf. Auch dies bringt keine nderung. L sung: Die Voreinstellung l sst sich nicht berschreiben! Wir haben vorhin den Abstand f r den linken Seitenrand auf 25 mm eingestellt und den rechten auf 10 mm. W hrend der Experimente ist klar geworden: Mit den Einstellungen f r den linken und rechten Seitenrand mit Me.Printer.LeftMargin und Me.Printer.RightMargin k nnen wir zwar grunds tzlich die Seitenr nder einstellen, aber wir k nnen diesen nicht kleiner machen als in den Voreinstellungen. Schauen wir uns nochmal die von uns get tigten Voreinstellungen an (siehe Bild 15). Bild 15: Die Einstellungen gelten immer, unabh ngig von per VBA vorgenommenen Einstellungen. Durch unsere Einstellung wird zwar auf der zweiten Seite der Inhalt so nach links verschoben, dass er 10 mm vom linken Seitenrand aus angezeigt wird, aber der in den Einstellungen vordefinierte Abstand von 25 mm bleibt immer frei und somit werden die linken 15 mm des Inhalts abgeschnitten. Was tun wir also? Richtig, wir stellen einfach die beiden R nder links und rechts in der Seiteneinrichtung auf jeweils 10 mm ein. Nun liefert der Bericht f r jede Seite die richtigen Seitenr nder (siehe Bild 16). Dies gilt jedoch nur f r das erste Durchlaufen der Seiten von vorn nach hinten. Wenn wir wieder zur ckbl ttern, erhalten wir nicht die korrekten R nder. Und auch als wir f r den Screenshot die Ansicht mit zwei Seiten gleichzeit aktivieren wollten, wurden die Seitenr nder nicht korrekt dargestellt. Bild 16: Korrekte Anzeige der R nder Das Problem beim Zur ckbl ttern besteht darin, dass die Ereignisprozedur Report_Page dann nicht mehr ausgel st wird. Dadurch wird der zuletzt g ltige Seitenrand beibehalten. Weitere Informationen wie Seitenzahlen gespiegelt darstellen Wenn man einem Bericht wie diesem Seitenzahlen hinzuf gen m chte, kann man diese zentriert darstellen, was f r gerade und ungerade Seiten funktioniert. Wenn wir diese jedoch, wie es oft der Fall ist, beispielsweise au en auf der unteren Seite abbilden m chte, m ssen wir auch hier nochmal in die Trickkiste greifen (siehe Bild 17). Bild 17: Hinzuf gen von Seitenzahlen Wir f gen diesmal gleich zwei Textfelder ein, von den das linke txtSeiteLinks und das rechte txtSeiteRechts hei t. Beide enthalten den Steuerelementinhalt =[Seite]. Wir wollen nun f r gerade Seiten das linke Steuerelement anzeigen und das rechte ausblenden und umgekehrt. Dann f gen wir dem Bereich Seitenfu die folgende Prozedur f r das Ereignis Beim Formatieren hinzu: Private Sub Seitenfu bereich_Format(Cancel As Integer, _ FormatCount As Integer) If Me.Page Mod 2 = 1 Then Me!txtSeiteLinks.Visible = True Me!txtSeiteRechts.Visible = False Else Me!txtSeiteLinks.Visible = False Me!txtSeiteRechts.Visible = True End If End Sub Damit erhalten wir nun das gew nschte Verhalten. Wenn dies nicht der Fall sein sollte, kann es daran liegen, dass die Seitenzahl gegebenenfalls durch den Seitenrand berdeckt wird. Zusammenfassung und Ausblick Dieser Artikel zeigt, wie wir spiegelbildliche Seitenr nder und Seitenzahlen in Berichten ausgeben k nnen. Dies gelingt nur vorw rts. Letztlich konnten wir den Bericht nun auch in ein PDF-Dokument drucken. Dazu muss der jeweilige Drucker jedoch als Standard festgelegt sein und direkt ber den Befehl Drucken des Kontextmen s im Navigationsbereich aufgerufen werden. Wir werden pr fen, ob es noch eine zuverl ssige Methode gibt, den Bericht auch nach dem vorherigen ffnen auszudrucken. Wichtig ist, dass man vor dem Speichern immer pr ft, ob die Seitenr nder im Entwurf immer den minimalen Wert aufweisen, der f r die wechselnden Seiten rechts und links eingestellt werden soll, also zum Beispiel 10 mm. The post Bericht mit unterschiedlichen Seitenr ndern appeared first on Access im Unternehmen.

zum Artikel gehen

Bericht über Gemeinde Kirchbrak

Hier ist ein Bericht über die Gemeinde Kirchbrak zu finden. Leider ohne Nennung eines Datums. Bericht als PDF:Bericht über Gemeinde Kirchbrak Bericht über Gemeinde Kirchbrak The post Bericht über Gemeinde Kirchbrak first appeared on Bodenwerder Damals.

zum Artikel gehen

Bericht 26 Lichterfest Bodenwerder

Hier ist ein Bericht vom 26 Lichterfest in Bodenwerder aus August 1979 zu finden Bericht als PDF: Bericht 26. Lichterfest The post Bericht 26 Lichterfest Bodenwerder first appeared on Bodenwerder Damals.

zum Artikel gehen

Bericht Förderprogramm Zusammenarbeit Schule Sportvereine

Hier ist ein Bericht über die Zusammenarbeit zwischen Schule und Sportvereinen durch ein spezielles Förderprogramm zu lesen. Bericht als PDF: Bericht Förderprogramm Zusammenarbeit Schule Sportvereine Bericht Förderprogramm Zusammenarbeit Schule Spor

zum Artikel gehen

Bericht Jugendausschuss Kreisfußballverband Holzminden

Hier ein Bericht über den Bericht Jugendausschuss Kreisfußballverband Holzminden Artikel als PDF:Bericht Jugendausschuss Kreisfußballverband Holzminden Bericht Jugendausschuss Kreisfußballverband HolzmindenThe post Bericht Jugendausschuss Kreisfußballv

zum Artikel gehen

Bericht Lichterfest Bodenwerder 1979

Hier ist ein weiterer Bericht über das Lichterfest im Jahr 1979 zu finden Bericht als PDF:Bericht Lichterfest August 1979 The post Bericht Lichterfest Bodenwerder 1979 first appeared on Bodenwerder Damals.

zum Artikel gehen