Validierung von Daten

André Minhorst, Duisburg

Die Konsistenz einer Datenbank lässt sich nur durch eine entsprechende Validierung beim Anlegen und ändern von Daten erhalten. Dazu stellt Access einiges an eingebauter Funktionalität zur Verfügung: zum Beispiel die Gültigkeitsregeln und Gültigkeitsmeldungen von Tabellenfeldern, Tabellen und Formularfeldern, mit denen sich eine Menge Fehleingaben ausschließen lässt. Wer aber den Benutzern seiner Anwendung in jeder Situation zur Seite stehen möchte, kommt um einige Handarbeit nicht herum. Wie Sie Ihre Datenbankanwendung mit einer professionellen Validierung versehen, erfahren Sie in diesem Beitrag.

Der freien Enzyklopädie unter http://www.wikipedia.de ist folgender Kernsatz zu entnehmen: “In der Softwaretechnik bezeichnet Validierung oder Plausibilisierung (auch Sanity Check genannt) die Kontrolle eines konkreten Wertes darauf, ob er zu einem bestimmten Datentyp gehört oder in einem vorgegebenen Wertebereich oder einer Wertemenge liegt.”

Weiterhin findet man dort noch eine “Goldene Regel”. Diese lautet “Never trust the user” (deutsch: Traue dem Benutzer niemals). Beides zusammen definiert den einen Teil des hier behandelten Themas: überprüfen Sie jede Eingabe der Benutzer, selbst wenn diese noch so trivial erscheint. Aber es gibt noch einen Punkt, dem dieser Beitrag besondere Beachtung schenkt: Wenn der Benutzer die “Goldenen Regel” durch Fehleingaben rechtfertigt, dann gehen Sie auch noch einen Schritt weiter und weisen ihn in angemessener Weise darauf hin: mit einer aussagekräftigen Meldung.

Dem einleitenden Kapitel des vorliegenden Beitrags bleibt nur noch die Aufgabe, ein wenig Appetit auf die folgenden Kapitel zu machen: Sie erfahren, wie Sie Gültigkeitsprüfungen auf Tabellenebene festlegen können, welche Möglichkeiten es dazu in Formularen gibt und welche Vor- und Nachteile die unterschiedlichen Varianten mit sich bringen.

Die einfachste und grundlegendste Validierung lässt sich über den Entwurf einer Tabelle festlegen.

Dazu gibt es verschiedene Möglichkeiten:

  • Auswahl des Datentyps: Legt die Art des Inhalts fest
  • Die Tabelleneigenschaften Eingabe erforderlich/Leere Zeichenfolge: Legt fest, ob eine Eingabe erfolgen muss
  • Die Gültigkeitsregel: Legt differenzierte Anforderungen fest.
  • Datentyp

    Mit der Auswahl eines Datentyps für ein Feld haben Sie schon eine Vorauswahl für die einzugebenden Daten getroffen. Mit Text- und Memofeldern sind Sie noch am flexibelsten, da hier alle möglichen Zeichenketten unterkommen, aber mit Datums- oder den unterschiedlichen Zahlenformaten schränken Sie den Kreis der einzugebenden Daten schon stark ein.

    Wenn Sie nun beispielsweise den Datentyp “Datum/Zeit” für ein Tabellenfeld festlegen und eine Zeichenkette in dieses Feld eingeben, erscheint folgende Meldung: “Sie haben einen Wert eingegeben, der für dieses Feld nicht zulässig ist.” Das ist im Rahmen, wenn der Benutzer aus Versehen einen falschen Wert eingegeben hat und weiß, wie das Datum aufgebaut sein muss. Vielleicht haben Sie es aber auch mit einem DAU zu tun und dieser lässt sich die denkbar wildeste Variante von Datumsformat einfallen und ist sich sicher, das er definitiv nicht schuld an diesem Eingabefehler sein kann. In dem Fall wäre ein Hinweis auf das korrekte Format der einzugebenden Daten sicher wertvoll.

    In Tabellen lässt sich bei einer nicht dem Datentyp entsprechenden Eingabe keine andere Eingabe herausholen, in Formularen aber – und hier findet die Bearbeitung der Daten normalerweise statt – lässt sich eine alternative Fehlermeldung präsentieren. Dazu jedoch später mehr.

    Erforderliche Eingaben und leere Zeichenfolgen

    Mit diesen beiden Eigenschaften lassen sich ebenfalls grundlegende Validierungsregeln festlegen. Wenn die Eigenschaft Eingabe erforderlich den Wert Ja hat, muss der Benutzer für dieses Feld auf jeden Fall einen Wert eingeben.

    Bei diesem Wert kann es sich, wenn die Eigenschaft Leere Zeichenfolge ebenfalls den Wert Ja hat, auch um eine leere Zeichenfolge handeln – ansonsten sonst muss man mindestens ein Zeichen mit Ausnahme des Leerzeichens dort eintragen.

    Hat die Eigenschaft Eingabe erforderlich den Wert Nein, muss der Benutzer keinen Wert für dieses Feld eingeben – der Wert des Feldes bleibt dann Null, soweit kein anderer Standardwert vorgegeben ist. Auch hier wirkt sich der Wert der Eigenschaft Leere Zeichenfolge wieder aus: Steht der auf Ja, können Sie hier Leerzeichen eingeben, sonst ist das nicht möglich.

    Gültigkeitsregeln auf Feldebene

    Flexibler als die beiden vorher genannten Möglichkeiten zum Validieren sind die Gültigkeitsregeln. Für die Festlegung der Vergleichsmuster können Sie beliebige Ausdrücke bestehend aus einem Vergleichoperator und einem Vergleichswert mit entsprechenden Verknüpfungsoperatoren zusammensetzen.

    Zur Festlegung einer Gültigkeitsregel wählen Sie einfach das Feld aus, dessen Inhalt einem bestimmten Muster entsprechen soll, und verwenden die Eigenschaft Gültigkeitsregel zum Festlegen des Musters (siehe Bild 1). Im Beispiel soll der Inhalt des Feldes einfach nicht Null sein. Das ließe sich auch mit der Eigenschaft Eingabe erforderlich erreichen, allerdings hat diese Variante einen entscheidenden Nachteil, der später zur Sprache kommen wird.

    Die Eigenschaft Gültigkeitsmeldung gibt an, welche Meldung Access anzeigen soll, wenn die Gültigkeitsregel beim Speichern eines Datensatzes nicht erfüllt ist.

    Bild 1: Festlegen einer Validierung per Tabellenentwurf

    Das Verhalten können Sie ganz einfach testen, indem Sie einen neuen Datensatz für die Tabelle anlegen und diesen speichern, ohne einen Wert für das Feld Vorname eingegeben zu haben. Es erscheint ein Meldungsfenster mit der eingestellten Nachricht (siehe Bild 2).

    Für die Eigenschaft Gültigkeitsregel lassen sich beliebige Ausdrücke eingeben. Wenn Sie wie im vorliegenden Fall ein Textfeld verwenden, könnten Sie beispielsweise nach Ausdrücken eines bestimmten Formats verlangen, indem Sie den Like-Operator und einen Vergleichswert mit Platzhaltern wie Sternchen (*) und Fragezeichen () verwenden. Der folgende Ausdruck würde beispielsweise beliebige Namen akzeptieren, die mit A beginnen:

    Like ''a*''

    Sie könnten auch einen Bereich für ein einzugebendes Datum damit festlegen. Der folgende Ausdruck würde beispielsweise alle Datumsangaben akzeptieren, die im Jahr 2005 liegen:

    >= #1/1/2005# And <=#31/12/2005#

    Bild 2: Gültigkeitsmeldung bei inkorrekter Eingabe

    Bild 3: Validierung auf Datensatzebene

    Gültigkeitsregeln auf Datensatzebene

    Neben einzelnen Feldern können Sie auch komplette Datensätze einer Validierung per Gültigkeitsregel unterziehen. Damit lassen sich etwa voneinander abhängige Feldinhalte prüfen.

    Um eine Gültigkeitsprüfung auf Datensatzebene durchzuführen, zeigen Sie zunächst das Eigenschaftsfenster der Tabelle in der Entwurfsansicht an. Dort finden Sie ebenfalls die beiden Eigenschaften Gültigkeitsregel und Gültigkeitsmeldung. Eine sinnvolle Anwendung ist beispielsweise die Prüfung eines Benutzernamens und eines Kennworts aus einer Benutzertabelle auf Gleichheit. Um allzu risikobereite Benutzer zur Auswahl eines “richtigen” Kennworts zu veranlassen, vergleichen Sie einfach die Inhalte der Felder Benutzername und Kennwort miteinander und geben bei Gleichheit eine entsprechende Meldung aus (siehe Bild 3).

    Wichtig ist hier, dass die Gültigkeitsregel nicht bereits beim Verlassen eines der betroffenen Felder herangezogen wird, sondern erst beim Speichern des Datensatzes.

    Validierung auf Tabellenebene in Formularen behandeln

    Wenn der Benutzer eine Eingabe vornimmt, die nicht dem gültigen Datentyp entspricht, die Regeln Eingabe erforderlich und Leere Zeichenfolge übergeht oder die Gültigkeitsregel nicht berücksichtigt, erscheint direkt beim Verlassen des betreffenden Feldes der Tabelle eine entsprechende Meldung.

    Wenn Sie ein Formular verwenden, das über die Datenherkunft an eine Tabelle mit solchen Validierungen gebunden ist, werden Datentyp, Gültigkeits- und sonstige Regeln genau so durchgesetzt wie beim direkten Bearbeiten der Tabelle wie in den obigen Beispielen. Bild 4 zeigt ein Beispiel: Die übereinstimmung von Benutzername und Kennwort erkennt Access sofort und zeigt die entsprechende Gültigkeitsmeldung an.

    Vor- und Nachteile

    Aus der Verwendung der Validierung auf Tabellenebene ergeben sich Vor- und Nachteile, die nachfolgend aufgeführt sind.

    Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

    TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

    Schreibe einen Kommentar