Benutzung auf eigene Gefahr ! |
Beschreibung |
Die beiden Funktionen dienen der Bereinigung von Text und Memo-Feldern. Dabei werden Leerzeichen und Zeilenumbrüche, die sich am Anfang oder am Ende eines Feldes befinden entfernt. Ist danach das Feld dann leer ("""), wird der Feldinhalt durch eine Null ersetzt. Die Funktion FeldReinigen() kann in einer Aktualisierungsabfrage eingesetzt werden. Der Rückgabewert ist eine NULL oder ein bereinigter Wert Die Funktion FeldBereinigung() kann in Access-Makros mit der Anweisung AusführenCode eingesetzt werden, um mehrere Felder einer Tabelle mit Hilfe automatisch erstellter und ausgeführter Aktualisierungsabfragen zu bereinigen. |
VBA-Quelltext |
Public Function FeldBereinigung(Tabelle As String, ParamArray FeldNamen()) Dim Feld As Variant On Error GoTo FehlerBeiAktualisierung BeginTrans ' Transaktionsschutz einschalten For Each Feld In FeldNamen CurrentDb.Execute "UPDATE [" & Tabelle & "] Set [" & _ Feld & "]=FeldReinigung([" & Feld & _ "]) WHERE (Not ([" & Feld & "] Is NULL))" Next Feld CommitTrans ' Alle Änderungen gemeinsam übernehmen Exit Function FehlerBeiAktualisierung: Rollback ' Keine Änderung MsgBox Err.Description, vbCritical, "Fehler bei Feldbereinigung" End Function Public Function FeldReinigung(FeldWert) If IsNull(FeldWert) Then Exit Function FeldWert = Trim(FeldWert) ' Zeilenumbrüche und Leerzeichen am Anfang entfernen While InStr(1, FeldWert, vbNewLine) = 1 FeldWert = LTrim(Mid(FeldWert, 3)) Wend ' Zeilenumbrüche und Leerzeichen am Ende entfernen While (InStrRev(FeldWert, vbNewLine) = Len(FeldWert) - 1) And (Len(FeldWert) > 1) FeldWert = RTrim(Left(FeldWert, Len(FeldWert) - 2)) Wend ' Leere Textfelder durch Access-Wert NULL ersetzen FeldReinigung = IIf(FeldWert = vbNullString, Null, FeldWert) End Function |
Argumente der Funktion/Prozedur |
FeldReinigung()
FeldBereinigung
|
Rückgabewert |
Keine Rückgabewerte. |
Hinweis |
Die Bearbeitung von Tabellen außerhalb der aktuellen Datenbank gelingt mit Abfragen oder eingebundenen Tabellen. Die Funktion FeldBereinigung() verwendet den Transaktionsschutz der Datenbank, d.h. bricht die Funktion wegen eines Fehlers ab, wird die gewählte Tabelle überhaupt nicht verändert. |
Anwendungsgebiete, Fehler und Warnungen |
Anwendung ist nur bei MEMO- und Textfeldern sinnvoll, da nur diese Zeilenumbrüche und Leerzeichen enthalten. Der Index der bearbeiteten Felder muss NULL-Werte zulassen. Insbesondere Felder mit Primärschlüssel und leeren Feldinhalten führen daher regelmäßig zum Abbruch der Bearbeitung. |