Im Beitrag Schnellsuche mit Klasse (www.access-im-unternehmen.de/784) haben wir die grundlegende Technik zur Schnellsuche und eine Klasse vorgestellt, mit der sich diese Technik mit wenigen Zeilen in Formulare integrieren lässt. Diese Technik hatte allerdings einen Haken: Sie erlaubt nicht die Eingabe von Leerzeichen am Beginn oder Ende des Suchbegriffs. Dies rüsten wir mit diesem Beitrag nach.
Die grundlegende Technik der Schnellsuche basiert darauf, den Filter für das entsprechende Unterformular oder Listenfeld nach jeder änderung des Suchbegriffs, also nach der Eingabe eines jeden Zeichens, zu erneuern. Dies brachte den Nachteil mit sich, dass auch das Textfeld zur Eingabe des Suchausdrucks aktualisiert wurde. Access hat aber die Angewohnheit, folgende Leerzeichen beim Aktualisieren von Textfeldern zu löschen – das ist ungünstig, wenn man einen Ausdruck wie Aniseed Syrup eingeben möchte: Nach Eingabe des Leerzeichens wird dieses gelöscht und die weitere Eingabe führt zu einem Suchbegriff wie AniseedSyrup. Darunter findet Access dann natürlich keinen passenden Eintrag, was beim Benutzer zunächst für Verwirrung sorgen dürfte. Es gibt einen Workaround, bei dem man erst die Begriffe eingibt und dann das Leerzeichen zwischen den einzelnen Elementen hinzufügt. Das ist aber auch maximal für im Eigengebrauch befindliche Datenbanken empfehlenswert; andere Benutzer dürften kaum auf diesen Trick kommen geschweige denn mit dieser nicht gerade ergonomischen Lösung zufrieden sein.
Abhilfe schafft das Anpassen der Ereignisprozedur Bei änderung (s. Bild 1.
Listing 1: Suchfunktion anpassen
Private Sub txtSuche_Change()
Dim strFilter As String
Dim intStart As Integer
Dim strSearch As String
strSearch = Me!txtSuche.Text
intStart = Me!txtSuche.SelStart
If Not Len(Me!txtSuche.Text) = 0 Then
strFilter = "Artikelname LIKE ''" & Me!txtSuche.Text & "*''"
Me.Filter = strFilter
Me.FilterOn = True
Me!txtSuche.SelStart = intStart
Else
Me.Filter = ""
Me.FilterOn = False
Me!txtSuche.SetFocus
End If
If Right(strSearch, 1) = Chr(32) Then
Me!txtSuche = strSearch
Me!txtSuche.SelStart = intStart
End If
End Sub

Bild 1: Eingabe von Leerzeichen im Suchbegriff
Klasse anpassen
Nur für Abonnenten
Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.
Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.
So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.
Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.
Bereits Abonnent? Hier einloggen
Kostenlos & unverbindlich
Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?
Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?
In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.
Jetzt kostenloses Access-Audit anfordern →