Steuerelemente mit Gedächtnis

Zusammenfassung

Lernen Sie, wie man Listenfeldern beibringt, sich die zuletzt markierten Werte zu merken.

Techniken

Formulare, Listenfelder, VBA

Voraussetzungen

Access 97 und höher

Beispieldatenbank

ListenfelderMitGedaechtnis97.mdb, ListenfelderMitGedaechtnis00.mdb

André Minhorst, Duisburg

Wenn ein Benutzer ein Formular öffnet, eine Auswahl etwa anhand eines ungebundenen Listenfeldes trifft und diese beim nächsten öffnen des Formulars wieder vorfinden möchte, hat er üblicherweise Pech. Zumindest, soweit er keine speziellen Vorbereitungen dafür trifft. Was prinzipiell für alle Steuerelemente interessant ist, veranschaulicht dieser Beitrag anhand von Text-, Kombinations- und Listenfeldern.

Die einfachste Variante, einem Steuerelement beim öffnen eines Formulars den zuletzt geöffneten Wert zuzuweisen, bietet der Einsatz einer globalen Variablen. Beim denkbar einfachsten Beispiel aus einem Formular mit einem ungebundenen Textfeld (s. Abb. 1) benötigen Sie nur eine global deklarierte Variable sowie zwei Routinen mit wenigen Zeilen.

Die globale Variable deklarieren Sie in einem neuen Standardmodul namens mdlGlobal:

Public gstrText As String

Anschließend fügen Sie dem Formular zwei Ereignisprozeduren für die Ereignisse Beim öffnen und Beim Schließen zu.

Die folgende Routine speichert beim Schließen des Formulars den aktuellen Inhalt des Textfeldes in der globalen Variablen gstrText:

Private Sub Form_Close()
    ''Beim Speichern: Schreibe den Inhalt
    ''des Textfeldes in die Variable
    gstrText = Me!txtText
End Sub

Beim öffnen des Formulars soll der Inhalt dieser Variablen – soweit vorhanden – wieder eingelesen werden. Das erledigt die zweite Ereignisprozedur:

Private Sub Form_Open(Cancel As Integer)    ''Wenn gstrText nicht leer ...
    If Not gstrText = "" Then        ''... schreibe den Text in das
        ''Textfeld
        Me!txtText = gstrText
    End If
End Sub

Bei Kombinationsfeldern ist die Sache genauso einfach.

Das folgende Beispiel aus Abb. 2 beschäftigt sich mit einem Kombinationsfeld, das die Artikel der Nordwind-Datenbank anzeigen soll und dazu über die Datensatzherkunft

SELECT Artikel.[Artikel-Nr],

Artikel.Artikelname FROM Artikel;

an diese Tabelle gebunden ist.

Damit das Kombinationsfeld nicht den im ersten Feld der Abfrage enthaltenen Primärschlüssel der Tabelle, sondern den Artikelnamen aus dem zweiten Feld anzeigt, enthalten die Eigenschaften Spaltenanzahl und Spaltenbreite die Werte 2 und 0cm.

Auch der im Kombinationsfeld angezeigte Wert kann in einer einzigen globalen Variablen gespeichert werden:

Public glngArtikelnummer As Long

Die Routine, die den aktuellen Datensatz des Kombinationsfelds in der globalen Variablen glngArtikelnummer speichern soll, sieht so aus:

Private Sub Form_Close()
    ''Wenn Kombinationsfeld nicht leer ...
    If Not IsNull(Me!cboArtikel) Then
        ''... schreibe Inhalt in Variable
        glngArtikelnummer = _            Me!cboArtikel
    End If
End Sub

Das Einlesen beim öffnen des Formulars übernimmt die folgende Routine:

Private Sub Form_Open(Cancel As Integer)
    ''Wähle den gespeicherten Wert aus
    Me!cboArtikel = glngArtikelnummer
End Sub

Falls Sie dafür sorgen wollen, dass das Kombinationsfeld beim ersten öffnen des Formulars den ersten Eintrag anzeigt, verwenden Sie die folgende Routine:

Private Sub Form_Open(Cancel As Integer)
    ''Wenn kein Wert zwischengespeichert
    ''ist ...
    If glngArtikelnummer = 0 Then
        ''... wähle den ersten Wert aus,
        Me!cboArtikel = _            Me!cboArtikel.ItemData(0)
    Else
        ''sonst den gespeicherten Wert:
        Me!cboArtikel = _            glngArtikelnummer
    End If
End Sub

Abb. 1: Ein einfaches Formular mit einem ungebundenen Textfeld

Abb. 2: Formular mit einem ungebundenen, aber mit einer Datensatzherkunft versehenen Kombinationsfeld

Diese prüft, ob die Variable den Wert 0 enthält (was bei Variablen des Datentyps Long der Standardwert ist – bei anderen Datentypen müssen Sie den Vergleich entsprechend anpassen) und stellt in diesem Fall das Kombinationsfeld auf den ersten Eintrag ein.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar