Eingebaute Funktionen: Zeichenkettenfunktionen

Einen großen Bereich der eingebauten Funktionen von Access nehmen die Zeichenfunktionen ein. Das ist logisch, denn in jeder Datenbank kommen Texte vor, und es gibt immer wieder Aufgaben, die wir am besten mit den eingebauten Zeichenfunktionen lösen können. In diesem Artikel stellen wir alle Zeichenkettenfunktionen vor und zeigen, wie wir diese einsetzen können. Die Zeichenkettenfunktionen lassen sich sowohl in VBA als auch in Ausdrücken an verschiedenen Stellen einsetzen – wie berechnete Felder in Abfragen, Kriterien in Abfragen, Inhalte von Formular- und Berichtssteuerelementen et cetera.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank EingebauteFunktionen_Zeichenkettenfunktionen.accdb.

Zeichenkettenfunktionen

Bevor wir in die Anwendungszwecke starten, schauen wir uns die relevanten Zeichenkettenfunktionen einmal in alphabetischer Reihenfolge mit der groben Beschreibung an.

Wir geben jeweils die VBA-Bezeichnung an, gefolgt von der in Ausdrücken in der deutschen Version von Access zu verwendenden Funktion (diese unterscheiden sich nicht immer):

  • Asc (Asc): Liefert den ASCII-Code für das erste Zeichen der angegebenen Zeichenkette.
  • AscW (AscW): Liefert den Unicode-Wert für das erste Zeichen der angegebenen Zeichenkette zurück.
  • Chr (Zchn): Liefert das ASCII-Zeichen entsprechend dem übergebenen Zahlenwert im Bereich von 0-255 als Variant-Wert zurück.
  • Chr$ (Zchn$): Liefert das ASCII-Zeichen entsprechend dem übergebenen Zahlenwert im Bereich von 0-255 als String-Wert zurück. Dies kann je nach Anwendungsfall performanter als Chr sein.
  • ChrW (ChrW): Gibt das Zeichen als Variant-Wert zurück, das dem angegebenem Unicode-Code entspricht.
  • ChrW$ (ChrW$): Gibt das Zeichen als String-Wert zurück, das dem angegebenem Unicode-Code entspricht.
  • Filter: Untersucht, welche Elemente eines Arrays eine bestimmte Zeichenkette enthalten (oder auch nicht).
  • InStr (InStr): Durchsucht eine Zeichenkette nach einer anderen Zeichenkette und gibt die Position der ersten Fundstelle als Ergebnis zurück. Dabei können wir die Startposition für die Suche innerhalb der zu durchsuchenden Zeichenkette angeben.
  • InStrRev (InStrRev): Durchsucht eine Zeichenkette von hinten nach vorne nach einer anderen Zeichenkette.
  • Join (keine Version für Ausdrücke): Führt die Elemente eines Arrays zu einer Zeichenkette zusammen, deren Elemente durch das angegebene Trennzeichen getrennt werden. Umkehrfunktion zu Split.
  • LCase (Kleinbst): Wandelt alle Buchstaben des Ausdrucks in Kleinbuchstaben um und liefert das Ergebnis als Variant zurück.
  • LCase$ (Kleinbst$): Wandelt alle Buchstaben des Ausdrucks in Kleinbuchstaben um und liefert das Ergebnis als String zurück.
  • Left (Links): Ermittelt die ersten x Zeichen von links und gibt diese als Variant zurück.
  • Left$ (Links$): Ermittelt die ersten x Zeichen von links und gibt diese als String zurück.
  • Len (Länge): Ermittelt die Länge der übergebenen Zeichenkette.
  • LTrim (LGlätten): Entfernt führende Leerzeichen und liefert das Ergebnis als Variant zurück.
  • LTrim$ (LGlätten$): Entfernt führende Leerzeichen und liefert das Ergebnis als String zurück.
  • Mid (Teil): Ermittelt die Zeichen ab der mit dem zweiten Parameter angegebenen Position mit der Zeichenzahl aus dem dritten Parameter und liefert das Ergebnis als Variant zurück.
  • Mid$ (Teil$): Ermittelt die Zeichen ab der mit dem zweiten Parameter angegebenen Position mit der Zeichenzahl aus dem dritten Parameter und liefert das Ergebnis als String zurück.
  • Replace (Ersetzen): Ersetzt eine Teilzeichenkette in einer Zeichenkette durch eine andere Zeichenkette.
  • Right (Rechts): Ermittelt die ersten x Zeichen von rechts und gibt diese als Variant zurück.
  • Right$ (Rechts$): Ermittelt die ersten x Zeichen von rechts und gibt diese als String zurück.
  • RTrim (RGlätten): Entfernt abschließende Leerzeichen und liefert das Ergebnis als Variant zurück.
  • RTrim$ (RGlätten$): Entfernt abschließende Leerzeichen und liefert das Ergebnis als String zurück.
  • Space (Leerzchn): Gibt die dem Parameter entsprechende Anzahl Leerzeichen als Variant zurück.
  • Space$ (Leerzchn$): Gibt die dem Parameter entsprechende Anzahl Leerzeichen als String zurück.
  • Split (keine Version für Ausdrücke): Trennt die durch ein bestimmtes Zeichen separierten Elemente auf und fügt sie einem Array hinzu. Umkehrfunktion zu Join.
  • StrComp (StrVgl): Vergleicht die beiden als Parameter übergebenen Zeichenketten und gibt einen Zahlenwert zurück, der differenziert angibt, ob die Zeichenketten sind oder nicht.
  • StrConv (StrKonv): Konvertiert die angegebene Zeichenfolge zum Beispiel in Großbuchstaben, Kleinbuchstaben, alles Wörter mit Großbuchstaben am Anfang et cetera.
  • String (String): Gibt das angegebene Zeichen in der gewünschten Menge als Variant zurück.
  • String$ (String$): Gibt das angegebene Zeichen in der gewünschten Menge als Variant-Zeichenkette zurück.
  • StrReverse (StrReverse): Kehrt den Inhalt einer Zeichenkette um.
  • Trim (Glätten): Entfernt führende und folgende Leerzeichen und liefert das Ergebnis als Variant zurück.
  • Trim$ (Glätten$): Entfernt führende und folgende Leerzeichen und liefert das Ergebnis als String zurück.
  • UCase (Großbst): Wandelt alle Buchstaben des Ausdrucks in Großbuchstaben um und liefert das Ergebnis als Variant zurück.
  • UCase$ (Großbst): Wandelt alle Buchstaben des Ausdrucks in Großbuchstaben um und liefert das Ergebnis als String zurück.

Zeichen aus Zeichencodes ermitteln

Hierfür gibt es mit Chr, Chr$, ChrW und ChrW$ gleich vier Funktionen (eigentlich sechs, aber die ChrB und ChrB$ werden nur selten benötigt).

Zeichen aus ASCII-Code ermitteln

Zur Demonstration, wie die Chr-Funktion arbeitet, haben wir eine Prozedur mit einer Schleife über die Werte von 0 bis 255 erstellt. Die Funktion nimmt auch nur die Werte in diesem Bereich entgegen. Sie gibt für jeden dieser Werte den ASCII-Code sowie das entsprechende Zeichen aus:

Public Sub Beispiel_Chr()
     Dim i As Integer
     For i = 0 To 255
         Debug.Print "ASCII-Code " & i & " entpricht " _
             & Chr(i)
     Next i
End Sub

Die Großbuchstaben unseres Alphabets haben zum Beispiel die ASCII-Codes von 65 bis 90:

ASCII-Code 65 entpricht A
ASCII-Code 66 entpricht B
ASCII-Code 67 entpricht C
...
ASCII-Code 90 entpricht Z

Die Kleinbuchstaben verwenden diese Zahlencodes:

ASCII-Code 97 entpricht a
ASCII-Code 98 entpricht b
ASCII-Code 99 entpricht c
...
ASCII-Code 122 entpricht z

Die Zahlen von 0 bis 9 finden wir unter den ASCII-Codes 48 bis 57:

ASCII-Code 48 entpricht 0
ASCII-Code 49 entpricht 1
ASCII-Code 50 entpricht 2
...
ASCII-Code 57 entpricht 9

Zeichen aus Unicode ermitteln

Eine ähnliche Funktion haben wir mit AscW für Unicode. Unicode enthält 65.536 Zeichen mit den Codes von 0 bis 65.535. Dementsprechend kommen wir für die Beispielfunktion nicht mehr mit einer Integer-Laufvariablen aus:

Public Sub Beispiel_ChrW()
     Dim l As Long
     For l = 0 To 65536
         Debug.Print "Unicode " & l & " entpricht " _
             & ChrW(l)
     Next l
End Sub

Die Funktion liefert unser Alphabet und die Zahlen für die gleichen Zahlenwerte wie Chr. Danach folgen einige weitere Zeichen, von denen die meisten in der Ausgabe von VBA gar nicht interpretiert werden können und als Fragezeichen () ausgegeben werden.

Vergleich von Chr und ChrW

Die ASCII- und die Unicode-Zeichen für die Codes von 0 bis 255 sind nicht vollständig identisch. Mit der folgenden Prozedur geben wir alle Werte aus und markieren diejenigen, die nicht gleich sind:

Public Sub Vergleich_Chr_ChrW()
     Dim i As Integer
     For i = 0 To 255
         If Not Chr(i) = ChrW(i) Then
             Debug.Print "Nicht gleich.",
         End If
         Debug.Print "Code: " & i & " ASCII: " _
             & Chr(i) & " Unicode: " & ChrW(i)
     Next i
End Sub

Chr$ und ChrW$

Es gibt von beiden Funktionen auch noch eine Variante mit $ am Ende des Namens. Diese funktionieren gleich, liefern jedoch das Ergebnis direkt als String-Wert statt als Variant-Wert zurück, was je nach Setting eine bessere Performance haben kann.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar