Access durchsucht mehrere Felder

Ich habe eine Access-Datenbank mit einem Adreßformular, das die Eingabefelder Straße und Postleitzahl enthält. Wenn ich eine Straße oder Postleitzahl eingebe, soll Access beim Anklicken der Schaltfläche Suchen die gefundenen Datensätze anzeigen. Wie erreiche ich, daß Access mehrere Felder durchsucht?

Die Lösung für die gewünschte Suchfunktion erreichen Sie in zwei Schritten: Zunächst brauchen Sie eine SQL-Abfrage, die Ihre Access-Datenbank nach Straßen oder Postleitzahlen durchsucht. Im zweiten Schritt bringen Sie Access dazu, die gefundenen Daten im Formular anzuzeigen.
Wonach Access suchen soll, definieren Sie in der WHERE-Klausel des SQL-Befehls. Im folgenden Beispiel sucht Access im Postleitzahlengebiet 96 nach allen Straßen, die mit Hauptstr beginnen:

SELECT * FROM Adressen WHERE Plz LIKE ô96*ô AND Strasse LIKE ôHauptstr*ô
Wenn Sie mehrere Felder Ihrer Datenbank durchsuchen wollen, können Sie in der WHERE-Klausel mehrere Suchkriterien mit dem AND-Operator verbinden. Im obigen Beispiel findet Access nur Adressen, deren Postleitzahl mit 96 beginnt und deren Straße mit Hauptstr anfängt. Das Sternchen im Suchbegriff ist ein Platzhalter, der dafür sorgt, daß Access nur nach den Anfangsbuchstaben sucht. Daher findet die Abfrage sowohl die Hauptstraße als auch die abweichende Schreibweise Hauptstrasse.
Nachdem Sie den SQL-Befehl definiert haben, stellt sich die Frage, wie die von Access gefundenen Adressen ins Formular gelangen. Die einfachste Lösung für dieses Problem ist die RecordSource-Eigenschaft des Formulars. Die RecordSource-Eigenschaft bestimmt, welche Daten die Steuerelemente des Formulars anzeigen. Sie können an dieser Stelle entweder den Namen einer Tabelle auswählen, um alle Daten der Tabelle anzuzeigen, oder einen SQL-Befehl eingeben. Der SQL-Befehl hat den Vorteil, daß Sie eine WHERE-Klausel mit beliebigen Bedingungen für die Suchfunktion definieren können.
Das im Kasten äVBA-String...ô abgedruckte VBA-Programm (WIN-CODE: ABFRAGE) ist das Ereignis Beim Klicken des Buttons Übernehmen. Das Programm generiert einen SQL-Befehl, der entweder nach einer Straße, einer Postleitzahl oder nach beidem sucht. Da der SQL-Befehl als RecordSource-Eigenschaft des Formulars gespeichert wird, zeigt Access in diesem Formular nur das Ergebnis der Abfrage an.
Beachten Sie, daß ein VBA-String direkt nebeneinanderstehende Anführungszeichen nicht akzeptiert. Deshalb werden diese Anführungszeichen durch die Funktion Chr(34) ersetzt. Außerdem darf in der WHERE-Klausel kein leeres Suchwort vorkommen, weil Access sonst keine Daten findet. Aus diesem Grund unterscheidet die If-ElseIf-Konstruktion die Suche nach einer Postleitzahl, einer Straße und nach beiden Kriterien.
VBA-String zum Durchsuchen mehrerer Felder in Access
Private Sub Schaltfläche_Click ()
If (StrasseSuche.Value <> ô ô) And (PlzSuche.Value <> ô ô) Then
Me.RecordSource = ôselect Adressen.* from Adressen where Adressen.Strasse likeô _
& Chr (34) & StrasseSuche.Value & ô*ô & Chr (34) & _
ôand Adressen.Plz likeô & Chr (34) & PlzSuche.Value & ô*ô & Chr (34) & ô;ô
ElseIf StrasseSuche.Value <> ô ô Then
Me.RecordSource = ôselect Adressen.* from Adressen where Adressen.Strasse likeô _
& Chr (34) & StrasseSuche.Value & ô*ô & Chr (34) & ô;ô
ElseIf PlzSuche.Value <> ô ô Then
Me.RecordSource = ôselect Adressen.* from Adressen where Adressen.Plz likeô _
& Chr (34) & PlzSuche.Value & ô*ô & Chr (34) & ô;ô
Else
Me.RecordSource = äôselect Adressen.* from Adressen;ô
End If
WIN-CODE: ABFRAGE