Domino 9 und frühere Versionen > ND6: Entwicklung
Problem
m3:
Ah, OK. Zum Ausprobieren hatte ich jetzt keine Zeit. Aber ich glaubs Dir mal. ;)
Ich fürchte nur, das wird dem Fahrradlbua nicht helfen, da er a) vermutlich eine GUI-Lösung bauen will/muss und b) SEINE Soundex-Funktion nicht als @-Formel zur Verfügung steht.
bikerboy:
@m3
der Fahrradlbua ist wieder da! (Was auch immer das heissen soll)
Natürlich steht meine Soundex-Variante nicht als @Function zur Verfügung. ich kann ja schlecht bei lotus nOtes anrufen und sagen hier hab was neues , bitte nennt es @Roundex ..... also brauche ich Script.
tks:
Fahrradlbua = Fahrrad-Junge = bikerboy
bikerboy:
Also meine Version von @Soundex sieht folgendermaßen aus ( Wie gesagt, nichts innovatives aber trotzdem mag ich es ) :
--- Code: ---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
--- Ende Code ---
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:
also Deine Funktion lässt sich in einer Zeile Formel- Sprache zusammenfassen... und damit in ein DB.Search einbauen. Zugegeben: Die Formel wird etwas "unförmig", aber funktionieren sollte es trotzdem:
Hier erst mal die Formel, wie sie generell aussehen müsste:
searchVal := "ABC";
list := @Explode( "AI|7~AY|7~EI|7~EY|7~A|~E|~H|~I|~O|~U|~W|~Y|~'|~B|1~F|1~P|1~V|1~C|2~G|2~J|2~K|2~Q|2~S|2~X|2~Z|2~D|3~T|3~L|4~M|5~N|5~R|6" ; "~" );
validList := @Explode( "1~2~3~4~5~6~7" ; "~" );
repList2 := validList + validList;
repList3 := repList2 + validList;
repList4 := repList3 + validList;
inter1 := @ReplaceSubstring( searchVal ; @Word( list ; "|" ; 1 ) ; @Word( list ; "|" ; 2 ) );
inter2 := @Explode( inter1 ; validList );
inter3 := @ReplaceSubstring( inter1 ; inter2 ; "~" );
inter4 := @Left( inter3 ; "~" );
inter5 := @ReplaceSubstring( inter4 ; repList4 : repList3 : repList2 ; validList : validList : validList );
inter6 := @Left( inter5 + "00000" ; 5 );
inter6
Jetzt muss man das nur noch "zusammenfassen" in einer Zeile, dann kann man das über db.Search( ... ) in jedes Script einbauen.
Das zusammenfassen kann ich grade nicht machen, muss los, aber zumindest hast Du jetzt mal einen Ansatzpunkt...
Gruß
Tode
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln