Leerzeichen entfernen in Access mit VBA
Unerwünschte Leerzeichen zu Beginn oder am Ende einer Zeichenkette im Datenbestand sind oftmals ärgerlich. Je nach Art der Weiterverarbeitung führen sie gerade bei Kombination mehrerer Felder wie Anrede/Vorname/Nachname oder PLZ/Ort zu zusätzlichen Leerzeichen und sehen nicht gut aus.
In Access lassen sich führende oder abschließende Leerzeichen mit der Trim-Funktion entfernen. Wenn sich die hiervon betroffenen Daten in einer Tabelle befinden, wird man zuerst wahrscheinlich daran denken, solche Leerzeichen mittels einer Aktualisierungsabfrage in Verbindung mit der Trim-Funktion zu entfernen.
Wenn nur wenige Spalten betroffen sind, ist eine solche Aktualisierungsabfrage schnell erstellt. Was aber, wenn es sich um eine Tabelle mit sehr vielen Spalten handelt?
Hierfür habe ich den untenstehenden Code entwickelt. Meine Lösung kommt ohne Aktualisierungsabfrage aus, also wenig Schreibaufwand und wenig Arbeit anstelle dem mühevollen Zusammenklicken von Abfragefeldern.
Dim r As Recordset
Dim vFieldName As String
Dim i As Long
Set r = CurrentDb.OpenRecordset("SELECT * FROM tbl_daten ORDER BY ID;", DB_OPEN_DYNASET)
DoCmd.Hourglass True
'Alle Datensätze der Reihe nach durchgehen
If r.RecordCount > 0 Then 'die Abfrage liefert Daten
r.MoveFirst
Do Until r.EOF
With r
'Innerhalb jedes Datensatzes alle Spalten durchlaufen
For i = 0 To (.Fields.Count - 1)
vFieldName = .Fields(i).Name
If .Fields(i).Type = 10 Then 'Beschränkung auf Felder vom Typ "Kurzer Text"
If Not IsNull(.Fields(vFieldName)) Then 'nur wenn das Feld einen Wert liefert
.Edit
.Fields(vFieldName) = Trim(.Fields(vFieldName))
.Update
End If
End If
Next
End With
r.MoveNext
Loop
r.Close
Set r = Nothing
DoCmd.Hourglass False
MsgBox "Fertig!", 64, "Hinweis"
Else 'die Abfrage liefert keine Daten
r.Close
Set r = Nothing
DoCmd.Hourglass False
MsgBox "Die Abfrage liefert keine Daten!", vbCritical, "Hinweis"
End If
Ich nutze hier das DAO-Recordset-Objekt, um alle Datensätze zu durchlaufen. Innerhalb der einzelnen Datensätze geht der Code automatisiert alle Spalten durch. Sofern es sich hierbei um Spalten vom Typ „Text“ handelt, werden führende oder abschließende Leerzeichen mittels Trim-Funktion entfernt und das Recordset aktualisiert, die Änderung also gespeichert.
Mit diesem Code können Sie sogar Tabellen, die aus einer großen Anzahl an Spalten bestehen, ohne großen Aufwand bearbeiten und so eine erhebliche Verbesserung der Datenqualität bewirken.
Kontakt zu mir
Meine Fachgebiete
Access-Datenbanken
TYPO3-Webseiten
VBA-Entwickler
IT-Beratung
Produkte für Access
Adressverwaltung
Tools für Access