MS Access 2003 Verwenden von SoundEx, um aus einem Formular aus zu suchen
-
26-10-2019 - |
Frage
Ich muss eine Suche nach "Fuzzy -Übereinstimmungen" in einer Datenbank bei der Suche nach Familienname suchen. Ich habe die folgende Funktion implementiert, um eine SoundEx -Funktion zu aktivieren, die keine Probleme hat.
Ich erhalte Probleme, wenn es darum geht, die SQL zu erstellen, um die Datenbank zu durchsuchen, die die SoundEx -Funktion im laufenden Flug aufruft. Ich weiß, dass VBA -Funktionen in SQL -Anweisungen aufgerufen werden können, aber es scheint nicht richtig zu funktionieren.
Private Sub cmdSearch_Click()
Dim LSQL As String
Dim LSearchString As String
If Len(txtSearchString) = 0 Or IsNull(txtSearchString) = True Then
MsgBox "You must enter a search string."
Else
LSearchString = txtSearchString
LSQL = "SELECT * FROM TVictim "
LSQL = LSQL & "WHERE Soundex([Victim Surname]) = " & Soundex(LSearchString) & ";"
frmVictim.Form.RecordSource = LSQL
lblTitle.Caption = "Matching Victim Details: Filtered by '" & LSearchString & "'"
txtSearchString = ""
MsgBox "Results have been filtered. All Victim Names containing " & LSearchString & "."
End If End Sub
Wenn ich eine Zeichenfolge im Formular eingehe und auf die Schaltfläche klicke, bin ich durchgesetzt und an dem Punkt, an dem sie den SQL erstellt, wirft es ein Befehlsfenster mit der SoundEx -Ausgabe des Textes im Suchfeld und einem anderen Feld für Daten aus Eintrag.
Ich habe schon eine Weile damit herumgespielt und kann kein Beispiel finden, das hilft.
Lösung
Ich verwende Allen Brownes SoundEx -Funktion mit Access 2003: Soundex - Fuzzy -Matches
Es gibt den SoundEx -Wert als Zeichenfolge zurück. Wenn die von Ihnen verwendete SoundEx -Funktion auch eine Zeichenfolge zurückgibt, schließen Sie bei SoundEx (LSEARCHSTRING) Mit Anführungszeichen erkennt die Datenbank -Engine sie als Zeichenfolgewert anstelle des Namens eines fehlenden Parameters.
LSQL = LSQL & "WHERE Soundex([Victim Surname]) = '" & Soundex(LSearchString) & "';"