Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2004.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Textfunktionen mit und ohne
reguläre Ausdrücke

André Minhorst, Duisburg

Die Arbeit mit Texten kann vielfältig sein. Dazu gehört das Durchsuchen von Zeichenketten nach anderen Zeichenketten, das Ersetzen von Zeichenketten durch andere Zeichenketten, Zerlegen von Zeichenketten und so weiter. Eine weitere wichtige Funktion ist das Überprüfen von Zeichenketten auf bestimmte Merkmale. Im vorliegenden Beitrag erfahren Sie, wie diese Aufgaben mit und ohne Anwendung von regulären Ausdrücken erledigt werden können.

Textfunktionen

Das Untersuchen, Suchen und Ersetzen von bestimmten Elementen einer Zeichenfolge durch andere Zeichen wird meistens beim Import oder Export von Daten und der damit verbundenen Anpassung an das andere Format notwendig.

Access bietet hierzu einige Standardfunktionen an, mit denen sich alle gewünschten Aufgaben mit mehr oder weniger Aufwand erledigen lassen.

Für bestimmte Aufgaben gibt es aber auch spezielle Bibliotheken, die Funktionen zur Verfügung stellen, die man sonst mühevoll programmieren müsste.

Eine dieser Bibliotheken heißt Microsoft VBScript Regular Expressions und stellt so genannte reguläre Ausdrücke zur Verfügung. Diese Bibliothek enthält mächtige Werkzeuge zum Suchen und Ersetzen.

Textfunktionen mit VBA

VBA bietet einige Möglichkeiten zur Manipulation von Zeichenketten. Wichtig dafür sind vor allem die vorhandenen Zeichenkettenfunktionen und die Vergleichsoperatoren, die nachfolgend vorgestellt werden.

Textfunktionen

VBA stellt einige Funktionen für die Arbeit mit Zeichenketten zur Verfügung. Die wichtigsten sind mit den gebräuchlichen Parametern in
Tab. 1 aufgelistet. Einige enthalten weitere Parameter. Für genauere Informationen konsultieren Sie die Onlinehilfe.

Vergleichsoperatoren

Neben den Textfunktionen, die größtenteils der eigentlichen Bearbeitung dienen, sind Vergleichsoperationen ein wichtiger Bestandteil bei der Anwendung der Textfunktionen. In Tab. 2 finden Sie eine Auflistung der gebräuchlichen Vergleichsoperatoren.

Platzhalter

Beim Like-Operator können im rechten Teil des Ausdrucks Platzhalter verwendet werden. Es gibt zwei Platzhalter: das Sternchen (*) und das Fragezeichen (?). Das Sternchen steht für Null bis beliebig viele Zeichen, das Fragezeichen für genau ein beliebiges Zeichen. Der folgende Ausdruck ergibt beispielsweise den Rückgabewert True:

"info@access-im-unternehmen.de" Like "*@*.*"

Funktion

Beschreibung

Len(str)

Ermittelt die Anzahl der Zeichen einer Zeichenkette str.

Left(str,n)

Gibt die ersten n Zeichen der Zeichenkette str zurück.

Right(str,n)

Gibt die letzten n Zeichen einer Zeichenkette str zurück.

Mid(str,m,n)

Gibt die Teilzeichenkette vom mten bis zum (m+n)ten Zeichen zurück.

Instr(n, str1, str2)

Gibt die Position zurück, an der sich die Zeichenkette str2 innerhalb der Zeichenkette str1 ab der nten Stelle befindet (0 bei keinem Auftreten).

Replace(str1, str2, str3)

Ersetzt die Zeichenkette str2 innerhalb der Zeichenkette str1 durch str3.

Trim(str)

Schneidet alle Leerzeichen am Anfang und am Ende von str ab.

Chr(x)

Gibt das dem ASCII-Code x entsprechende Zeichen zurück.

Asc(str)

Gibt den ASCII-Code für das erste Zeichen in str zurück.

Tab. 1: Zeichenkettenfunktionen von VBA

Vergleichs-
operator

Beschreibung

=

Gleich. Gibt True zurück, wenn Zeichenfolgen exakt gleich sind.

<, <=, >=, >

Vergleicht Zeichenfolgen nach dem Wert der Asc-Funktion (Beispiel: Asc("a") = 97, Asc("b") = 98, also würde "a<b" True zurückgeben.

<>

Ungleich.

Like

Wie ’=’, allerdings unter Verwendung von Platzhaltern.

Tab. 2: Vergleichsoperatoren von VBA

Ausdrücke wie dieser können beispielsweise zur Validierung von Werten - wie hier einer E-Mail-Adresse - verwendet werden.

Textfunktionen + Vergleichsoperatoren + Platzhalter + VBA = ?

Mit den genannten Werkzeugen lassen sich mit den unter VBA vorhandenen Konstruktionen wie For Next-, Do While- und anderen Schleifen die meisten Aufgaben mit mehr oder weniger Aufwand erledigen.

Mit der seit Access 2000 verfügbaren Funktion Replace lassen sich sogar in einem Rutsch mehrere Vorkommen einer Zeichenfolge durch eine andere ersetzen. Leider lassen sich innerhalb dieser Funktion keine Platzhalter verwenden, was deren Flexibilität enorm einschränkt.

... und was VBA noch fehlt

Wer zeit seines Lebens mit VBA gearbeitet hat, wird möglicherweise gar nicht viel vermissen, da er es gewohnt ist, aus den wenigen Grundfunktionen eigene Funktionen zusammenzustellen, die alle gewünschten Aufgaben erledigen.

Wer allerdings einmal einen Blick auf andere Programmiersprachen wie Java, Javascript oder PHP geworfen hat, mag in Anbetracht der vielen vorgefertigten Funktionen neidisch geworden sein.

Wie die beiden letzten Abschnitte andeuten, scheint die Definition dessen, welche Fähigkeiten VBA in Bezug auf das Thema des vorliegenden Beitrags nicht hat, aber haben sollte, schwierig zu sein.

Die im folgenden Kapitel vorgestellten regulären Ausdrücke und die damit verbundene Objektbibliothek sollten aber auf jeden Fall zum Schließen dieser Lücke beitragen.

Reguläre Ausdrücke

Ein regulärer Ausdruck ist nichts anderes als ein Suchmuster, um übereinstimmende Muster in einer Eingabe zu finden.

Weiter oben haben Sie bereits die in Zusammenhang mit dem Like-Befehl zur Verfügung stehenden Platzhalter wie das Sternchen und das Fragezeichen kennen gelernt.

Reguläre Ausdrücke bieten nicht nur Platzhalter für eines oder mehrere Zeichen, sie sind noch wesentlich mächtiger.

Einsatzgebiete von regulären Ausdrücken

Die Verwendung regulärer Ausdrücke erweitert die Möglichkeiten von VBA um einige wichtige Punkte. Als Einsatzgebiete bieten sich beispielsweise die in den beiden folgenden Abschnitten beschriebenen an.

Überprüfung eingehender Daten

Der Export von Daten externer Datenquellen birgt viele Fehlerquellen in sich, da die Datentypen der zu importierenden Daten nicht mit den Zieldatentypen übereinstimmen. Mit regulären Ausdrücken können Sie das Format der eingehenden Daten prüfen.

Eingabevalidierung

Viele Datenfelder erwarten Eingaben in speziellen Formaten. Dazu gehören Internetadressen,
E-Mail-Adressen, Telefonnummern, Autokennzeichen und so weiter. Sie können zwar in Formularen ein entsprechendes Eingabeformat festlegen, aber Sie stellen dem durchschnittlichen Benutzer damit ein sehr ungewohntes Eingabeelement zur Verfügung.

Mit regulären Ausdrücken können Sie leicht überprüfen, ob der eingegebene Ausdruck den Vorgaben entspricht, und den Benutzer gegebenenfalls auf Eingabefehler aufmerksam machen.

Parsen von Zeichenketten

Die Vielfalt der bei regulären Ausdrücken zur Verfügung stehenden Platzhalter reicht aus, um auch völlig unkonventionell formatierte Texte so hinzubiegen, wie man sie haben möchte. Für das Einlesen und Umwandeln von Daten anderer Formate sind reguläre Ausdrücke gut geeignet.

Die Objektbibliothek

Für die Verwendung von regulären Ausdrücken in Access ist die Einbindung einer Objektbibliothek erforderlich. Diese heißt Microsoft VBScript Regular Expressions x.0 und steht auf Ihrem Rechner zur Verfügung, wenn Sie entweder den Windows Scripting Host oder den Internet Explorer ab Version 5.5 installiert haben.

Den Verweis auf die Bibliothek setzen Sie wie üblich durch den Aufruf des Dialogs Verweise über den Menüeintrag Extras/Verweise und anschließende Auswahl des gewünschten Eintrags (s. Abb. 1).

Abb. 1: Setzen des Verweises auf die gewünschte Bibliothek

Anschließend stehen das Objekt RegExp sowie seine Eigenschaften und Methoden in Access zur Verfügung.

Anwendung des
RegExp-Objektes

In den nachfolgenden Beispielen erfahren Sie auf anschauliche Weise, wie Sie das RegExp-Objekt verwenden können und welche Methoden und Eigenschaften dabei zum Einsatz kommen.

Deklaration und Instanzierung

Mit den folgenden beiden Anweisungen erstellen und füllen Sie die Objektvariable objRegExp mit dem gewünschten Objekt:

Dim objRegExp As RegExp

Set objRegExp = New RegExp

Public Function Suche(strText As String, _
    strSuchbegriff As String) As Boolean

    Dim objRegexp As RegExp

    Set objRegexp = New RegExp

    objRegexp.IgnoreCase = True

    objRegexp.Pattern = strSuchbegriff

    Suche = objRegexp.Test(strText)

End Function

Quellcode 1

Public Function SucheMitPosition(strText As String, _
    strSuchbegriff As String) As Integer

    Dim objRegexp As RegExp

    Dim objMatch As Match

    Dim objMatchCollection As MatchCollection

    Set objRegexp = New RegExp

    objRegexp.IgnoreCase = True

    objRegexp.Pattern = strSuchbegriff

    objRegexp.Global = True

    Set objMatchCollection = objRegexp.Execute(strText)

    For Each objMatch In objMatchCollection

        Debug.Print objMatch.FirstIndex, _
            objMatch.Length, objMatch.Value

    Next objMatch

End Function

Quellcode 2

Wenn Sie nun den Objektnamen gefolgt von einem Punkt in den VBA-Editor eingeben, erhalten Sie einen Überblick über die zur Verfügung stehenden Methoden und Eigenschaften
(s. Abb. 2).

Abb. 2: Methoden- und Eigenschaftsübersicht per IntelliSense

Einfache Suche

Die Funktion aus Quellcode 1 führt eine einfache Suche nach einem bestimmten Suchbegriff in einer Zeichenkette durch. Ist die Suche erfolgreich, gibt die Funktion den Wert True zurück, ansonsten den Wert False.

Mit der Eigenschaft IgnoreCase legen Sie fest, ob die Suche Groß- und Kleinschreibung berücksichtigen soll.

Der Eigenschaft Pattern weist die Funktion den im Funktionsaufruf übergebenen Suchausdruck strSuchbegriff zu.

Die Methode Test führt die eigentliche Suche aus. Sie enthält als Parameter den zu durchsuchenden Text.

Suche mit Positionsangabe

In vielen Fällen ist es interessant zu wissen, an welcher Position im Text der Suchbegriff gefunden wurde.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.