window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Validieren von Benutzereingaben

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Für grundlegende Validierungsfunktion liefern Access-Tabellen und -Felder entsprechende Eigenschaften. Wer mehr will, lässt die Benutzereingabe in Formularen direkt bei der Eingabe prüfen. Wie dies funktioniert, erfahren Sie in diesem Artikel.

Beispiele

Die Beispiele dieses Artikels finden Sie in der Beispieldatenbank Access_Basics_2011_04.mdb.

Validierung

Die Validierung bei der Eingabe von Daten ist eine wichtige Funktion einer Formulars. Wenn Sie den Benutzer nach Lust und Laune Werte eingeben lassen, werden früher oder später nicht sinnvoll verwertbare Daten vorliegen – daher sollten Sie Ihren Anwendungen eine Validierung hinzufügen, die Werte nach der Eingabe prüft und gegebenenfalls auf Fehler hinweist (siehe Bild 1).

Beispiel für eine Validierungsmeldung

Bild 1: Beispiel für eine Validierungsmeldung

Validierung auf Tabellenebene

Der Artikel Tabellen entwerfen – Teil IV: Felder und ihre Eigenschaften hat bereits erläutert, wie Sie direkt im Tabellenentwurf festlegen, welche Werte für ein Feld zulässig sind und welche Meldung angezeigt werden soll, wenn der Benutzer eine ungültige Eingabe durchführt. Die dort vorgestellten Eigenschaften Gültigkeitsregel und Gültigkeitsmeldung gelten anwendungsweit. Das bedeutet, dass diese auch bei Eingaben in die Steuerelemente von Formularen, die an die entsprechenden Felder gebunden sind, funktionieren. Genau wie bei der Eingabe in die Tabellen selbst wird die Gültigkeitsregel gleich nach dem Abschließen der Eingabe und vor dem übernehmen des Wertes durchgeführt.

Dasselbe gilt für die beiden gleichnamigen Eigenschaften, die Sie im Tabellenentwurf für die Tabellenebene festlegen können (siehe Tabellen entwerfen – Teil V: Eigenschaften von Tabellen). Hier verschiebt sich der Zeitpunkt, zu dem die Regeln geprüft werden, allerdings ein wenig nach hinten: Die Prüfung findet erst nach dem Abschließen der Eingabe des Datensatzes, aber noch vor dem Speichern des Datensatzes in der Tabelle statt. Auch noch einige weitere Eigenschaften von Tabellen und ihrer Felder dienen prinzipiell der Validierung der Benutzereingaben:

  • Der Datentyp lässt nur Eingaben nach bestimmten Vorgaben zu, beispielsweise Zahl, Datum/Zeit oder Ja/Nein.
  • Die Eigenschaften Eingabe erforderlich oder Leere Zeichenfolge eines Feldes bestimmen, ob ein Wert oder eine Zeichenfolge eingegeben werden muss.
  • Sogar die Eigenschaft Indiziert kann in die Validierung eingreifen, wenn Sie diese auf den Wert Ja (Ohne Duplikate) einstellen. Das Eingeben eines Wertes, der bereits in einem anderen Datensatz enthalten ist, würde dann das Speichern des Datensatzes verhindern

Sie können die Validierung jedoch auch direkt im Formular vornehmen, ohne Eigenschaften wie Gültigkeitsregel und Gültigkeitsmeldung zu verwenden. Manchmal muss man die durch diese Eigenschaften ausgelösten Effekte sogar beeinflussen, damit keine für den Benutzer unverständlichen Meldungen erscheinen.

Validierung auf Tabellen- oder Formularebene

Der Vorteil der Validierungen, die durch die Feld- und Tabelleneigenschaften ausgelöst werden, ist die Einfachheit. Sie legen fest, wann der Wert eines Feldes gültig ist und welche Meldung bei der Eingabe ungültiger Werte angezeigt werden soll. Oder Sie lassen Access einfach entsprechende Meldungen ausgeben, wenn der Benutzer einen Wert in einem eindeutigen Feld doppelt eingibt oder einen Text in ein Zahlenfeld eintippt. Im Gegensatz zu selbstdefinierten Gültigkeitsmeldungen sind diese Fehlermeldungen für Otto Normalverbraucher jedoch oft nicht leicht zu verstehen.

In vielen Fällen müssen Sie also ohnehin die eingebauten Meldungen abfangen und durch eigene Meldungen ersetzen (wie dies geschieht, erfahren Sie weiter unten). Dies erledigen Sie durch entsprechende Ereignisprozeduren im Formular. Wenn Sie gleichzeitig Gültigkeitsregeln auf Tabellen- oder Feldebene verwenden, bedeutet dies, dass Sie die Prüfung der Daten auf mehrere Bereiche der Datenbank aufteilen. Dies ist aus Gründen der Wartbarkeit der Anwendung nicht empfehlenswert. Sie sollten also entweder nur einfache Validierungen mit den Möglichkeiten des Tabellenentwurfs verwenden oder aber gleich die komplette Eingabeprüfung in die Formulare integrieren.

Wenn Sie die Validierung direkt im Formulare programmieren möchten, benötigen Sie eine oder mehrere Ereignisprozeduren, die vor oder nach der Eingabe der Daten durch den Benutzer ausgelöst werden. Grundsätzlich unterscheiden wir aber auch noch nach Eingaben auf Feld- und Datensatzebene. Wenn ein Benutzer beispielsweise einen Text in ein Datumsfeld eingibt, sollten Sie diesen direkt auf die fehlerhafte Eingabe hinweisen. Der Benutzer ist dann gedanklich noch in der Nähe des entsprechenden Feldes und kann eine Korrektur gleich vornehmen. Die andere Variante ist die Prüfung der Eingabe erst vor dem Speichern des Datensatzes. Dort müssten Sie dann alle Daten auf Richtigkeit und Vollständigkeit prüfen und den Benutzer gegebenenfalls durch eine Meldung auf eventuell fehlende Daten hinweisen.

Optimalerweise kombiniert man beide Varianten. Fehleingaben, die an Ort und Stelle erkannt werden, sollten auch gleich gemeldet werden. Andere Fehleingaben kann man schlicht nicht direkt erkennen – auf ein leeres Feld etwa sollten Sie den Benutzer erst hinweisen, wenn dieser versucht, den Datensatz zu speichern. Schließlich gibt es auch noch abhängige Kriterien bei der Validierung: Wenn beispielsweise ein Feld das Eintrittsdatum und ein anderes das Austrittsdatum markiert, darf das Eintrittsdatum nicht hinter dem Austrittsdatum liegen.

Solche Zustände können Sie erst prüfen, wenn der Benutzer beide Eingaben vorgenommen hat. Dies ist in der Regel erst beim Speichern des kompletten Datensatzes der Fall, wie Sie später sehen werden. All diese Validierungen führen Sie vor dem Speichern des Datensatzes durch. Bei Prüfungen auf Feld- beziehungsweise Steuerelementebene erledigen Sie dies in einer Prozedur, die durch das Ereignis Vor Aktualisierung des entsprechenden Steuerelements durchgeführt wird. Validierungen auf Datensatzebene hingegen finden in der Ereignisprozedur Vor Aktualisierung des Formulars selbst statt.

Es gibt noch Sonderfälle wie etwa das Auftreten leerer Feldwerte, wenn die Feldeigenschaft Eingabe erforderlich den Wert Ja hat, wenn der Benutzer einen doppelten Wert in ein eindeutiges Feld eingibt et cetera. Die dadurch ausgelösten Fehler fangen Sie in der Ereignisprozedur Bei Fehler des Formulars ab – mehr dazu ebenfalls weiter unten.

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

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar