Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Daten / Datenbank / LikeString

Gro▀-/Kleinschreibung ignorieren

Soll eine Datenbank-Tabelle alphanumerisch durchsucht werden, so stellt sich manchmal das Problem, dass Groß- und Kleinschreibung nicht als gleich angesehen wird. (Access bildet da wieder mal eine unrühmliche Ausnahme.) So liefert eine "echte" SQL-Datenbank für das SQL-Statement
SQL = "select Vorname,Nachname from tPerson " & _
      "where Nachname like 'sch%'"
Set rs = db.OpenRecordset(SQL)
im Allgemeinen alle Personen zurück, deren Nachname genau mit "sch" beginnen, jedoch nicht "Schmidt", "SCHMIDT" oder "ScHmIdT".

Mit der Funktion LikeString ist es möglich, für Like ein Pattern zu generieren, welches alle Treffer zurückliefert. Dazu werden alle Buchstaben durch einen alternativ-Ausdruck nach folgendem Schema ersetzt: "a" oder "A" wird zu "[aA]". Ganz nebenbei verdoppelt die Funktion auch noch alle Vorkommen des einfachen Hochkommatas und fügt vorne und hinten jeweils das begrenzende Hochkomma an. Daher gibt LikeString("Jost's Tipp #127") als Ergebnis den String '[jJ][oO][sS][tT]''[sS] [tT][iI][pP][pP] #127' zurück.

Hier nun die Funktion:
Function LikeString(ByVal Text As String) As String
  Dim i As Long
  Dim Char As String
  
  For i = 1 To Len(Text)
    Char = LCase$(Mid$(Text, i, 1))
    Select Case Char
    Case "a" To "z", "ä", "ö", "ü"
      Char = "[" & Char & UCase$(Char) & "]"
    Case "'"
      Char = "''"
    End Select
    LikeString = LikeString & Char
  Next i
  LikeString = "'" & LikeString & "'"
End Function
Das obige Beispiel würde man also so kodieren, um unabhängig von der Groß-/Kleinschreibung zu suchen:
SQL = "select Vorname,Nachname from tPerson " & _
      "where Nachname like " & LikeString("sch%")
Set rs = db.OpenRecordset(SQL)

© Jost Schwider, 17.07.2000-17.07.2000 - http://vb-tec.de/likestri.htm