Ms access MS Access 2003使用SoundEx从表单中搜索

Ms access MS Access 2003使用SoundEx从表单中搜索,ms-access,vba,ms-access-2003,soundex,Ms Access,Vba,Ms Access 2003,Soundex,在按姓氏搜索时,我需要在数据库中搜索“模糊匹配”。我已经实现了下面的函数来启用SoundEx函数,它没有任何问题 在构建SQL以通过数据库动态调用SoundEx函数进行搜索时,我遇到了一些问题。我知道VBA函数可以在SQL语句中调用,但它似乎工作不正常 Private Sub cmdSearch_Click() Dim LSQL As String Dim LSearchString As String If Len(txtSearchString) = 0 Or IsNull(txtSe

在按姓氏搜索时,我需要在数据库中搜索“模糊匹配”。我已经实现了下面的函数来启用SoundEx函数,它没有任何问题

在构建SQL以通过数据库动态调用SoundEx函数进行搜索时,我遇到了一些问题。我知道VBA函数可以在SQL语句中调用,但它似乎工作不正常

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
当我在表单上输入一个字符串并单击按钮时,我已经完成了,在它构建SQL时,它会弹出一个命令窗口,其中搜索框中有文本的SoundEx输出,另一个用于数据输入的框


我已经在这方面做了一段时间,似乎找不到一个有帮助的例子

我在Access 2003中使用Allen Browne的Soundex功能:

它以字符串形式返回Soundex值。如果您正在使用的Soundex函数也返回字符串,请用引号括住Soundex(LSearchString),以便数据库引擎将其识别为字符串值,而不是缺少的参数的名称

LSQL = LSQL & "WHERE Soundex([Victim Surname]) = '" & Soundex(LSearchString) & "';"

我在Access 2003中使用Allen Browne的Soundex功能:

它以字符串形式返回Soundex值。如果您正在使用的Soundex函数也返回字符串,请用引号括住Soundex(LSearchString),以便数据库引擎将其识别为字符串值,而不是缺少的参数的名称

LSQL = LSQL & "WHERE Soundex([Victim Surname]) = '" & Soundex(LSearchString) & "';"

就性能而言,将Soundex值存储在数据表中是一个好主意,因为这样可以对它们进行索引,从而大大加快了使用它们的搜索速度。还要注意,garden variety Soundex()是一个非常模糊的匹配,只适用于某些语言中的名称。你可能想看看Soundex2。对于需要模糊匹配的大型数据表,我的名字和姓氏都有Soundex和Soundex2字段,而且效果非常好。从性能角度看,最好将Soundex值存储在数据表中,因为这样可以对它们进行索引,从而大大加快使用它们的搜索速度。还要注意,garden variety Soundex()是一个非常模糊的匹配,只适用于某些语言中的名称。你可能想看看Soundex2。对于需要模糊匹配的大型数据表,我的名字和姓氏都有Soundex和Soundex2字段,而且效果很好。是的,这是我正在使用的同一个函数,忘了提到这一点,但是效果很好,谢谢。是的,这是我正在使用的同一个函数,忘了提到这一点,但是效果很好,谢谢。