Access Anfänger: Datensatz suchen oder Datensätze filtern im Endlosformular

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Um nach bestimmten Werten in einem Endlosformular zu suchen, gibt es zwei Vorgehensweisen:

  • Die Suche nach einem Datensatz, oder
  • die Filterung des Formulars nach den gewünschten Kriterien.

Der Suchbegriff wird dabei vorzugsweise in ein ungebundenes Textfeld eingegeben,
und der Code für die Suche bzw. Filterung z.B. über eine Schaltfläche ausgelöst.

Datensatz suchen (1)

mit der FindRecord-Methode des DoCmd-Objekts

Beispiel:
Suche nach "Mustermann" im Feld "Nachname":

   Me.Nachname.SetFocus
   DoCmd.FindRecord "Mustermann"
 
   'alternativ: mit Platzhaltern suchen (alle Nachnamen, die 'Muster' enthalten)
   Me.Nachname.SetFocus
   DoCmd.FindRecord "Muster", acAnywhere
Wiki hinweis.png

Hinweise:

Zu weiteren Parametern siehe die Access-Hilfe zur DoCmd.FindRecord-Methode.
  • Wenn der erste Suchbegriff gefunden wird, wird er markiert.
  • Wenn der Suchbegriff nicht gefunden wird, bleibt der Cursor auf dem aktuellen Datensatz stehen.
Die FindRecord-Methode bringt daher keine direkte Rückmeldung, ob der Suchbegriff gefunden wurde oder nicht.


Datensatz suchen (2)

Beispiel: Suche nach "Mustermann" im Feld "Nachname":

1. mit der FindFirst-Methode des Recordset-Objekts

   With Me.Recordset
 
      .FindFirst "Nachname = 'Mustermann'"
 
      ' alternativ mit Platzhaltern suchen
      ' .FindFirst "Nachname Like 'Muster*'"
 
      ' wenn der Suchbegriff nicht gefunden wird
      If .NoMatch Then
         MsgBox "Suchbegriff nicht gefunden."
 
      ' ansonsten Fokus auf den Nachnamen setzen
      Else
         Me.Nachname.SetFocus
      End If
 
   End With

Kurzschreibweise:
Nur Suche, ohne NoMatch-Auswertung und ohne den Fokus auf ein spezielles Feld zu setzen:

   Me.Recordset.FindFirst "Nachname = 'Mustermann'"


2. mit der FindFirst-Methode des RecordsetClone-Objekts

   With Me.RecordsetClone
 
      .FindFirst "Nachname = 'Mustermann'"
 
      ' alternativ mit Platzhaltern suchen
      ' rs.FindFirst "Nachname Like 'Muster*'"
 
      ' wenn der Suchbegriff nicht gefunden wird
      If .NoMatch Then
         MsgBox "Suchbegriff nicht gefunden."
 
      ' ansonsten Fokus auf den Nachnamen setzen
      Else
         Me.Bookmark = .Bookmark
         Me.Nachname.SetFocus
      End If
 
   End With
Wiki hinweis.png

Hinweis:

Wenn der erste Suchbegriff gefunden wird, wird er markiert.
Wenn der Suchbegriff nicht gefunden wird, kann eine Meldung ausgegeben werden.


Datensätze filtern

Beispiel:
Das Feld "Nachname" nach "Mustermann" filtern:

   Me.Filter = "Nachname = 'Mustermann'"
 
   'alternativ mit Platzhaltern filtern
   'Me.Filter = "Nachname Like 'Muster*'"
 
   'Filter aktivieren 
   Me.FilterOn = True

Filter wieder herausnehmen und alle Datensätze anzeigen:

   Me.FilterOn = False
Wiki hinweis.png

Hinweis:

Im Gegensatz zum "Datensatz suchen", bei dem immer nur maximal ein übereinstimmender Datensatz gefunden wird, werden bei der Filterung alle Datensätze angezeigt, die mit dem Suchkriterium übereinstimmen.


Wikilinks