MS Access 2003 Использование SoundEx для поиска из формы - PullRequest
1 голос
/ 29 апреля 2011

Мне нужно получить поиск для поиска «нечетких совпадений» в базе данных при поиске по фамилии.Я включил следующую функцию, чтобы включить функцию 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 текста в окне поиска и другим полем для ввода данных.

Некоторое время возился с этим и могу 'Кажется, не найти пример, который помогает.

1 Ответ

1 голос
/ 29 апреля 2011

Я использую функцию Аллена Брауна Soundex с Access 2003: Soundex - Нечеткие совпадения

Возвращает значение Soundex в виде строки.Если используемая функция Soundex также возвращает строку, заключите Soundex (LSearchString) в кавычки, чтобы ядро ​​базы данных распознало его как строковое значение вместо имени отсутствующего параметра.

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