Feldinhalte nachträglich trennen

Problem

Du hast ein Tabellenfeld in dem sich mehrteilige Inhalte befinden, z.B. Vor- und Nachname, Straße und Hausnummer etc. Zur weiteren Verarbeitung möchtest du diese Daten in jeweils eigene Felder auftrennen.

Lösung

Grundsätzlich solltest du darauf achten, in einem Tabellenfeld nur Werte zu speichern, die nicht weiter zerlegbar sind (–> 1. Normalform). Späteres Verketten ist stets einfacher als nächträgliches Trennen.

Wenn es brauchbare Trennungskriterien gibt z.B. trennende Leerzeichen oder Kommas, kannst du mit Aktualisierungsabfragen oder VBA-Funktionen einen Großteil der Arbeit automatisiert erledigen. Ein Beispiel:

Angenommen im Feld „Kunde“ befinden sich Vor- und Nachname getrennt durch 1 Leerzeichen (z.B. „Bill Gates“).
1. Lege in der Tabelle zwei neue Felder an und nenne sie „Vorname“ und „Nachname“.

2. Erzeuge auf Basis der Tabelle eine Aktualisierungsabfrage.

3. Schreibe im Abfrageentwurf in der Zeile „Aktualisieren“ beim Feld „Vorname“:
Left([Kunde];InStr([Kunde];“ „)-1)
beim Feld „Nachname“:
Mid([Kunde];InStr([Kunde];“ „)+1)

Eine andere häufige Variante ist Nachname vor dem Vornamen durch Komma+Leerzeichen gertrennt („Gates, Bill“). Hier lauten die Ausdrücke:
Left([Kunde];InStr([Kunde];“,“)-1)
Mid([Kunde];InStr([Kunde];“,“)+2)
Weitere Info gibt’s im VBA-Editor mit <F1> zu den verwendeten String-Funktionen.

4. Führe die Abfrage aus   und sei glücklich mit dem Ergebnis bzw…


Bei solchen Aktionen können Fehler passieren, weil z.B. jmd. mehrere/mehrteilige Vor- oder Nachnamen hat oder das Format nicht immer eingehalten wurde. Daher solltest du die Ergebnisse genau prüfen, z.B. die Ausdrücke zuerst in einer Auswahlabfrage als berechnete Felder testen und anpassen, oder die Daten händisch nachbearbeiten.