VBA Tipp: Im Formular feststellen, ob erster/letzter Datensatz erreicht ist

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem

Ich möchte mit VBA prüfen, ob in einem Formular der erste bzw. letzte Datensatz erreicht wurde. Falls ja, soll eine MessageBox erscheinen.

Lösung

Die folgender Ereignisprozedur für das BeimAnzeigen/OnCurrent-Ereignis gibt jeweils eine MessageBox aus, wenn das Ende oder der Anfang der Datenquelle des Formulars erreicht ist:

Private Sub Form_Current()
Dim RS As DAO.Recordset
  If Not Me.NewRecord Then
    Set RS = Me.RecordsetClone
    RS.Bookmark = Me.Bookmark
    If RS.AbsolutePosition = 0 Then
      MsgBox "Am Anfang"
    ElseIf RS.AbsolutePosition = RS.RecordCount - 1 Then
      MsgBox "Am Ende"
    End If
    RS.Close
  End If
End Sub

Alternativ kann man natürlich auch ein Formularfeld zur Anzeige verwenden:

Private Sub Form_Current()
Dim RS As DAO.Recordset
  Me!MeinFeld = ""
  If Not Me.NewRecord Then
    Set RS = Me.RecordsetClone
    RS.Bookmark = Me.Bookmark
    If RS.AbsolutePosition = 0 Then
      Me!MeinFeld = "Am Anfang"
    ElseIf RS.AbsolutePosition = RS.RecordCount - 1 Then
      Me!MeinFeld = "Am Ende"
    End If
    RS.Close
  Else
    Me!MeinFeld = "*Neu*"
  End If
End Sub

Siehe auch

  • Beispieldatenbank NaviButtons (selbst erstellte Navigationsschaltflächen)