{"id":55000310,"date":"2005-12-01T00:00:00","date_gmt":"2024-06-20T10:23:15","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=310"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Suchfunktion_mit_phonetischem_Vergleich","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/","title":{"rendered":"Suchfunktion mit phonetischem Vergleich"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/7ce3d9d0f8c6448fbe84a60e11185212\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Erfahren Sie, wie Sie den Soundex-Algorithmus zum Suchen &auml;hnlich lautender Namen verwenden.<\/p>\n<h3>Techniken<\/h3>\n<p>VBA<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Access 97 und h&ouml;her<\/p>\n<h3>Beispieldateien<\/h3>\n<p><a href=''''fileadmin\/files\/acc0605kh04.zip''''>Soundex97.mdb, Soundex00.mdb<\/a><\/p>\n<h3><\/h3>\n<p><b>Martin Hoffmann, D&uuml;sseldorf; Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Eine oft ben&ouml;tigte Funktion in einer Datenbank ist das Suchen nach bestimmten Daten. Dies l&auml;sst sich mit ein wenig Flei&szlig;arbeit leicht realisieren. Interessant wird es, wenn Sie die Suche mit zus&auml;tzlichem Komfort ausstatten m&ouml;chten &#8211; etwa, indem Sie der Suchfunktion zus&auml;tzlich die M&ouml;glichkeit zum Suchen nach &auml;hnlich klingenden Begriffen hinzuf&uuml;gen. Wie man das programmieren soll? Nun, das ist gar nicht schwer. Mit dem so genannten Soundex-Algorithmus erzeugen Sie aus W&ouml;rtern einen bestimmten Code, der nicht nur im Englischen, sondern auch im Deutschen verbl&uuml;ffend gute Ergebnisse liefert.<\/b><\/p>\n<p>Knackpunkt der nachfolgend vorgestellten Suchfunktion ist der Soundex-Algorithmus, der aus einem Namen einen Code aus einem Buchstaben und drei Zahlen erzeugt. Der Algorithmus arbeitet nach den folgenden Regeln:<\/p>\n<li>Das erste Zeichen ist der Anfangsbuchstabe des Begriffs.<\/li>\n<li>Doppelte Buchstaben werden als einzelner Buchstabe betrachtet.<\/li>\n<li>Die Vokale a, e, i, o und u und Umlaute werden genau wie y, w und h nicht beachtet, das scharfe s (&szlig;) wird wie ein normales s behandelt.<\/li>\n<li>Alle anderen Buchstaben werden in die in Tab. 1 angegebenen Zahlencodes umgewandelt, wobei bei zwei aufeinander folgenden Buchstaben mit gleichem Code der zweite verworfen wird.<\/li>\n<li>Das Codieren erfolgt von links nach rechts. Sind vier Zeichen inklusive dem ersten Buchstaben erreicht, spielen die folgenden Buchstaben keine Rolle mehr. Reichen die relevanten Buchstaben hingegen nicht f&uuml;r einen Code von vier Zeichen aus, werden die restlichen Stellen mit der Ziffer 0 aufgef&uuml;llt.<\/li>\n<table border=1>\n<tr>\n<td>\n<p><b>Buchstabe<\/b><\/p>\n<\/td>\n<td>\n<p><b>Soundex-Code<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>B, F, P, V<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>C, G, J, K, Q, S, X, Z<\/p>\n<\/td>\n<td>\n<p>2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>D, T<\/p>\n<\/td>\n<td>\n<p>3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>L<\/p>\n<\/td>\n<td>\n<p>4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>M, N<\/p>\n<\/td>\n<td>\n<p>5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>R<\/p>\n<\/td>\n<td>\n<p>6<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Buchstaben und die entsprechenden Soundex-Codes<\/b><\/p>\n<p><b>Quellcode 1: Diese Funktion liefert den Soundex-Wert f&uuml;r eine Zeichenkette.<\/b><\/p>\n<pre>Public Function Soundex(sfName As String) As String\r\n  On Error GoTo Soundex_err\r\n  ''''(c) mdb Solution 1998 (Dirk Bauer)\r\n  Dim sfSoundex(3) As String\r\n  Dim sfZeichen(2) As String, sfZeichenCode(2) As String, _    sfNameNeu As String\r\n  Dim iAnzZeichen As Integer, i As Integer\r\n  Dim iPos As Integer, iZ&auml;hler As Integer\r\n  ''''Zeichenkette in Gro&szlig;buchstaben umwandeln\r\n  ''''und Blanks entfernen\r\n  sfName = Trim(UCase(sfName))\r\n  ''''Umlaute und Sonderzeichen ersetzen\r\n  iPos = 1\r\n  sfNameNeu = \"\"\r\n  For i = 1 To Len(sfName)\r\n    sfZeichen(0) = Mid(sfName, iPos, 1)\r\n    Select Case Asc(sfZeichen(0))\r\n        Case 192, 193, 194, 195, 196, 197, 198:   ''''&auml;, &Aacute;...\r\n        sfNameNeu = sfNameNeu & \"AE\"\r\n        Case 210, 211, 212, 213, 214, 216:        ''''&ouml;...\r\n        sfNameNeu = sfNameNeu & \"OE\"\r\n        Case 217, 218, 219, 220:                  ''''&uuml;...\r\n        sfNameNeu = sfNameNeu & \"UE\"\r\n        Case 223:                                 ''''&szlig;\r\n        sfNameNeu = sfNameNeu & \"SS\"\r\n        Case Is &lt; 65:                             ''''Sonderzeichen \r\n        sfNameNeu = sfNameNeu\r\n        Case Else: ''''Zeichen ohne &auml;nderung &uuml;bernehmen\r\n        sfNameNeu = sfNameNeu & sfZeichen(0)   \r\n    End Select\r\n    iPos = iPos + 1\r\n  Next i\r\n  sfName = sfNameNeu\r\n  ''''Doppelte Zeichen entfernen\r\n  iPos = 1\r\n  sfNameNeu = \"\"\r\n  For i = 1 To Len(sfName)\r\n    sfZeichen(1) = Mid(sfName, iPos, 1)\r\n    sfZeichen(2) = Mid(sfName, iPos + 1, 1)\r\n    If sfZeichen(1) &lt;&gt; sfZeichen(2) Then\r\n       '''' Zeichen 2 ist NICHT doppelt, also schreiben...\r\n       sfNameNeu = sfNameNeu & sfZeichen(1)\r\n    End If\r\n    iPos = iPos + 1\r\n  Next i\r\n  sfName = sfNameNeu\r\n  ''''Benachbarte Zeichen auf identischen Zifferncode pr&uuml;fen\r\n  iPos = 1\r\n  sfNameNeu = \"\"\r\n  For i = 1 To Len(sfName)\r\n    sfZeichen(1) = Mid(sfName, iPos, 1)\r\n    sfZeichen(2) = Mid(sfName, iPos + 1, 1)\r\n    ''''Code-Ziffer der beiden Zeichen ermitteln\r\n    sfZeichenCode(1) = Soundex_CodeZiffer(sfZeichen(1))\r\n    If sfZeichenCode(1) &lt;&gt; \"KeinCode\" And i &lt;&gt; Len(sfName)\r\n      ''''1. Zeichen hat einen Code, also 2. Zeichen pr&uuml;fen\r\n      sfZeichenCode(2) = Soundex_CodeZiffer(sfZeichen(2))<\/pre>\n<p>Beispiel: Bei der Suche nach dem Nachnamen &#8222;Meier&#8220; gibt Access in der Regel nur die Personen aus, bei denen die Schreibweise des Namens exakt identisch ist. Mit der Soundex-Suche werden auch Namen wie Mayer, Maier oder Meyer zur&uuml;ckgeliefert, da diese den gleichen Code haben.<\/p>\n<p>Der Code f&uuml;r alle Varianten lautet M600 &#8211; M ist der erste Buchstabe, a, y, i und e fallen aus der Wertung, also bleibt nur noch das r, das dem Zahlenwert 6 entspricht. Da keine weiteren Buchstaben vorhanden sind, wird der Code mit zwei Nullen aufgef&uuml;llt.<\/p>\n<h3>Kein Preis ohne Flei&szlig; &#8230;<\/h3>\n<p>Nat&uuml;rlich ist daf&uuml;r auch ein wesentlich h&ouml;herer Aufwand erforderlich. Die Inhalte der zu durchsuchenden Felder sollten im Vorfeld codiert und in Form des Soundex-Codes in zus&auml;tzlichen Feldern gespeichert werden. Man k&ouml;nnte dies auch zur Laufzeit erledigen, aber das w&uuml;rde der Performance sicher nicht gut tun. <\/p>\n<p>Um nach einem Begriff zu suchen, codiert man diesen ebenfalls und vergleicht das Ergebnis mit dem Inhalt des speziell vorbereiteten Feldes. Wie das genau funktioniert, k&ouml;nnen Sie den folgenden Kapiteln entnehmen.<\/p>\n<p>Als Beispiel f&uuml;r die Suche mit und ohne Soundex dient eine einfache Adressverwaltung.<\/p>\n<p><b>Quellcode 1: Diese Funktion liefert den Soundex-Wert f&uuml;r eine Zeichenkette (Fortsetzung)<\/b><\/p>\n<pre>      If sfZeichenCode(1) &lt;&gt; sfZeichenCode(2) Then\r\n        ''''Zeichen 2 wird NICHT mit der gleichen Codeziffer \r\n        ''''bewertet , also schreiben...\r\n        sfNameNeu = sfNameNeu & sfZeichen(1)\r\n        iPos = iPos + 1\r\n      Else\r\n       ''''Zeichen 2 wird mit der gleichen Codeziffer be-\r\n       ''''wertet, also schreiben und Zeichen 2 &uuml;berspringen...\r\n        sfNameNeu = sfNameNeu & sfZeichen(1)\r\n        iPos = iPos + 2\r\n        i = i + 1\r\n      End If\r\n    Else\r\n      ''''1. Zeichen hat keinen Code, also schreiben...\r\n      sfNameNeu = sfNameNeu & sfZeichen(1)\r\n      iPos = iPos + 1\r\n    End If\r\n  Next i\r\n  ''''Nun den Soundex-Code zuordnen\r\n  ''''1. Zeichen des Soundex setzen und vom restlichen String \r\n  ''''abschneiden\r\n  sfSoundex(0) = Left(sfNameNeu, 1)\r\n  sfNameNeu = Right(sfNameNeu, (Len(sfNameNeu) - 1))\r\n  iPos = 1\r\n  iZ&auml;hler = 1\r\n  For i = 1 To Len(sfNameNeu)\r\n    ''''Code-Ziffer des Zeichen ermitteln\r\n    sfZeichenCode(0) = _      Soundex_CodeZiffer(Mid(sfNameNeu, iPos, 1))\r\n    If sfZeichenCode(0) &lt;&gt; \"KeinCode\" Then\r\n      '''' Zeichen bekommt Code-Ziffer, also schreiben\r\n      sfSoundex(iZ&auml;hler) = sfZeichenCode(0)\r\n      iZ&auml;hler = iZ&auml;hler + 1\r\n    End If\r\n    If iZ&auml;hler = 4 Then\r\n      GoTo Soundex_exit   '''' der Code hat maximal 4 Stellen\r\n    Else\r\n      iPos = iPos + 1\r\n    End If\r\n  Next i\r\nSoundex_exit:\r\n''''Pr&uuml;fen, ob der Code wirklich 4 Stellen hat,\r\n''''sonst am Ende mit Nullen f&uuml;llen\r\n  sfZeichen(0) = sfSoundex(0) & sfSoundex(1) & sfSoundex(2) _    & sfSoundex(3)\r\n  Select Case Len(sfZeichen(0))\r\n    Case 1: sfZeichen(0) = sfZeichen(0) & \"000\"\r\n    Case 2: sfZeichen(0) = sfZeichen(0) & \"00\"\r\n    Case 3: sfZeichen(0) = sfZeichen(0) & \"0\"\r\n  End Select\r\nSoundex = sfZeichen(0)\r\nExit Function\r\nSoundex_err:\r\n    MsgBox \"Fehler beim konvertieren in den Soundex-Code\"\r\n    Resume Next\r\nEnd Function<\/pre>\n<p>Legen Sie zun&auml;chst eine neue Tabelle mit dem Namen tblAdressen an. F&uuml;gen Sie die in Abb. 1 dargestellten Datenfelder ein.<\/p>\n<p>Neben den Standardadressfeldern enth&auml;lt die Tabelle die Felder SoundexFirma und SoundexNachname. Diese nehmen die Soundex-Codes der entsprechenden Adressfelder auf. <\/p>\n<p>Die Codes werden im Formular frmAdressen, dessen Aufbau der folgende Abschnitt erkl&auml;rt, automatisch aktualisiert.<\/p>\n<p>Im n&auml;chsten Schritt legen Sie auf Basis der Tabelle tblAdressen ein Formular zur Eingabe der Adressen an. Abb. 2 zeigt das Formular der Beispieldatenbank.<\/p>\n<p>Da die Inhalte der Felder SoundexFirma und SoundexNachname automatisch berechnet werden, ist f&uuml;r diese Felder keine Eingabe m&ouml;glich.<\/p>\n<p>Stellen Sie deshalb die Eigenschaft Aktiviert dieser Felder auf Nein und die Eigenschaft Geperrt auf Ja.<\/p>\n<p>Zur Berechnung des Soundex-Codes enth&auml;lt die Beispieldatenbank im Modul modSoundex die Funktion Soundex. Sie finden die Funktion in Quellcode 1.<\/p>\n<p><b>Quellcode 2: Aufruf der Funktion Soundex beim Aktualisieren der Firma &#8230;<\/b><\/p>\n<pre>Private Sub Firma_AfterUpdate()\r\n    If Not IsNull(Me!Firma) Then\r\n        Me!SoundexFirma = Soundex(Me!Firma)\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3: &#8230; und beim Aktualisieren des Nachnamens.<\/b><\/p>\n<pre>Private Sub Nachname_AfterUpdate()\r\n    If Not IsNull(Me!Nachname) Then\r\n        Me!SoundexNachname = Soundex(Me!Nachname)\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4: Aktualisieren des Adress-Detailformulars nach der Auswahl einer Adresse im Suchen-Formular<\/b><\/p>\n<pre>Private Sub btnSuchen_Click()\r\n    Dim recAdressen As Recordset\r\n    RunCommand acCmdSaveRecord\r\n    DoCmd.OpenForm \"frmAdresseSuchen\", WindowMode:=acDialog\r\n    If SysCmd(acSysCmdGetObjectState, acForm, \"frmAdresseSuchen\") = acObjStateOpen Then\r\n        With Forms!frmAdresseSuchen\r\n            Set recAdressen = Me.RecordsetClone\r\n            recAdressen.FindFirst \"AdresseNr = \" & !lstAdresseNr\r\n            Me.Bookmark = recAdressen.Bookmark\r\n            DoCmd.Close acForm, .Name\r\n        End With\r\n    End If\r\nEnd Sub<\/pre>\n<p><IMG height=\"268\" src=\"..\/fileadmin\/_temp_\/{15DB41AA-4A01-49BB-8902-04343D0D2750}\/pic001.png\" width=\"282\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b>Abb. 1: Aufbau der Tabelle mit Adressen und Soundex-Ausdr&uuml;cken<\/b><\/p>\n<p><IMG height=\"315\" src=\"..\/fileadmin\/_temp_\/{15DB41AA-4A01-49BB-8902-04343D0D2750}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b>Abb. 2: Adressformular mit Soundex-Informationen<\/b><\/p>\n<p>Die Funktion gibt den Soundex-Code des mit dem Parameter &lt;Zeichenkette&gt; &uuml;bergebenen Textes zur&uuml;ck. Beispielsweise liefert der Aufruf<\/p>\n<pre>Soundex(\"Meier\")<\/pre>\n<p>den Wert M600 als Ergebnis.<\/p>\n<p>Damit das Formular nach der Eingabe eines Firmennamens den Soundex-Code berechnet und speichert, legen Sie die Programmzeilen aus Quellcode 2 in der Nach Aktualisierung-Ereignisprozedur des Feldes Firma an.<\/p>\n<p>Entsprechend statten Sie das Nach Aktualisierung-Ereignis des Feldes Nachname mit den Zeilen aus Quellcode 3 aus.<\/p>\n<p>Der Aufruf des Suchen-Dialogs erfolgt &uuml;ber die Schaltfl&auml;che btnSuchen im Adressformular. Die Beim Klicken-Ereignisprozedur der Schaltfl&auml;che &ouml;ffnet zun&auml;chst das Formular frmAdresseSuchen im Dialog-Modus. Wird in diesem Formular eine Adresse ausgew&auml;hlt, soll das Detailformular frmAdresse die ausgew&auml;hlte Adresse anzeigen. Damit dies geschieht, legen Sie f&uuml;r die Schaltfl&auml;che die Routine aus Quellcode 4 an.<\/p>\n<p>Mittels der FindFirst-Methode sucht die Prozedur nach der im Dialog-Formular markierten Adresse und zeigt diese im Adressformular an. Daraufhin schlie&szlig;t die Prozedur das Dialog-Formular.<\/p>\n<p>Nun fehlt nur noch das Dialog-Formular, das f&uuml;r einen Suchbegriff alle gefundenen Adressen auflistet. Um dieses Formular zu erstellen, gehen Sie in den folgenden Schritten vor:<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Eigenschaft<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Herkunftstyp<\/p>\n<\/td>\n<td>\n<p>Tabelle\/Abfrage<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Spalten<\/p>\n<\/td>\n<td>\n<p>4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Spalten&uuml;berschriften<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Spaltenbreiten<\/p>\n<\/td>\n<td>\n<p>0cm;3cm;3cm;3cm<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Gebundene Spalte<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 2: Eigenschaftswerte des Listenfeldes lstAdresseNr<\/b><\/p>\n<p>Abb. 3 verdeutlicht den Aufbau des Suchen-Formulars.<\/p>\n<p><IMG height=\"471\" src=\"..\/fileadmin\/_temp_\/{15DB41AA-4A01-49BB-8902-04343D0D2750}\/pic003.png\" width=\"470\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b>Abb. 3: Das Formular frmAdresseSuchen in der Entwurfsansicht<\/b><\/p>\n<p>Der Start der Suche erfolgt &uuml;ber die Schaltfl&auml;che btnSuchen. Dem Beim Klicken-Ereignis der Schaltfl&auml;che ist die Ereignisprozedur aus Quellcode 5 hinterlegt. Die Prozedur pr&uuml;ft zun&auml;chst, ob ein Suchbegriff eingegeben ist. Anschlie&szlig;end stellt sie in einer Select Case-Anweisung je nach aktivierter Suchoption die Bedingung f&uuml;r die Datensatzherkunft des Listenfeldes zusammen.<\/p>\n<p>Ist die erste Option aktiviert, sucht die Prozedur nach &uuml;bereinstimmungen in den Feldern Nachname und Firma &uuml;ber die folgende Bedingung:<\/p>\n<pre>Bedingung = \"Nachname Like ''''*\" & Me!txtName & \"*'''' OR Firma Like ''''*\" & Me!txtName & \"*''''\"<\/pre>\n<p><b>Quellcode 5: Suche mit und ohne Soundex<\/b><\/p>\n<pre>Private Sub btnSuchen_Click()\r\n    Dim Bedingung As String\r\n    If Not IsNull(Me!txtName) Then\r\n        Select Case optSuchoptionen\r\n            Case 1\r\n                Bedingung = \"Nachname Like ''''*\" & Me!txtName & \"*'''' OR _\r\n                             Firma Like ''''*\" & Me!txtName & \"*''''\"\r\n            Case 2\r\n                Bedingung = \"SoundexNachname = ''''\" & Me!txtSoundexCode & _\r\n                  \"'''' OR SoundexFirma = ''''\" & Me!txtSoundexCode & \"''''\"\r\n        End Select\r\n        Me!lstAdresseNr.RowSource = \"SELECT AdresseNr, Nachname, \" & _\r\n             \"Vorname, Firma FROM tblAdressen WHERE \" & Bedingung\r\n        Me!lstAdresseNr.Visible = True\r\n    End If\r\nEnd Sub<\/pre>\n<p>Ist die Soundex-Suche ausgew&auml;hlt, verwendet die Prozedur das Feld txtSoundexCode zum Vergleich:<\/p>\n<pre>Bedingung = \"SoundexNachname = ''''\" & Me!txtSoundexCode & \"'''' OR SoundexFirma = ''''\" & Me!txtSoundexCode & \"''''\"<\/pre>\n<p>Anschlie&szlig;end stellt die Prozedur die Datensatzherkunft zusammen, weist diese dem Listenfeld zu und blendet das Listenfeld ein:<\/p>\n<pre>Me!lstAdresseNr.RowSource = \"SELECT AdresseNr, Nachname, Vorname, Firma FROM tblAdressen WHERE \" & Bedingung\r\nMe!lstAdresseNr.Visible = True<\/pre>\n<p>In der folgenden Abbildung sehen Sie das Ergebnis der Suche nach dem Namen Meier &uuml;ber den Zeichenkettenvergleich (s. Abb. 4). Das Suchergebnis zeigt nur eine Adresse an, n&auml;mlich die, bei der der Nachname exakt mit dem Suchkriterium &uuml;bereinstimmt. Abb. 5 stellt das Suchergebnis mit der Soundex-Suche dar. Hier werden alle phonetisch &auml;hnlich klingenden &#8222;Meier&#8220; unabh&auml;ngig von der Schreibweise angezeigt.<\/p>\n<p><IMG height=\"270\" src=\"..\/fileadmin\/_temp_\/{15DB41AA-4A01-49BB-8902-04343D0D2750}\/pic004.png\" width=\"447\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b>Abb. 4: Die Suche nach einem Namen ohne Soundex-Code &#8230;<\/b><\/p>\n<p><IMG height=\"267\" src=\"..\/fileadmin\/_temp_\/{15DB41AA-4A01-49BB-8902-04343D0D2750}\/pic005.png\" width=\"446\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b>Abb. 5: &#8230; und mit Soundex-Code<\/b><\/p>\n<p>F&uuml;r Bereiche, in denen &ouml;fter Tippfehler vorkommen oder die genaue Bezeichnung einfach nicht bekannt ist, ist die hier vorgestellte phonetische L&ouml;sung sicher eine interessante Sache. Pr&uuml;fen sollten Sie aber in jedem Fall, ob Aufwand und Nutzen in angemessenem Verh&auml;ltnis stehen.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Soundex00.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/E70CB5FB-7C3B-4760-83EB-114261E034E3\/aiu_310.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine oft ben&ouml;tigte Funktion in einer Datenbank ist das Suchen nach bestimmten Daten. Dies l&auml;sst sich mit ein wenig Flei&szlig;arbeit leicht realisieren. Interessant wird es, wenn Sie die Suche mit zus&auml;tzlichem Komfort ausstatten m&ouml;chten &#8211; etwa, indem Sie der Suchfunktion zus&auml;tzlich die M&ouml;glichkeit zum Su-chen nach &auml;hnlich klingenden Begriffen hinzuf&uuml;gen. Wie man das programmieren soll? Nun, das ist gar nicht schwer. Mit dem so genannten Soundex-Algorithmus erzeugen Sie aus W&ouml;rtern einen be-stimmten Code, der nicht nur im Englischen, sondern auch im Deutschen verbl&uuml;ffend gute Ergebnisse liefert.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662005,66062005,44000036],"tags":[],"class_list":["post-55000310","post","type-post","status-publish","format-standard","hentry","category-662005","category-66062005","category-Daten_suchen_sortieren_gruppieren"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Suchfunktion mit phonetischem Vergleich - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Suchfunktion mit phonetischem Vergleich\" \/>\n<meta property=\"og:description\" content=\"Eine oft ben&ouml;tigte Funktion in einer Datenbank ist das Suchen nach bestimmten Daten. Dies l&auml;sst sich mit ein wenig Flei&szlig;arbeit leicht realisieren. Interessant wird es, wenn Sie die Suche mit zus&auml;tzlichem Komfort ausstatten m&ouml;chten - etwa, indem Sie der Suchfunktion zus&auml;tzlich die M&ouml;glichkeit zum Su-chen nach &auml;hnlich klingenden Begriffen hinzuf&uuml;gen. Wie man das programmieren soll? Nun, das ist gar nicht schwer. Mit dem so genannten Soundex-Algorithmus erzeugen Sie aus W&ouml;rtern einen be-stimmten Code, der nicht nur im Englischen, sondern auch im Deutschen verbl&uuml;ffend gute Ergebnisse liefert.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-20T10:23:15+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/7ce3d9d0f8c6448fbe84a60e11185212\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Suchfunktion mit phonetischem Vergleich\",\"datePublished\":\"2024-06-20T10:23:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/\"},\"wordCount\":1209,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7ce3d9d0f8c6448fbe84a60e11185212\",\"articleSection\":[\"2005\",\"6\\\/2005\",\"Daten suchen, sortieren, gruppieren\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/\",\"name\":\"Suchfunktion mit phonetischem Vergleich - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7ce3d9d0f8c6448fbe84a60e11185212\",\"datePublished\":\"2024-06-20T10:23:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7ce3d9d0f8c6448fbe84a60e11185212\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7ce3d9d0f8c6448fbe84a60e11185212\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchfunktion_mit_phonetischem_Vergleich\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Suchfunktion mit phonetischem Vergleich\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Suchfunktion mit phonetischem Vergleich - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/","og_locale":"de_DE","og_type":"article","og_title":"Suchfunktion mit phonetischem Vergleich","og_description":"Eine oft ben&ouml;tigte Funktion in einer Datenbank ist das Suchen nach bestimmten Daten. Dies l&auml;sst sich mit ein wenig Flei&szlig;arbeit leicht realisieren. Interessant wird es, wenn Sie die Suche mit zus&auml;tzlichem Komfort ausstatten m&ouml;chten - etwa, indem Sie der Suchfunktion zus&auml;tzlich die M&ouml;glichkeit zum Su-chen nach &auml;hnlich klingenden Begriffen hinzuf&uuml;gen. Wie man das programmieren soll? Nun, das ist gar nicht schwer. Mit dem so genannten Soundex-Algorithmus erzeugen Sie aus W&ouml;rtern einen be-stimmten Code, der nicht nur im Englischen, sondern auch im Deutschen verbl&uuml;ffend gute Ergebnisse liefert.","og_url":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/","og_site_name":"Access im Unternehmen","article_published_time":"2024-06-20T10:23:15+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/7ce3d9d0f8c6448fbe84a60e11185212","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Suchfunktion mit phonetischem Vergleich","datePublished":"2024-06-20T10:23:15+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/"},"wordCount":1209,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/7ce3d9d0f8c6448fbe84a60e11185212","articleSection":["2005","6\/2005","Daten suchen, sortieren, gruppieren"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/","url":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/","name":"Suchfunktion mit phonetischem Vergleich - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/7ce3d9d0f8c6448fbe84a60e11185212","datePublished":"2024-06-20T10:23:15+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/7ce3d9d0f8c6448fbe84a60e11185212","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/7ce3d9d0f8c6448fbe84a60e11185212"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Suchfunktion_mit_phonetischem_Vergleich\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Suchfunktion mit phonetischem Vergleich"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000310"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000310\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}