Also meine Version von @Soundex sieht folgendermaßen aus ( Wie gesagt, nichts innovatives aber trotzdem mag ich es ) :
Function Roundex (Byval searchValue As String) As String
searchValue = Ucase(searchValue)
char = Left$(searchValue, 1)
If (Asc(char) < Asc("A")) Or (Asc(char) > Asc("Z")) Then
Roundex = "00000"
Exit Function
End If
newString = char
For i = 2 To Len(searchValue)
char = Mid$(searchValue, i, 1)
Select Case char
Case "A", "E"
char2 = Mid$(searchValue, (i+1), 1)
Select Case char2
Case "I","Y"
convChar = "7"
Case Else
convChar = ""
End Select
Case "H", "I", "O", "U", "W", "Y"
convChar = ""
Case "'"
convChar = ""
Case "B", "F", "P", "V"
convChar = "1"
Case "C", "G", "J", "K", "Q", "S", "X", "Z"
convChar = "2"
Case "D", "T"
convChar = "3"
Case "L"
convChar = "4"
Case "M", "N"
convChar = "5"
Case "R"
convChar = "6"
Case Else
Exit For
End Select
If Not (Right$(newString, 1) = convChar) Then
newString = newString & convChar
End If
If (Len(newString) = 5) Then
Exit For
End If
Next
newString = Left$(newString & "00000", 5)
Roundex = newString
End Function
Naja diese Umwandlung muss nun auf den Suchbegriff angewendet werden. Und halt auf jedes zu untersuchende Feld , bzw jeden Eintrag des Indexes.
Also ich hoffe ihr könnt mir weiter helfen. Ich will langsam fertig werden. Es macht depressiv wenn man hier sitzt und man kommt nicht von der Stelle
@Tode die Funktio an sich funzt auch, wandelt schön alles um. aber eine Frage hätte ich da noch.
Ich habe ja Rondex folgendermassen defeniert :
Function Roundex (Byval searchValue As String) As String
wenn ich in einer Suche , folgendermaßen diesen Code hineinschreibe, was passiert ? :
If Roundex(Cstr(docCol.GetItemValue(searchField)(0))) = Roundex(Cstr(docSearch.GetItemValue(searchField)(0))) Then
Wird nun der searchValue 2x verglichen oder über gebe ich ihm wirklich die 2 verschiedenen Items ?
Und noch was . im moment schmeisst er mir in der Zeile einen Fehler mit der Meldung "Illegal Use function call"
If (Asc(char) < Asc("A")) Or (Asc(char) > Asc("Z")) Then
WARUM ZUM TEUFEL ?????