Last but not first (Access 97, 2000)

30.12.2003

Erster oder der letzter Datensatz?

Access stellt keine direkte Funktion zur Verfügung, um innerhalb eines Formulars festzustellen, ob momentan der erste oder der letzte Datensatz angezeigt wird.

Mit Hilfe einer geklonten Datensatzgruppe lässt sich dies jedoch leicht feststellen.

Die VBA-Funktion CheckRecord erwartet beim Aufruf eine Referenz auf ein bestimmtes Formular. Das Ergebnis ist einer der folgenden Werte:

Wert Bedeutung
0 Es wird weder der erste noch der letzte Datensatz angezeigt
-1 Es wird der erste Datensatz angezeigt
1 Es wird der letzte Datensatz angezeigt
-2 Es wird ein neuer Datensatz angezeigt

Die Funktion hat den folgenden Aufbau:

Function CheckRecord(FormObj As Form)

    Dim R As Recordset
    Dim Anzahl As Long

    If FormObj.NewRecord Then
        CheckRecord = -2
        Exit Function
    End If

    Set R = FormObj.RecordsetClone
    R.MoveLast
    Anzahl = R.RecordCount
    R.Bookmark = FormObj.Bookmark

    Select Case R.AbsolutePosition

        Case 0
            CheckRecord = -1
        Case Anzahl - 1
            CheckRecord = 1
        Case Else
            CheckRecord = 0

    End Select

End Function

Zunächst wird mittels der NewRecord-Eigenschaft überprüft, ob ein neuer Datensatz aktiv ist. Wenn dies nicht der Fall ist, wird mit Hilfe der RecordsetClone-Eigenschaft eine Datensatzgruppe erzeugt, die exakt die gleichen Datensätze enthält, die auch dem Formular zugrunde liegen.

Nach Ermittlung der Anzahl der Datensätze wird durch Austausch von Lesezeichen (Bookmark-Eigenschaft) innerhalb der Datensatzgruppe der gleiche Datensatz wie im Formular aktiviert. Die Überprüfung, welcher Datensatz aktiv ist, erfolgt schließlich mit Hilfe der AbsolutePosition-Eigenschaft, die die Nummer des aktuellen Datensatzes enthält.
Wenn beispielsweise der erste Datensatz aktiv ist, besitzt die Eigenschaft den Wert 0; beim letzten Datensatz den Wert Anzahl -1.

Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.