Wenn man die möglichen Werte für ein Tabellenfeld einschränken möchte, kann man dies auf verschiedene Arten tun. Einige davon finden wir bereits in der Entwurfsansicht von Tabellen. Hier gibt es zunächst die Felddatentypen, die sicherstellen, dass beispielsweise nur Zahlen, Datumsangaben oder Texte in einem Feld landen. Mit der Eigenschaft Feldgröße können wir die Daten weiter einschränken, indem wir zum Beispiel die Anzahl der Zeichen in einem Textfeld begrenzen. Möchte man die Möglichkeiten weiter einschränken, kann man die Gültigkeitsregeln nutzen. Damit legen wir bestimmte Regeln für die eingegebenen Inhalte fest. Hält der Benutzer sich nicht daran, können wir eine entsprechende Meldung anzeigen. Das Spannende ist, dass sich diese Gültigkeitsregeln nicht nur auf einzelne Felder beziehen können, sondern dass wir sie auch auf Datensatzebene nutzen können – indem wir beispielsweise eine Regel definieren, dass der Wert von Feld A nicht größer sein darf als der von Feld B. Wie das alles gelingt, zeigt der vorliegende Artikel!
Beispieldatenbank
Die Beispiele dieses Artikels findest Du in der Datenbank 2206_TabellenBasics_Gueltigkeitsregeln.accdb.
Gültigkeitsregeln für einzelne Felder
Die einfachste Möglichkeit für die Festlegung einer Gültigkeitsregel ist die für ein einzelnes Feld.
Hier sind einige Beispiele:
- Einschränkung des Bereichs von Zahlenfeldern, zum Beispiel größer als 100 oder zwischen 1 und 10
- Einschränkung von Datumsfeldern, zum Beispiel Datum muss größer als das aktuelle Datum sein
- Einschränkung der Länge von Texten, sodass beispielsweise mindestens fünf Zeichen eingegeben werden müssen
Zahlenfelder einschränken
Mit Hilfe einer Gültigkeitsregel können wir beispielsweise festlegen, dass ein Feld einen Wert größer als 0 haben soll. Ein praktisches Beispiel ist das Feld Menge der Tabelle tblBestellpositionen der Beispieldatenbank. Dieses sollte immer einen Wert größer 0 aufweisen.
Um dies einzurichten, zeigen wir die Tabelle in der Entwurfsansicht an. Hier finden wir für das Feld Menge (und auch für alle anderen Felder) die beiden Eigenschaften Gültigkeitsregel und Gültigkeitsmeldung vor.
Um zu verhindern, dass der Benutzer den Wert 0 für das Feld Menge eingeben kann, legen wir für die Eigenschaft Gültigkeitsregel den Wert >0 und für Gültigkeitsregel den folgenden Wert fest:
Die Menge muss mindestens 1 betragen.
Der Tabellenentwurf sieht anschließend wie in Bild 1 aus.
Bild 1: Festlegen von Gültigkeitsregel und -meldung
Um die Gültigkeitsregel auszuprobieren, wechseln wir nun in die Datenblattansicht und geben für einen Datensatz den Wert 0 im Feld Menge ein. Beim Versuch, den Datensatz zu speichern, erscheint die Meldung aus Bild 2.
Bild 2: Die Gültigkeitsregel funktioniert.
Nach einem Klick auf OK erhalten wir die Möglichkeit, einen anderen Wert für das Feld Menge einzugeben, wir können den Datensatz aber nicht speichern, ohne einen gültigen Wert in das Feld einzufügen.
Angabe von Zahlenbereichen
Auf die gleiche Weise können wir auch Bereiche angeben. Im folgenden Beispiel haben wir für das Feld Menge nachträglich die Gültigkeitsregel >=1 und <=10 angegeben. Das Feld darf also alle Werte zwischen 1 und 10 enthalten. Allerdings haben wir bereits einige Datensätze zur Tabelle hinzugefügt, und mindestens einer ist größer als 10.
Also erscheint beim Versuch, die Tabelle mit dieser neuen Gültigkeitsregel zu speichern, die Meldung aus Bild 3. Genau genommen erscheint diese Meldung sogar schon, wenn der Benutzer nur den Fokus auf ein anderes Feld im gleichen Datensatz verschieben möchte.
Bild 3: Meldung, wenn bei einer Änderung die Feldwerte nicht mehr gültig wären
Wie wir der Meldung entnehmen können, hat Access hier eigenständig einen Test der vorhandenen Daten auf die Gültigkeitsregel gestartet.
Wir können diesen an dieser Stelle abbrechen und haben zwei Möglichkeiten:
- Wir passen die Gültigkeitsregel so an, dass sie alle vorhandenen Daten umfasst.
- Wir verwerfen die Gültigkeitsregel zunächst, ändern die Daten so, dass sie der geplanten Gültigkeitsregel entsprechen und legen die Gültigkeitsregel dann erneut fest.
Gültigkeitsregel für Datumsangaben
Auch Datumsangaben lassen sich mit Gültigkeitsregeln einschränken. Im Beispiel aus Bild 4 wollen wir dafür sorgen, dass für das Feld BestelltAm keine Werte eingegeben werden, die vor dem 1.1.2022 liegen. Das Datum ist hier in der gleichen Schreibweise anzugeben wir bei Vergleichswerten für Datumsfelder in Abfragen, also in Rauten eingefasst: #01.01.2022#.
Bild 4: Gültigkeitsregel für Datumsangaben
Auch bei Datumswerten können wir, wie bei Zahlen auch, mit Datumsbereichen arbeiten. Diese können wir wie folgt angeben:
>=#01.01.2020# AND <= #01.01.2023#
Es funktioniert auch:
Zwischen #01.01.2020# Und #01.01.2023#
Funktionen in der Gültigkeitsregel
Bei Datumsangaben kann es interessant sein, Funktionen wie die zum Ermitteln des aktuellen Datums zu nutzen. Wenn wir beispielsweise wollen, dass keine Bestelldaten eingegeben werden können, die in der Vergangenheit liegen, gelingt das wie in Bild 5.
Bild 5: Datum muss größer oder gleich dem aktuellen Datum sein
Das funktioniert auch für die Eingabe von Daten. Wenn wir aber eine Gültigkeitsregel wie >=Datum() neu zu einem Datumsfeld einer Tabelle hinzufügen, das bereits ältere Datumsangaben enthält, erscheint eine Meldung, die auf die Ungültigkeit bereits vorhandener Daten in Bezug auf die neue Gültigkeitsregel hinweist (siehe Bild 6). Diese wird jedoch nur einmalig angezeigt. Wenn Du hier auf Ja klickst, werden die bisher eingegebenen und in der Vergangenheit befindlichen Daten beibehalten. Nur wenn Du für bestehende Datensätze oder in neuen Datensätzen Datumsangaben eingibst, die in der Vergangenheit liegen, wird die Gültigkeitsmeldung angezeigt.
Bild 6: Klickt man hier auf Ja, werden die Einstellungen übernommen, auch wenn die Daten nicht der Regel entsprechen.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: