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 5/2006.

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, 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

Steuerelemente mit Gedächtnis

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.

Globales Gedächtnis

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

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.