Last but not first (Access 97, 2000)

Veröffentlicht am 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:

WertBedeutung
0Es wird weder der erste noch der letzte Datensatz angezeigt
-1Es wird der erste Datensatz angezeigt
1Es wird der letzte Datensatz angezeigt
-2Es 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.

Unsere 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.

JETZT KONTAKTIEREN

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.

JETZT KONTAKTIEREN