Ms access MS Access 2003使用SoundEx从表单中搜索
在按姓氏搜索时,我需要在数据库中搜索“模糊匹配”。我已经实现了下面的函数来启用SoundEx函数,它没有任何问题 在构建SQL以通过数据库动态调用SoundEx函数进行搜索时,我遇到了一些问题。我知道VBA函数可以在SQL语句中调用,但它似乎工作不正常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
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字段,而且效果很好。是的,这是我正在使用的同一个函数,忘了提到这一点,但是效果很好,谢谢。是的,这是我正在使用的同一个函数,忘了提到这一点,但是效果很好,谢谢。