2011-04-29 8 views
1

성으로 검색 할 때 데이터베이스에서 "퍼지 일치"를 검색하려면 검색해야합니다. 다음과 같은 함수를 구현하여 아무런 문제가없는 SoundEx 함수를 활성화했습니다.MS Access 2003 SoundEx를 사용하여 양식에서 검색

비행 중에 SoundEx 함수를 호출하는 데이터베이스를 검색하기 위해 SQL을 작성할 때 문제가 발생합니다. 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 출력을 명령 창을 던졌습니다 상자 및 데이터 입력을위한 또 다른 상자가 있습니다.

잠시 동안 만만찮은 시도가 있었고 도움이되는 예제를 찾을 수없는 것 같습니다.

+0

성능 현명한, 그 다음 그들이 색인을 생성 할 수 있으며, 따라서 당신이 대폭를 사용하여 검색 속도 때문에, 데이터 테이블의 Soundex와 값을 저장하는 것이 좋습니다. 또한 정원 종류 Soundex()는 매우 모호하며 특정 언어의 이름에만 적용됩니다. Soundex2를 조사하고 싶을 수도 있습니다. 퍼지 (fuzzy) 일치가 필요한 대용량 데이터 테이블의 경우 이름과성에 대해 Soundex 및 Soundex2 필드가 있으며 매우 잘 작동합니다. –

답변

1

나는 액세스 2003 앨런 브라운의 Soundex와 기능을 사용하고 있습니다 : Soundex - Fuzzy matches

그것은 문자열로 Soundex와 값을 반환합니다. 사용중인 Soundex 함수도 문자열을 반환하는 경우 Soundex (LSearchString)을 따옴표로 묶으십시오. 따라서 데이터베이스 엔진은이 매개 변수를 누락 된 매개 변수의 이름 대신 문자열 값으로 인식합니다.

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

그래, 내가 사용하고있는 똑같은 기능, 그 말을 잊어 버렸어, 완벽하게 작동하지만, 고마워. – Daniel