Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2010.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Lernen Sie verschiedene Möglichkeiten kennen, Daten mithilfe eines alphabetischen Registers zu filtern.

Techniken

Formulare, Registersteuerelement, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

AlphabetischesRegister.mdb

Shortlink

www.access-im-unternehmen.de/730

Alphabetisches Register

André Minhorst, Duisburg

Kennen Sie auch noch die guten alten Register-Einlagen für Aktenordner, die den Inhalt entweder nach Zahlen oder Buchstaben sortieren? Ein solches Register können Sie auch unter Access in einem Formular nachbilden, beispielsweise für den schnellen Zugriff auf die Daten aller Kunden, deren Name mit einem bestimmten Buchstaben beginnt. Dieser Beitrag zeigt, wie Sie schnell ein solches Register erstellen und mit der gewünschten Funktion versehen.

Zu Beispielzwecken verwenden wir die Kundentabelle aus der Südsturm-Datenbank, unserer optimierten Version der Nordwind-Beispieldatenbank von Access 2003. Das Formular zur Anzeige des alphabetischen Registers soll den Namen frmKunden erhalten.

Fügen Sie diesem Formular ein Registersteuerelement hinzu und nennen Sie es tabKunden. Stellen Sie außerdem die Eigenschaft Feste Registerbreite so ein, dass die Großbuchstaben wie in Abb. 1 noch sichtbar sind, aber die Registerlaschen nicht zu viel Platz wegnehmen.

Obwohl Abb. 1 bereits alle Buchstaben anzeigt, sind Sie noch nicht so weit: Das Registersteuerelement zeigt beim Anlegen erst einige wenige Registerlaschen, die überdies noch nicht die gewünschten Beschriftungen enthalten.

Listing 3: Code der Klasse clsCommandbutton

Dim WithEvents m_cmd As Commandbutton

Public Property Set Commandbutton(cmd As Commandbutton)

    Set m_cmd = cmd

    m_cmd.OnClick = "[Event Procedure]"

End Property

Private Sub m_cmd_Click()

    m_cmd.Parent.KundenFiltern

End Sub

pic001.png

Abb. 1: Alphabetisches Register in der Entwurfsansicht

Außerdem sollten Sie den Registerlaschen auch entsprechende Namen geben.

Auch wenn der Aufwand für das Erstellen von 26 Registerlaschen und die Vergabe der Beschriftungen und Namen in einigen Minuten erledigt ist, geschieht dies per VBA-Code zuverlässiger.

Die Prozedur aus Listing 1 braucht hierzu kaum eine Sekunde: Sie öffnet das Formular frmKunden in der Entwurfsansicht, erstellt einen Verweis auf das Registersteuerelement tabKunden, löscht alle enthaltenen Registerseiten und erstellt 26 neue - für jeden Buchstaben des Alphabets eine, versehen mit dem Buchstaben als Beschriftung und einem Namen, der sich aus dem Präfix pge und dem jeweiligen Buchstaben zusammensetzt (pgeA, pgeB und so weiter).

Listing 1: Einstellen der Eigenschaften der Registerseiten

Public Sub RegisterEinrichten()

    Dim i As Integer

    Dim objTabControl As TabControl

    DoCmd.OpenForm "frmKunden", acDesign

    Set objTabControl = Forms!frmKunden!tabKunden

    Do While objTabControl.Pages.Count > 0

        objTabControl.Pages.Remove objTabControl.Pages.Count - 1

    Loop

    For i = 1 To 26

        With objTabControl

            .Pages.Add

            .Pages(i - 1).Caption = Chr(64 + i)

            .Pages(i - 1).Name = "pge" & Chr(64 + i)

        End With

    Next i

End Sub

Anzeige der Kunden im Unterformular

Jede Registerseite soll die Kunden anzeigen, deren Name mit dem Buchstaben auf der Registerlasche beginnt. Zur Darstellung der Kundenliste verwenden wir ein Unterformular, das seine Daten in der Datenblattansicht darstellt. Dazu erstellen Sie ein neues Formular, speichern es unter dem Namen sfmKunden, stellen die Datenherkunft auf die Tabelle tblKunden ein, ziehen alle benötigten Felder aus der Feldliste in den Detailbereich des Formularentwurfs (s. Abb. 2) und stellen schließlich die Eigenschaft Standardansicht auf Datenblatt ein.

pic002.png

Abb. 2: Das Unterformular zur Anzeige der Kundenliste in der Entwurfsansicht

Das Unterformular fügen Sie zum Formular mit dem Registersteuerelement hinzu, indem Sie es aus dem Datenblattfenster beziehungsweise dem Navigationsbereich in den Entwurf des Zielformulars ziehen.

Dabei gibt es zwei Möglichkeiten: Entweder Sie ziehen das Unterformular auf die aktuell ausgewählte Seite des Registersteuerelements, was sich dadurch bemerkbar macht, dass Access diese Seite schwarz einfärbt. Oder Sie ziehen das Unterformular an irgendeine Stelle außerhalb des Registersteuerelements.

Letzteres ist die richtige Variante: Wenn Sie das Unterformular auf eine Registerseite ziehen, würde Access dieses auch nur dann anzeigen, wenn der Benutzer die entsprechende Registerseite des Formulars ausgewählt hat. Während dies bei individuell gestalteten Registerseiten der richtige Weg ist, würde er bei unserer Lösung zur Überladung des Formulars führen: Wir müssten dann für jeden Buchstaben ein eigenes Unterformularsteuerelement zur Anzeige der Kunden mit dem jeweiligen Anfangsbuchstaben anlegen, was der Performance nicht zuträglich ist - selbst, wenn Sie dieses Unterformular jeweils erst dann füllen, wenn der Benutzer die entsprechende Registerseite aktiviert.

Wir legen also einfach ein einziges Unterformular neben dem Registersteuerelement ab und verschieben es dann wie in Abb. 3 über das Registersteuerelement.

pic003.png

Abb. 3: Das Registersteuerelement mit dem darüber platzierten Unterformular

Nun müssen wir noch dafür sorgen, dass das Unterformularsteuerelement nur diejenigen Datensätze der Tabelle tblKunden anzeigt, deren Name mit dem Buchstaben der gewählten Registerseite beginnt. Für diesen Zweck definieren wir im Klassenmodul zwei Ereignisprozeduren und eine weitere private Prozedur.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Formularposition speichern und wiederherstellen

Transparenz und andere Effekte in Formularen

Zugriff auf Daten in Formularen und Steuerelementen

Registersteuerelemente von A-Z

Modale Dialoge mal anders

Formulare für die Dateneingabe

Validieren mit Klasse

Änderungsdaten protokollieren

Zoomfenster im Eigenbau

Fortschrittsanzeige

Datenbank nach Vorlage

Kein Datensatz- und Positionswechsel bei Requery

Meldungsfenster im Eigenbau

Benutzerverwaltung

© 2003-2015 André Minhorst Alle Rechte vorbehalten.