Zeichenfolgenverarbeitung
771
Programmierung
Zeichenfolgenverarbeitung
In fast allen Datenbankanwendungen müssen Zeichenfolgen bearbeitet und ausgewertet werden. Wir
möchten Ihnen in diesem Abschnitt einige der Funktionen vorstellen, die Access hierfür anbietet.
In den vorangegangenen Kapiteln wiesen wir Sie an einigen Stellen darauf hin, dass es bei Bedingun-
gen für WHERE-Klauseln zu Problemen mit Anführungszeichen innerhalb von Zeichenfolgen
kommen kann (siehe Kapitel 24). Um die geschilderten Probleme zu umgehen, ist es sinnvoll, alle
Anführungszeichen in Zeichenketten vor der Verwendung als WHERE-Klausel durch doppelte
Anführungszeichen zu ersetzen, also beispielsweise »"« durch »""« und »'« durch »' '«.
Die folgende Funktion
AnführungszeichenVerdoppeln()
durchsucht eine Zeichenkette nach Anfüh-
rungszeichen und verdoppelt diese. Dabei werden die Funktion
Len()
zur Bestimmung der Länge
einer Zeichenkette und die Funktion
Mid()
zum Herausschneiden eines bestimmten Zeichens aus
der Zeichenkette eingesetzt.
Die Funktion erhält als Parameter die Zeichenkette als
Variant
, ebenso wird das
Ergebnis als
Variant
zurückgegeben. Wir verwenden
Variant
anstelle des Typs
String
, da es sonst
in Formularen und Berichten zu Problemen bei der Übergabe von Inhalten von Steuerelementen
kommen kann.
Function AnführungszeichenVerdoppeln( _
ByVal varOriginal As Variant) As Variant
Dim strTmp As String
Dim strChr As String
Dim i As Integer
' Auf Null überprüfen
If IsNull(varOriginal) Then
AnführungszeichenVerdoppeln = Null
Exit Function
End If
' varOriginal von vorne nach hinten durchlaufen
For i = 1 To Len(varOriginal)
' i-tes Zeichen herausschneiden
strChr = Mid(varOriginal, i, 1)
' ist es ein " oder ein '
If strChr = """" Then
' gegen "" tauschen
strTmp = strTmp & """"""
ElseIf strChr = "'" Then
' gegen '' tauschen
strTmp = strTmp & "''"
Else
' ansonsten
strTmp = strTmp + strChr
End If
Next i
' strTmp als Ergebnis zurückgeben
AnführungszeichenVerdoppeln = strTmp
End Function
HINWEIS
Kapitel 36
Funktionen und Methoden
772
Das folgende Listing zeigt eine etwas allgemeinere Lösung. Die Funktion
SuchenUndErsetzen()
lässt
sich zum Austauschen von beliebigen Zeichen und Zeichenketten verwenden. (Für die reine Funk-
tionalität können Sie dazu auch die Funktion
Replace()
von Access verwenden. Das folgende Listing
zeigt aber sehr schön den Umgang mit einigen Funktionen zur Zeichenfolgenverarbeitung. Daher
wird die Funktion auch weiterhin in diesem Buch verwendet.) In der Funktion wird die Funktion
Left()
verwendet, die eine angegebene Anzahl von Zeichen vom linken Rand der Zeichenkette
zurückliefert.
Weitere Funktionen für die Bearbeitung von Zeichenketten sind
Right()
, um Zeichen vom Ende
einer Zeichenkette zu ermitteln,
InStr()
, um das Vorkommen bestimmter Zeichen oder Zeichen-
ketten in einer Zeichenfolge aufzuspüren wie im Beispiel oben und
Trim()
, um Leerzeichen am
Anfang und am Ende einer Zeichenkette zu entfernen.
Function AnführungszeichenErsetzen( _
ByVal varOriginal As Variant) As Variant
AnführungszeichenErsetzen = SuchenUndErsetzen( _
varOriginal, """", """""")
AnführungszeichenErsetzen = SuchenUndErsetzen( _
varOriginal, "'", "''")
End Function
Function SuchenUndErsetzen(ByVal varOriginal As Variant, _
ByVal strSuchen As String, _
ByVal strErsetzen As String) _
As Variant
Dim intSuchLänge As Integer
Dim intErsetzenLänge As Integer
Dim intPos As Integer
If IsNull(varOriginal) Then
SuchenUndErsetzen = Null
Else
intSuchLänge = Len(strSuchen)
intErsetzenLänge = Len(strErsetzen)
intPos = 1
Do
intPos = InStr(intPos, varOriginal, strSuchen)
If intPos > 0 Then
varOriginal = Left(varOriginal, intPos – 1) & _
strErsetzen & Mid(varOriginal, _
intPos + intSuchLänge)
intPos = intPos + intErsetzenLänge
End If
Loop Until intPos = 0
End If
SuchenUndErsetzen = varOriginal
End Function

Get Microsoft Office Access 2007 - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.