Tipps und Tricks 6/2009

Wollten Sie schon immer mal einen Seitenfuß nur auf der letzten Berichtsseite anzeigen Oder dem Benutzer die Möglichkeit geben, Steuerelemente auf Formularen einfach per Tastenkombination zu betätigen Und kennen Sie schon den Trick, wie Sie ein Bezeichnungsfeld über die Entwurfsansicht von Formularen an ein anderes Steuerelement anhängen können Und vielleicht interessiert Sie auch, wie das per VBA geschieht Und wie funktioniert überhaupt die Z-Reihenfolge von Steuerelementen und warum scheint diese manchmal zu spinnen Nun, irgendeiner dieser oder der anderen in diesem Beitrag enthaltenen Tricks wird Sie schon begeistern. Lesen Sie einfach weiter!

Seitenfuß nur auf letzter Seite

Der große Unterschied zwischen dem Seitenfuß und dem Berichtsfuß in der Seitenansicht von Berichten ist, dass der Seitenfuß immer ganz unten landet und der Berichtsfuß direkt hinter den letzten Detail- oder Gruppenfußbereichen.

Wer im Fuß der letzten Seite Informationen unterbringen möchte, und nur dort, der wird um den Einsatz des Seitenfuß-Bereichs also nicht herumkommen.

Es gibt mehrere Varianten, dafür zu sorgen, dass bestimmte Informationen des Seitenfußbereichs nur auf der letzten Seite angezeigt werden. Welche Sie wählen, hängt davon ab, ob der Seitenfußbereich auch auf den anderen Seiten Informationen anzeigen soll.

Ist dies nicht der Fall, verwenden Sie eine Lösung, bei der Sie den Seitenfuß einfach auf allen Seiten außer auf der letzten Seite ausblenden.

Generell blenden Sie einen Bereich ganz einfach aus, indem Sie eine Ereignisprozedur für die Ereigniseigenschaft Beim Formatieren anlegen und dort den Parameter Cancel auf False einstellen – so bleibt der Seitenfuß unsichtbar:

Private Sub Seitenfußbereich_Format(Cancel As
 Integer, FormatCount As Integer)
    Cancel = True
    End Sub

Dieses Ereignis wird für jeden Seitenfußbereich einmal aufgerufen, also auch für jede Seite einmal. Aktuell wird der Seitenfuß aber auf jeder Seite ausgeblendet, auch auf der letzten. Sie müssen also noch herausfinden, ob das Ereignis für den Seitenfuß der letzten oder einer anderen Seite ausgelöst wird. Dazu legen Sie zunächst ein einfaches Textfeld mit der Bezeichnung txtSeiten und dem Steuerelementinhalt =Pages an.

Dieses Steuerelement zeigt nun im Seitenfuß jeweils die Gesamtseitenzahl des Berichts an. Damit lässt sich etwas anfangen, denn diese Information erhalten Sie auch via VBA – genauso wie die Nummer der aktuellen Seite.

Sie brauchen also nur noch zu prüfen, ob die aktuelle Seite der Seitenzahl entspricht, und genau dann den Fußbereich einzublenden. Und das geht so:

Private Sub Seitenfußbereich_Format(Cancel
 As Integer, FormatCount As Integer)
    Cancel = Not (Me.Page = Me.Pages)
    End Sub

Sie mögen nun berechtigterweise fragen, warum wir ein Textfeld namens txtSeiten anlegen, um die Seitenzahl anzuzeigen, wenn wir doch per VBA die Seitenzahl ermitteln Ganz einfach: Pages liefert nur dann die richtige Seitenzahl, wenn diese zuvor berechnet wurde – und das geschieht nur durch das Hinzufügen eines Steuerelements mit dem Steuerelementinhalt =Pages. Anderenfalls liefert Me.Pages immer den Wert 0.

Wenn Sie den Seitenfuß auch auf den übrigen Seiten verwenden möchten, um Informationen wie etwa die Seitenzahl anzuzeigen, und nur auf der letzten Seite sollen weitere Informationen erscheinen, haben Sie noch leichteres Spiel: Sie brauchen dann nur die Sichtbarkeit der entsprechenden Steuerelemente über die oben genannte Bedingung einzustellen, also etwa so:

Me.txtDatum.Visible = Me.Page = Me.Pages

Steuerelemente direkt per Tastatur ansprechen

Vielleicht haben Sie dies schon einmal bei anderen Anwendungen gesehen und sich gefragt, wie Sie das auch in Access-Formularen hinbekommen: Da findet man Schaltflächen und ähnliche Steuerelemente, bei denen ein bestimmter Buchstabe unterstrichen ist.

Wenn Sie den Buchstaben dann bei gedrückter Alt-Taste drücken, aktiviert oder betätigt Access das betroffene Steuerelement.

Bei einer Schaltfläche ist dies ganz einfach: Hier brauchen Sie nur die Beschriftung anzupassen, indem Sie vor das Zeichen, das unterstrichen dargestellt werden soll, ein Kaufmanns-Und (&) setzen – schon können Sie diese Schaltfläche per Tastatur steuern (siehe Bild 1).

pic003.png

Bild 1: Verschiedene Beispiele für Steuerelemente, die Sie per Tastenkombination ausführen oder aktivieren können

Bei Beschriftungsfeldern von Steuerelementen gelingt dies ebenso schnell. Sie müssen nur beachten, dass Sie nicht das eigentliche Steuerelement, sondern das Beschriftungsfeld anpassen.

Dies aktiviert jeweils das mit dem Bezeichnungsfeld verknüpfte Steuerelement. Aufpassen müssen Sie, wenn Sie das Bezeichnungsfeld etwa eines Textfelds einmal ausgeschnitten und woanders eingefügt haben, um beispielsweise Spaltenüberschriften in einem Endlosformular zu erzeugen.

Dann sind Bezeichnungsfeld und Textfeld nicht mehr miteinander verknüpft und das Ausführen der Tastenkombination führt nicht mehr zum Erfolg. Das Bezeichnungsfeld verfügt dann aber über ein eigenes Beim Klicken-Ereignis, das Sie mit einer entsprechenden Ereignisprozedur füllen könnten, das wiederum das betroffene Steuerelement aktiviert.

Leider funktioniert dies aber in der Praxis nicht: Zwar führt ein Klick auf ein so ausgestattetes Bezeichnungsfeld tatsächlich zum Aktivieren des Steuerelements, aber die Tastenkombination hilft nicht weiter.

Die Beispiele zu diesem Tipp finden Sie im Formular frmSteuerelementPerTastatur der Beispieldatenbank.

Gebundene und ungebundene Bezeichnungsfelder

Es gibt nur eine Art von Bezeichnungsfeldern. Oder etwa doch nicht Wenn wir die Bezeichnungsfelder, die automatisch mit anderen Steuerelementen wie Text-, Kombinations- oder Listenfeldern zum Formular hinzugefügt werden, mit denen vergleichen, die als eigenes Steuerelement im Formular oder Bericht landen, stellen wir zumindest einen großen Unterschied fest: Die allein stehenden Bezeichnungsfelder verfügen über fünf Ereigniseigenschaften, mit denen Sie beispielsweise einen Mausklick auf ein Bezeichnungsfeld abfangen können. Die gebundenen Bezeichnungsfelder besitzen gar keine Ereigniseigenschaften.

Desweiteren fehlen bei den gebundenen Bezeichnungsfeldern die beiden Eigenschaften Hyperlink-Adresse und Hyperlink-Unteradresse, und eine Kontextmenüleiste lässt sich auch nur bei ungebundenen Bezeichnungsfeldern über die gleichnamige Eigenschaft einstellen.

Dafür lassen sich gebundene Bezeichnungsfelder zusammen mit dem jeweiligen Steuerelement verschieben.

Wenn Sie einem gebundenen Bezeichnungsfeld eine Ereignisprozedur zuweisen möchten oder die übrigen beim gebundenen Bezeichnungsfeld fehlenden Eigenschaften nutzen möchten, erreichen Sie dies nur, wenn Sie die Bindung zwischen Bezeichnungsfeld und Steuerelement aufheben. Dies ist natürlich auch unbedingt nötig, wenn Sie das Bezeichnungsfeld als Spaltenüberschrift im Formularkopf und die eigentlichen Steuerelemente in der Endlosansicht im Detailbereich anzeigen möchten.

Wie aber heben Sie die Bindung auf Ganz einfach: Sie schneiden das Bezeichnungsfeld mit Strg + X oder dem entsprechenden Kontextmenübefehl aus und fügen es im gewünschten Bereich mit Strg + V wieder ein.

Die Beziehung zwischen Bezeichnungsfeld und dem zu beschriftenden Steuerelement können Sie nur wieder herstellen, wenn Sie das Bezeichnungsfeld erneut ausschneiden, das Zielsteuerelement markieren und das Bezeichnungsfeld dann einfügen.

Steuerelemente mit und ohne Bezeichnungsfelder

Wenn Sie ein Steuerelement wie ein Textfeld in ein Formular einfügen, fügt Access immer automatisch ein Bezeichnungsfeld hinzu. Wirklich immer Nein, Sie können diese Funktion auch deaktivieren.

Dazu öffnen Sie ein Formular in der Entwurfsansicht und klicken auf ein Steuerelement der Symbolleiste mit den Steuerelementen (Toolbox), zum Beispiel ein Textfeld. Fügen Sie das Textfeld aber noch nicht in das Formular ein!

Das Eigenschaftsfenster zeigt nun wie üblich die Eigenschaften des Steuerelements an. Aber auch nur anscheinend, denn es enthält auch einige Eigenschaften, die ein bereits angelegtes Textfeld-Steuerelement nicht aufweist.

Dazu gehört die Eigenschaft Mit Bezeichnungsfeld aus Bild 2. Wenn Sie diese Eigenschaft auf den Wert Nein einstellen und die Einstellung mit Strg + S speichern, wird Access innerhalb dieses Formulars fortan nur noch Textfelder ohne Bezeichnungsfelder einfügen – aber nur für dieses Formular, nicht für andere.

pic004.png

Bild 2: Diese Eigenschaft legt fest, ob Steuerelemente mit oder ohne Bezeichnungsfeld ins Formular eingefügt werden.

Beschriftungsfelder mit und ohne Doppelpunkt

Wenn Sie Felder aus der Datenherkunft eines Formulars in seinen Entwurf ziehen, fügt Access normalerweise ein Bezeichnungsfeld hinzu, das den Namen des Felds enthält. Falls Sie im Tabellenentwurf eine Beschriftung für das Tabellenfeld eingetragen haben, erscheint dieses statt des Feldnamens. Ist Ihnen schon aufgefallen, dass Access immer automatisch einen Doppelpunkt hinter den Texten frisch eingefügter Bezeichnungsfelder platziert

Falls ja, interessiert es Sie ja möglicherweise, wie Sie diese Hilfestellung von Access deaktivieren können. Wenn Sie den vorherigen Tipp gelesen haben, waren Sie schon nah dran: Die benötigte Eigenschaft namens Mit Doppelpunkt erscheint nur, wenn Sie ein Formular oder einen Bericht in der Entwurfsansicht öffnen und das Steuerelement, dessen Bezeichnungsfeld Sie anpassen möchten, in der Symbolleiste Toolbox markieren – ganz so, als ob Sie dieses Steuerelement gleich ins Formular einfügen möchten. Die Einstellung können Sie zusammen mit dem Formular speichern, sie wirkt sich nicht auf andere Formulare aus.

Beschriftungsfelder und Steuerelemente per VBA trennen und wieder zusammenführen

Weiter oben haben Sie gelesen, wie Sie die zusammen mit Steuerelementen wie etwa Textfeldern zu Formularen oder Berichten hinzugefügten und an das jeweilige Steuerelement gebundenen Bezeichnungsfelder vom Steuerelement trennen und wieder anbinden können.

Wie aber funktioniert dies per VBA Im Grunde genommen gar nicht. Sie können zwar über die Controls-Auflistung von Steuerelementen auf deren Bezeichnungsfeld zugreifen und mit der Parent-Eigenschaft auf das einem Bezeichnungsfeld zugeordnete Steuerelement, aber diese Eigenschaften lassen sich nicht per VBA einstellen.

Dies wird allein über die Definition des Formulars oder Berichts festgelegt, der wie in Bild 3 aussieht. Diese Definition speichern Sie mit der SaveAsText-Methode in einer Textdatei. Für ein Formular lautet diese beispielsweise wie folgt:

pic005.png

Bild 3: Definition eines Formulars mit einem an ein Textfeld gebundenen Bezeichnungsfeld

SaveAsText acForm, "frmBeispiel", "c:\Beispiel.txt"

Die Textdatei können Sie anschließend mit einem Texteditor Ihrer Wahl öffnen und betrachten. In unserem Beispiel ist der Code mit der Definition des Bezeichnungsfelds in den für das Textfeld eingebettet.

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

Schreibe einen Kommentar