Betrifft: Access ab Version 95, Beispiele für Gültigkeitsregeln
Zu den wichtigen Aufgaben einer Datenbank gehört, fehlerhafte Daten zurückzuweisen, um nur zuverlässige Informationen zu speichern. Wer einmal mit Hand ausgefüllte Formulare geprüft hat, weiß mit welcher kreativen Freiheit die Benutzer manchmal Eingaben machen.
Access hat mehrere Möglichkeiten, Eingaben zu prüfen, die unterste Ebene stellen dabei die Gültigkeitsregeln dar. Dabei gibt es mehrere Möglichkeiten, Gültigkeitsregeln anzuwenden:
In Tabellen auf der Ebene eines einzelnen Tabellenfeldes. Damit lassen sich Werte einzelner Tabellenfelder auf Richtigkeit überprüfen.
In Tabellen auf Ebene des Datensatzes. Damit lassen sich beim Speichern des Datensatzes Werte verschiedener Felder gegeneinander prüfen. (siehe unten)
In Formularen (auch ungebundenen) über die Eigenschaften jedes Steuerelementes.
In der QBE-Ansicht von Abfragen, allerdings dient hier die Gültigkeitsregel als Filter, der vorhandene Datensätze nur dann zur Anzeige weitergibt, wenn sie der Gültigkeitsregel entsprechen.
Speziell bei Formularen betreffen die hier beispielhaft vorgestellten Gültigkeitsregeln vor allem Text- und Kombinationsfelder.
Bei Tabellen und Formularen finden sich bei der Felddefinition bzw. in den Steuerelemeteigenschaften die beiden Eigenschaften 'Gültigkeitsregel' und 'Gültigkeitsmeldung'. Die Tabelle eignet sich dabei aus mehreren Gründen besonders, um Gültigkeitsregeln zu hinterlegen:
Die Syntax für die Gültigkeitsregel ist die gleiche, wie man sie in der QBE-Ansicht für die Erstellung von Abfragen verwendet. Leider hat dies auch einige Nachteile:
LEFT
, TRIM
…) nicht anwendbar.Beim Aufstellen von Gültigkeitsregeln sollte man auf diese Punkte achten:
Oder Ist Null
anfügt, dann kann der
Datensatz auch leer bleiben.Nicht immer wird sich eine Gültigkeitsregel finden, die genau alle falschen Eingaben zurückweist. Aber besser eine Gültigkeitsregel, die einige Fehler erkennt, als gar keine Gültigkeitsregel.
Bestände |
Wenn man die (Lager-)Bestände in einer Tabelle verwaltet, kann die Menge eines Artikels im Lager nur 0 oder positiv sein. Die Gültigkeitsregel lautet daher ganz einfach:
Hier ist es außerdem zweckmäßig, den Standardwert auf 0 einzustellen, damit kein Feld mit NULL gefüllt wird. Wenn dagegen die NULL zugelassen werden soll, lautet die Gültigkeitsregel
|
Telefonnummern |
Telefonnummern bestehen zwar aus Zahlen, dürfen üblicherweise aber auch einige Zeichen enthalten, insbesondere + ( ) - / und das Leerzeichen als Trennzeichen. Die zugehörige Gültigkeitsregel lautet:
Vorsicht: Das - hat innerhalb von [ ] eine besondere Funktion, nämlich einen Bereich anzugeben (z.B. 0-9). Wenn es nicht als Bereichsangabe interpretiert werden soll, muss es ans Ende gestellt werden ! |
Bankleitzahlen |
Deutsche Bankleitzahlen sind laut Bundesbank vom Standort des Kreditinstituts abhängig und müssen zwischen 10000000 und 89999999 liegen:
Die Regel lässt entweder ein leeres Feld zu ( |
Kontonummern |
Kontonummern sind maximal 10-stellig, sie müssen zwischen 0 und 9999999999 liegen:
Speziell im Fall der Kontonummer reicht der Datentyp 'Long' nicht mehr aus, um alle möglichen Kontonummern darzustellen. Es empfiehlt sich beispielsweise der Datentyp 'Währung', wobei allerdings die Formatierung des Feldes im Tabellenentwurf auf Festkommazahl ohne Nachkommastellen geändert werden muss, da sonst das Währungssymbol an die Kontonummer angehängt wird. |
Datum I |
Bei Datumsangaben, wie z.B. Geburtsdaten empfiehlt sich zu prüfen, ob das Datum in der Vergangenheit liegt:
Die Funktion |
Datum II |
Die Julianische Tageszählung im militärischen Bereich gibt das Datum als
vierstellige Zahl der Form JTTT an. Die erste Ziffer (J) entspricht der letzten Ziffer des
Jahres und die übrigen Ziffern (TTT) sind die fortlaufende Zählung der Tage im
Jahr. So wird der 5.01.1996 als 6005 geschrieben, der 31.12.99 wird als 9365 geschrieben.
Ein ungerades Jahr kann keinen Schalttag haben, daher darf es höchstens 365 Tage haben. Bei geraden Jahren ist dies nicht sicher, ohne Kenntnis der ganzen Jahreszahl kann man aber nicht bestimmen, ob das gerade Jahr 365 oder 366 Tage hat. Immerhin sichert diese Gültigkeitsregel gegen die meisten Fehler ab. |
Alter |
Wenn nur Personen ab 18 Jahren in die Datenbank eingetragen werden dürfen, dann müssen sie mindestens 18 Jahre × 365 Tage + 4 Schalttage = 6574 Tage alt sein:
Hierbei wurde die Anzahl der Schalttage innerhalb von 18 Jahren einfach mit 4 angenommen, obwohl einige 18-jährige auch 5 Schalttage erlebt haben. Doch dies reicht für einfache Zwecke sicher aus. Wenn aber das Datum auf den Tag genau überprüft werden muss, weil es z.B. um das Mindestalter für den Führerschein oder die Geschäftsfähigkeit geht, dann muss die Gültigkeitsregel exakt definiert werden:
|
eMail-Adressen |
eMail-Adressen dürfen nur Zeichen a…z, A…Z und 0…9 und die
drei Sonderzeichen . _ - enthalten. Außerdem muss eine eMail Adresse immer ein @
enthalten. Dies berücksichtigt man durch die Bedingung Nach dem @ kommt der Name einer Domain und einer Topleveldomain, die durch einen Punkt
getrennt werden. Dies wird durch
Warnung 1: Access hat ein massives Problem mit dem deutschen ß. Das ß wird als ss erkannt, so dass der Ausschluß von ß auch den Eintrag von eMail-Adressen mit ss verhindern würde. Da eMail-Adressen weltweit eindeutig sind, empfiehlt es sich u.U. einen eindeutigen Index auf das Feld zu legen, damit nicht der gleiche eMail-Name zwei Empfängern zugeordnet wird. Dies ist besonders wichtig, wenn man allgemeine Post (= Newsletter, Werbung) via eMail verschicken will, damit ein Empfänger nicht mit mehreren eMails belästigt wird. Warnung 2: Als Datentyp für die eMail-Adresse wird ein Textfeld vorausgesetzt. Hyperlink-Felder können so nicht abgeprüft werden, da hier die Adressen aus mehreren Bestandteilen aufgebaut sein können, die nicht das Format einer eMail-Adresse haben müssen. |
Datensatzprüfung auf Tabellenebene |
Das folgende Beispiel zeigt eine Gültigkeitsregel auf Tabellenebene, d.h. sie wird
erst geprüft, wenn der Datensatz als Ganzes gespeichert werden soll. Dies hat den
Vorteil, dass nun alle Felder belegt sind und gegeneinander geprüft werden
können.
Als Beispiel soll eine Tabelle von Vereinsmitgliedern dienen, welche die Eintritts- und Austrittsdaten je Mitglied speichert. Hier darf das Austrittsdatum natürlich nicht vor dem Eintrittsdatum liegen. Wenn die Felder [Eintritt] und [Austritt] heißen und vom Typ Datum sind, dann lautet die Gültigkeitsregel
Nullwerte in den Feldern [Eintritt] und [Austritt] werden bei dieser Regel nicht beanstandet. Dies macht deshalb Sinn, weil bei ungekündigten Mitgliedern kein Austrittsdatum angegeben wird. Wenn das Eintrittsdatum angegeben werden muß, hat man zwei Möglichkeiten: Erstens diese Gültigkeitsregel auf Tabellenebene erweitern oder zweitens die Eigenschaft des Tabellenfeldes [Eintritt] auf 'Eingabe erforderlich' setzen - dies ist die bessere Wahl. |