{"id":55000267,"date":"2005-04-01T00:00:00","date_gmt":"2020-05-06T15:17:56","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=267"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Validierung_von_Daten","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/","title":{"rendered":"Validierung von Daten"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/c04a0aabcf8343278c51868835e803cb\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Die Konsistenz einer Datenbank l&auml;sst sich nur durch eine entsprechende Validierung beim Anlegen und &auml;ndern von Daten erhalten. Dazu stellt Access einiges an eingebauter Funktionalit&auml;t zur Verf&uuml;gung: zum Beispiel die G&uuml;ltigkeitsregeln und G&uuml;ltigkeitsmeldungen von Tabellenfeldern, Tabellen und Formularfeldern, mit denen sich eine Menge Fehleingaben ausschlie&szlig;en l&auml;sst. Wer aber den Benutzern seiner Anwendung in jeder Situation zur Seite stehen m&ouml;chte, kommt um einige Handarbeit nicht herum. Wie Sie Ihre Datenbankanwendung mit einer professionellen Validierung versehen, erfahren Sie in diesem Beitrag.<\/b><\/p>\n<p>Der freien Enzyklop&auml;die unter http:\/\/www.wikipedia.de ist folgender Kernsatz zu entnehmen: &#8222;In der Softwaretechnik bezeichnet Validierung oder Plausibilisierung (auch Sanity Check genannt) die Kontrolle eines konkreten Wertes darauf, ob er zu einem bestimmten Datentyp geh&ouml;rt oder in einem vorgegebenen Wertebereich oder einer Wertemenge liegt.&#8220;<\/p>\n<p>Weiterhin findet man dort noch eine &#8222;Goldene Regel&#8220;. Diese lautet &#8222;Never trust the user&#8220; (deutsch: Traue dem Benutzer niemals). Beides zusammen definiert den einen Teil des hier behandelten Themas: &uuml;berpr&uuml;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 &#8222;Goldenen Regel&#8220; durch Fehleingaben rechtfertigt, dann gehen Sie auch noch einen Schritt weiter und weisen ihn in angemessener Weise darauf hin: mit einer aussagekr&auml;ftigen Meldung. <\/p>\n<p>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&uuml;ltigkeitspr&uuml;fungen auf Tabellenebene festlegen k&ouml;nnen, welche M&ouml;glichkeiten es dazu in Formularen gibt und welche Vor- und Nachteile die unterschiedlichen Varianten mit sich bringen.<\/p>\n<p>Die einfachste und grundlegendste Validierung l&auml;sst sich &uuml;ber den Entwurf einer Tabelle festlegen.<\/p>\n<p>Dazu gibt es verschiedene M&ouml;glichkeiten:<\/p>\n<li>Auswahl des Datentyps: Legt die Art des Inhalts fest<\/li>\n<li>Die Tabelleneigenschaften Eingabe erforderlich\/Leere Zeichenfolge: Legt fest, ob eine Eingabe erfolgen muss<\/li>\n<li>Die G&uuml;ltigkeitsregel: Legt differenzierte Anforderungen fest.<\/li>\n<h2>Datentyp<\/h2>\n<p>Mit der Auswahl eines Datentyps f&uuml;r ein Feld haben Sie schon eine Vorauswahl f&uuml;r die einzugebenden Daten getroffen. Mit Text- und Memofeldern sind Sie noch am flexibelsten, da hier alle m&ouml;glichen Zeichenketten unterkommen, aber mit Datums- oder den unterschiedlichen Zahlenformaten schr&auml;nken Sie den Kreis der einzugebenden Daten schon stark ein.<\/p>\n<p>Wenn Sie nun beispielsweise den Datentyp &#8222;Datum\/Zeit&#8220; f&uuml;r ein Tabellenfeld festlegen und eine Zeichenkette in dieses Feld eingeben, erscheint folgende Meldung: &#8222;Sie haben einen Wert eingegeben, der f&uuml;r dieses Feld nicht zul&auml;ssig ist.&#8220; Das ist im Rahmen, wenn der Benutzer aus Versehen einen falschen Wert eingegeben hat und wei&szlig;, wie das Datum aufgebaut sein muss. Vielleicht haben Sie es aber auch mit einem DAU zu tun und dieser l&auml;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&auml;re ein Hinweis auf das korrekte Format der einzugebenden Daten sicher wertvoll.<\/p>\n<p>In Tabellen l&auml;sst sich bei einer nicht dem Datentyp entsprechenden Eingabe keine andere Eingabe herausholen, in Formularen aber &#8211; und hier findet die Bearbeitung der Daten normalerweise statt &#8211; l&auml;sst sich eine alternative Fehlermeldung pr&auml;sentieren. Dazu jedoch sp&auml;ter mehr.<\/p>\n<h2>Erforderliche Eingaben und leere Zeichenfolgen<\/h2>\n<p>Mit diesen beiden Eigenschaften lassen sich ebenfalls grundlegende Validierungsregeln festlegen. Wenn die Eigenschaft Eingabe erforderlich den Wert Ja hat, muss der Benutzer f&uuml;r dieses Feld auf jeden Fall einen Wert eingeben.<\/p>\n<p>Bei diesem Wert kann es sich, wenn die Eigenschaft Leere Zeichenfolge ebenfalls den Wert Ja hat, auch um eine leere Zeichenfolge handeln &#8211; ansonsten sonst muss man mindestens ein Zeichen mit Ausnahme des Leerzeichens dort eintragen.<\/p>\n<p>Hat die Eigenschaft Eingabe erforderlich den Wert Nein, muss der Benutzer keinen Wert f&uuml;r dieses Feld eingeben &#8211; 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&ouml;nnen Sie hier Leerzeichen eingeben, sonst ist das nicht m&ouml;glich.<\/p>\n<h2>G&uuml;ltigkeitsregeln auf Feldebene<\/h2>\n<p>Flexibler als die beiden vorher genannten M&ouml;glichkeiten zum Validieren sind die G&uuml;ltigkeitsregeln. F&uuml;r die Festlegung der Vergleichsmuster k&ouml;nnen Sie beliebige Ausdr&uuml;cke bestehend aus einem Vergleichoperator und einem Vergleichswert mit entsprechenden Verkn&uuml;pfungsoperatoren zusammensetzen.<\/p>\n<p>Zur Festlegung einer G&uuml;ltigkeitsregel w&auml;hlen Sie einfach das Feld aus, dessen Inhalt einem bestimmten Muster entsprechen soll, und verwenden die Eigenschaft G&uuml;ltigkeitsregel zum Festlegen des Musters (siehe Bild 1). Im Beispiel soll der Inhalt des Feldes einfach nicht Null sein. Das lie&szlig;e sich auch mit der Eigenschaft Eingabe erforderlich erreichen, allerdings hat diese Variante einen entscheidenden Nachteil, der sp&auml;ter zur Sprache kommen wird.<\/p>\n<p>Die Eigenschaft G&uuml;ltigkeitsmeldung gibt an, welche Meldung Access anzeigen soll, wenn die G&uuml;ltigkeitsregel beim Speichern eines Datensatzes nicht erf&uuml;llt ist.<\/p>\n<p><IMG height=\"363\" src=\"..\/fileadmin\/_temp_\/{9E61AA36-A616-44F0-B606-5A8DAA310614}\/pic001.png\" width=\"445\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Festlegen einer Validierung per Tabellenentwurf<\/span><\/b><\/p>\n<p>Das Verhalten k&ouml;nnen Sie ganz einfach testen, indem Sie einen neuen Datensatz f&uuml;r die Tabelle anlegen und diesen speichern, ohne einen Wert f&uuml;r das Feld Vorname eingegeben zu haben. Es erscheint ein Meldungsfenster mit der eingestellten Nachricht (siehe Bild 2).<\/p>\n<p>F&uuml;r die Eigenschaft G&uuml;ltigkeitsregel lassen sich beliebige Ausdr&uuml;cke eingeben. Wenn Sie wie im vorliegenden Fall ein Textfeld verwenden, k&ouml;nnten Sie beispielsweise nach Ausdr&uuml;cken eines bestimmten Formats verlangen, indem Sie den Like-Operator und einen Vergleichswert mit Platzhaltern wie Sternchen (*) und Fragezeichen () verwenden. Der folgende Ausdruck w&uuml;rde beispielsweise beliebige Namen akzeptieren, die mit A beginnen:<\/p>\n<pre>Like ''a*''<\/pre>\n<p>Sie k&ouml;nnten auch einen Bereich f&uuml;r ein einzugebendes Datum damit festlegen. Der folgende Ausdruck w&uuml;rde beispielsweise alle Datumsangaben akzeptieren, die im Jahr 2005 liegen:<\/p>\n<pre>&gt;= #1\/1\/2005# And &lt;=#31\/12\/2005#<\/pre>\n<p><IMG height=\"278\" src=\"..\/fileadmin\/_temp_\/{9E61AA36-A616-44F0-B606-5A8DAA310614}\/pic002.png\" width=\"445\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  G&uuml;ltigkeitsmeldung bei inkorrekter Eingabe<\/span><\/b><\/p>\n<p><IMG height=\"247\" src=\"..\/fileadmin\/_temp_\/{9E61AA36-A616-44F0-B606-5A8DAA310614}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Validierung auf Datensatzebene<\/span><\/b><\/p>\n<h2>G&uuml;ltigkeitsregeln auf Datensatzebene<\/h2>\n<p>Neben einzelnen Feldern k&ouml;nnen Sie auch komplette Datens&auml;tze einer Validierung per G&uuml;ltigkeitsregel unterziehen. Damit lassen sich etwa voneinander abh&auml;ngige Feldinhalte pr&uuml;fen.<\/p>\n<p>Um eine G&uuml;ltigkeitspr&uuml;fung auf Datensatzebene durchzuf&uuml;hren, zeigen Sie zun&auml;chst das Eigenschaftsfenster der Tabelle in der Entwurfsansicht an. Dort finden Sie ebenfalls die beiden Eigenschaften G&uuml;ltigkeitsregel und G&uuml;ltigkeitsmeldung. Eine sinnvolle Anwendung ist beispielsweise die Pr&uuml;fung eines Benutzernamens und eines Kennworts aus einer Benutzertabelle auf Gleichheit. Um allzu risikobereite Benutzer zur Auswahl eines &#8222;richtigen&#8220; 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).<\/p>\n<p>Wichtig ist hier, dass die G&uuml;ltigkeitsregel nicht bereits beim Verlassen eines der betroffenen Felder herangezogen wird, sondern erst beim Speichern des Datensatzes.<\/p>\n<h2>Validierung auf Tabellenebene in Formularen behandeln<\/h2>\n<p>Wenn der Benutzer eine Eingabe vornimmt, die nicht dem g&uuml;ltigen Datentyp entspricht, die Regeln Eingabe erforderlich und Leere Zeichenfolge &uuml;bergeht oder die G&uuml;ltigkeitsregel nicht ber&uuml;cksichtigt, erscheint direkt beim Verlassen des betreffenden Feldes der Tabelle eine entsprechende Meldung.<\/p>\n<p>Wenn Sie ein Formular verwenden, das &uuml;ber die Datenherkunft an eine Tabelle mit solchen Validierungen gebunden ist, werden Datentyp, G&uuml;ltigkeits- und sonstige Regeln genau so durchgesetzt wie beim direkten Bearbeiten der Tabelle wie in den obigen Beispielen. Bild 4 zeigt ein Beispiel: Die &uuml;bereinstimmung von Benutzername und Kennwort erkennt Access sofort und zeigt die entsprechende G&uuml;ltigkeitsmeldung an.<\/p>\n<h2>Vor- und Nachteile<\/h2>\n<p>Aus der Verwendung der Validierung auf Tabellenebene ergeben sich Vor- und Nachteile, die nachfolgend aufgef&uuml;hrt sind.<\/p>\n<p><!--30percent--><\/p>\n<p><IMG height=\"262\" src=\"..\/fileadmin\/_temp_\/{9E61AA36-A616-44F0-B606-5A8DAA310614}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Die Validierung per G&uuml;ltigkeitsregel auf Tabellenebene greift auch in Formularen.<\/span><\/b><\/p>\n<h3>Vorteile<\/h3>\n<p>Der gr&ouml;&szlig;te Vorteil dieser Validierungsmethode ist die globale G&uuml;ltigkeit &#8211; egal, ob Sie die Daten per Formular, VBA oder Aktionsabfrage bearbeiten, die G&uuml;ltigkeitsregeln greifen. Damit sichern Sie in jedem Fall die Konsistenz der in der Datenbank enthaltenen Daten.<\/p>\n<p><IMG height=\"110\" src=\"..\/fileadmin\/_temp_\/{9E61AA36-A616-44F0-B606-5A8DAA310614}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Mit dieser Fehlermeldung k&ouml;nnen nur wenige Benutzer etwas anfangen.<\/span><\/b><\/p>\n<h3>Nachteile<\/h3>\n<p>Die G&uuml;ltigkeitspr&uuml;fung funktioniert zwar auch per VBA, allerdings f&auml;llt die G&uuml;ltigkeitsmeldung in manchen F&auml;llen flach. Folgende Anweisung beispielsweise ruft nur eine allgemein gehaltene Fehlermeldung hervor (siehe Bild 5):<\/p>\n<pre>DoCmd.RunSQL \"INSERT INTO tblBenutzer(Benutzername, Kennwort) VALUES(''minhorst'', ''minhorst'')<\/pre>\n<li>Der zweite Nachteil ist, dass eventuelle &auml;nderungen immer auch im Tabellenentwurf n&ouml;tig sind. Das bedeutet, dass Sie bei einer in Front- und Backend aufgeteilten Datenbank das Backend beim Kunden austauschen m&uuml;ssten, nur weil etwa eine Meldung anzupassen ist. Drittens ist die Fehlermeldung f&uuml;r die meisten Benutzer nicht aussagekr&auml;ftig genug. Gerade ein gezielter Hinweis auf Fehleingaben tr&auml;gt viel zur besseren Nutzbarkeit einer Anwendung bei.<\/li>\n<li>Und schlie&szlig;lich kann die Aufteilung der die Datenhaltung betreffenden Funktionen auf mehrere Schichten (in diesem Fall auf die Benutzeroberfl&auml;che und die Datendefinition) immer zu Problemen f&uuml;hren. Sp&auml;testens wenn die enthaltenen Daten oder die Benutzerzahlen wachsen und den Wechsel auf ein anderes Backend wie die MSDE oder den Microsoft SQL Server notwendig machen, m&uuml;ssen Sie genauestens ermitteln, wo welche Businessregeln untergebracht sind, und diese anschlie&szlig;end entsprechend wieder aufbauen.<\/li>\n<p>Formulare bieten einige weitere M&ouml;glichkeiten zur Validierung von Daten. Damit lassen sich einerseits die Validierungstechniken auf Tabellenebene erg&auml;nzen, aber auch komplett ersetzen.<\/p>\n<h2>Validieren bei der Eingabe oder beim Speichern<\/h2>\n<p>Die Geister scheiden sich bei der Frage, ob man den Inhalt der Steuerelemente direkt nach der Eingabe in ein Steuerelement pr&uuml;fen sollte oder damit bis zum Speichern des Datensatzes wartet. Genau genommen l&auml;sst sich hier keine allgemeine Empfehlung geben.<\/p>\n<p>Ausschlaggebend f&uuml;r die Wahl der richtigen Validierungsstrategie ist die Ber&uuml;cksichtigung der Benutzerfreundlichkeit und der Performance. Die Performance k&ouml;nnte sich beispielsweise bemerkbar machen, wenn Sie zum Pr&uuml;fen eines Wertes immer wieder auf ein &uuml;ber das Netzwerk verbundenes Datenbankbackend zugreifen m&uuml;ssten. Dabei kommt es nat&uuml;rlich auch auf die Art des Frontends an: Wenn Sie beispielsweise eine .asp-Seite im Intranet als Frontend verwenden und den Inhalt der Felder einzeln pr&uuml;fen, ist die Netzlast schon relativ hoch. In dem Fall sollte man schon beim Abschicken der kompletten Seite validieren und dann gegebenenfalls den Benutzer zur Nachbesserung auffordern. Dabei lassen sich viele Inhalte nat&uuml;rlich schon per Skript (zum Beispiel JavaScript) direkt bei der Eingabe pr&uuml;fen, aber manchmal sind Eingaben eben mit dem bestehenden Datenbankinhalt abzugleichen, was definitiv den Kontakt zum Server erfordert.<\/p>\n<p>Da die meisten Leser aber vermutlich mit Access als Frontend (wenn &uuml;berhaupt mit aufgeteilter Datenbank) arbeiten, sollen die dortigen M&ouml;glichkeiten nun etwas genauer beleuchtet werden.<\/p>\n<h3>Validieren bei Eingabe<\/h3>\n<p>Eines direkt vorweg: Egal, ob Sie die Validierung bei der Eingabe einzelner Felder oder erst beim Speichern des Datensatzes durchf&uuml;hren: Sie m&uuml;ssen ohnehin jedes relevante Feld pr&uuml;fen und kommen in keinem der beiden F&auml;lle mit wesentlich weniger Aufwand klar. Unter Umst&auml;nden ist die Validierung sogar an beiden Stellen erforderlich.<\/p>\n<p>Das Validieren bei der Eingabe erfolgt am flexibelsten per VBA-Code. Dazu verwenden Sie die Ereigniseigenschaft Vor Aktualisierung des jeweiligen Steuerelements. Dieses Ereignis wird ausgel&ouml;st, wenn die &auml;nderung an einem Steuerelement schon abgeschlossen ist, aber bevor der neue Wert &uuml;bernommen wird.<\/p>\n<p><IMG height=\"327\" src=\"..\/fileadmin\/_temp_\/{9E61AA36-A616-44F0-B606-5A8DAA310614}\/pic006.png\" width=\"452\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Anlegen einer Ereignisprozedur<\/span><\/b><\/p>\n<p>Zum Validieren ist dieser Zeitpunkt genau richtig. Sie k&ouml;nnen pr&uuml;fen, ob der eingegebene Wert korrekt ist, den alten Wert wieder einstellen, eine Meldung anzeigen und den Fokus auf das Steuerelement mit dem unzul&auml;ssigen Wert setzen.<\/p>\n<p>Und so sieht das Ganze im Detail aus:<\/p>\n<li>&ouml;ffnen Sie das Formular in der Entwurfsansicht und klicken Sie auf das zu pr&uuml;fende Steuerelement.<\/li>\n<li>Aktivieren Sie das Eigenschaftsfenster und wechseln Sie zur Registerseite Ereignis.<\/li>\n<li>Klicken Sie dort doppelt in die Eigenschaft Vor Aktualisierung &#8211; es erscheint der Eintrag [Ereignisprozedur].<\/li>\n<li>&ouml;ffnen Sie den VBA-Editor mit einem Klick auf die neben der Eigenschaft erscheinende Schaltfl&auml;che (siehe Bild 6). (<\/li>\n<p>Im VBA-Editor erg&auml;nzen Sie den automatisch angelegten Prozedurrumpf wie in Quellcode 1.<\/p>\n<p>Die Prozedur pr&uuml;ft zun&auml;chst, ob der Inhalt des Textfeldes Vorname den Wert Null hat. Falls ja, erscheint ein Meldungsfenster mit Bitte um Eingabe eines Vornamens. Nach dem Schlie&szlig;en des Meldungsfensters setzt die Prozedur den Wert des Textfeldes zur&uuml;ck, indem sie den Aktualisierungsvorgang durch Setzen von Cancel = True beendet.<\/p>\n<p>Die Anweisung Exit Sub sorgt schlie&szlig;lich daf&uuml;r, dass die Prozedur abbricht &#8211; eventuelle weitere Validierungen sind nicht mehr relevant, wenn schon die erste ein negatives Ergebnis bringt.<\/p>\n<h3>Hinweis<\/h3>\n<p>Das Validieren von Feldinhalten mit der Vor Aktualisierung-Ereignisprozedur hat einen entscheidenden Nachteil: Wenn der Benutzer dieses Feld gar nicht ver&auml;ndert, aktiviert er auch die Validierung nicht. Daher ist eine zus&auml;tzliche beim Speichern des Datensatzes durchgef&uuml;hrte Validierung unbedingt erforderlich. <\/p>\n<pre>Private Sub Vorname_BeforeUpdate(Cancel As Integer)\r\n    If IsNull(Me!Vorname) Then\r\n        Cancel = True\r\n        MsgBox \"Bitte geben Sie einen Vornamen ein.\"\r\n        Exit Sub\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<pre>Private Sub Form_BeforeUpdate(Cancel As Integer)\r\n    If IsNull(Me!Vorname) Then\r\n        Cancel = True\r\n        MsgBox \"Bitte geben Sie einen Vornamen ein.\"\r\n        Me!Vorname.SetFocus\r\n        Exit Sub\r\n    End If\r\n    If IsNull(Me!Nachname) Then\r\n        Cancel = True\r\n        MsgBox \"Bitte geben Sie einen Nachnamen ein.\"\r\n        Me!Nachname.SetFocus\r\n        Exit Sub\r\n    End If\r\n    If IsNull(Me!AngelegtAm) Then\r\n        Cancel = True\r\n        MsgBox \"Bitte geben Sie ein g&uuml;ltiges Datum ein.\"\r\n        Me!AngelegtAm.SetFocus\r\n        Exit Sub\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<h3>Validieren beim Speichern des Datensatzes<\/h3>\n<p>Die zweite M&ouml;glichkeit, auf Formularebene zu validieren, findet beim Speichern des Datensatzes statt. Auch hier kommt die Ereigniseigenschaft Vor Aktualisierung zum Zuge &#8211; diesmal handelt es sich allerdings um die entsprechende Eigenschaft des Formulars selbst.<\/p>\n<p>Sie wird zum Beispiel ausgel&ouml;st, wenn der Benutzer zum n&auml;chsten Datensatz wechselt, den Men&uuml;eintrag Datens&auml;tze\/Datensatz speichern ausf&uuml;hrt oder einfach auf den Datensatzmarkierer klickt.<\/p>\n<p>Die ausgel&ouml;ste Prozedur sieht prinzipiell wie die aus Quellcode 1 aus, enth&auml;lt aber gegebenenfalls die Validierung der Inhalte mehrerer Steuerelemente. Au&szlig;erdem kann man nicht davon ausgehen, dass ein Feld mit ung&uuml;ltigem Inhalt noch den Fokus hat.<\/p>\n<p>Um zu pr&uuml;fen, ob die Felder Vorname und Nachname nicht leer sind und das Feld AngelegtAm ein g&uuml;ltiges Datum enth&auml;lt, k&ouml;nnen Sie beispielsweise die Prozedur aus Quellcode 2 verwenden.<\/p>\n<p>Die Prozedur hat einen Nachteil: Sie zeigt f&uuml;r jeden ung&uuml;ltigen Wert eine eigene Meldung an. Je nachdem, wie geschickt sich der Benutzer anstellt, kann das f&uuml;r ihn eine recht nervige Angelegenheit werden. Sie sollten also f&uuml;r Felder, die oft ung&uuml;ltige Daten erhalten, zus&auml;tzliche Hilfestellung geben. Dazu k&ouml;nnen Sie<\/p>\n<li>einen kurzen Hinweis neben dem Steuerelement einf&uuml;gen,<\/li>\n<li>einen Steuerelement-Tipp-Text verwenden oder<\/li>\n<li>eine Eingabehilfe wie beispielsweise ein Kalender-Steuerelement zur Eingabe von Datumsangaben verwenden.<\/li>\n<h2>Globale Validier-Funktion<\/h2>\n<p>Wie Sie in Quellcode 2 sehen, ist der Code zur Validierung eines Steuerelementinhalts immer gleich aufgebaut. Er besteht aus einer Bedingung und einigen Anweisungen, die bei Nicht-Erf&uuml;llen der Bedingung ausgef&uuml;hrt werden:<\/p>\n<li>&#8222;Canceln&#8220; des Aktualisierungsvorgangs<\/li>\n<li>Ausgeben einer Meldung<\/li>\n<li>gegebenenfalls Setzen des Fokus auf das betreffende Steuerelement<\/li>\n<pre>Private Function ValidiereNichtNull(strFeldname As String, strMeldung As String, _    strTitel As String)\r\n    ValidiereNichtNull = True\r\n    If IsNull(Me(strFeldname)) Then\r\n        ValidiereNichtNull = False\r\n        MsgBox strMeldung, vbExclamation + vbOKOnly, strTitel\r\n        Me(strFeldname).SetFocus\r\n    End If\r\nEnd Function<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<pre>Private Function ValidiereDatum(strFeldname As String, strMeldung As String, _    strTitel As String)\r\n    ValidiereDatum = True\r\n    If Not IsDate(Me(strFeldname)) Then\r\n        ValidiereDatum = False\r\n        MsgBox strMeldung, vbExclamation + vbOKOnly, strTitel\r\n        Me(strFeldname).SetFocus\r\n    End If\r\nEnd Function<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<li>Abbrechen der Prozedur, falls noch weitere Steuerelemente folgen<\/li>\n<p>Bei Formularen mit vielen Steuerelementen kann das schnell in eine Paste &#038; Copy-Orgie mit anschlie&szlig;endem Anpassen ausarten, was schnell zu Fl&uuml;chtigkeitsfehlern f&uuml;hrt.<\/p>\n<p>Einfacher gestalten Sie die Erstellung solcher Validierungsprozeduren, indem Sie die wesentliche Funkionalit&auml;t zu eigenen Funktionen zusammenfassen und in den Vor Aktualisierung-Ereignissen die jeweilige Funktion mit den entsprechenden Parametern aufrufen.<\/p>\n<p>F&uuml;r unser Beispiel aus Quellcode 2 k&ouml;nnte das so aussehen: Zuerst legen Sie eine Funktion an, die alle gemeinsamen Anweisungen der betroffenen Prozeduren enth&auml;lt. Ersetzen Sie die individuellen Elemente durch Variable, die Sie gleichzeitig im Prozedurkopf als Parameter eintragen.<\/p>\n<p>Ersetzen Sie dann die in den urspr&uuml;nglichen Funktionen enthaltenen Anweisungen durch einen Aufruf der neuen Funktion und &uuml;bergeben Sie die individuellen Bestandteile als Parameter.<\/p>\n<h3>Hinweis<\/h3>\n<p>Genaugenommen handelt es sich bei dieser Vorgehensweise um eine Refactoring-Ma&szlig;nahme. Im Beitrag Refactoring in Ausgabe 6\/2004 von Access im Unternehmen lesen Sie mehr da-r&uuml;ber. <\/p>\n<p>Den Aufbau der aufzurufenden Funktion k&ouml;nnen Sie Quellcode 3 entnehmen. Die Funktion erwartet den Feldnamen sowie die Meldung und den Titel des eventuell anzuzeigenden Meldungsfensters als Parameter.<\/p>\n<p>Die Funktion gibt den Wert True zur&uuml;ck, wenn alles in Ordnung ist, anderenfalls gibt sie die Meldung mit den &uuml;bergebenen Daten aus, setzt den Fokus auf das Feld mit dem ung&uuml;ltigen Wert und den R&uuml;ckgabewert auf False.<\/p>\n<p>Nun ben&ouml;tigen Sie aber nicht nur eine Funktion, die auf Nullwerte testet, sondern auch noch eine, die Datumswerte &uuml;berpr&uuml;ft. Das erledigt die Funktion aus Quellcode 4. Sie ist genauso aufgebaut wie die Funktion zum Pr&uuml;fen auf Nullwerte, kontrolliert aber, ob das zu pr&uuml;fende Feld ein g&uuml;ltiges Datum enth&auml;lt.<\/p>\n<pre>Private Sub Form_BeforeUpdate(Cancel As Integer)\r\n    Cancel = True\r\n    If Not ValidiereNichtNull(\"Vorname\", \"Bitte geben Sie einen Vornamen ein.\", _        \"Fehlende Daten\") Then Exit Sub\r\n    If Not ValidiereNichtNull(\"Nachname\", \"Bitte geben Sie einen Nachnamen ein.\", _        \"Fehlende Daten\") Then Exit Sub\r\n    If Not ValidiereDatum(\"AngelegtAm\", \"Bitte geben Sie ein g&uuml;ltiges Datum ein.\", _        \"Ung&uuml;ltiger Wert\") Then Exit Sub\r\n    Cancel = False\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<pre>Option Compare Database\r\nPublic Function ValidiereNichtNull(frm As Form, strFeld As String, _    strMeldung As String, strTitel As String)\r\n    ValidiereNichtNull = True\r\n    If IsNull(frm.Controls(strFeld)) Then\r\n        ValidiereNichtNull = False\r\n        MsgBox strMeldung, vbExclamation + vbOKOnly, strTitel\r\n        frm.Controls(strFeld).SetFocus\r\n    End If\r\nEnd Function\r\nPublic Function ValidiereDatum(frm As Form, strFeld As String, strMeldung As String, _    strTitel As String)\r\n    ValidiereDatum = True\r\n    If Not IsDate(frm.Controls(strFeld)) Then\r\n        ValidiereDatum = False\r\n        MsgBox strMeldung, vbExclamation + vbOKOnly, strTitel\r\n        frm.Controls(strFeld).SetFocus\r\n    End If\r\nEnd Function<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<p>Die beiden neuen Funktionen helfen nun nicht viel weiter, wenn sie nicht aufgerufen werden. Also passen Sie die Prozedur mit der urspr&uuml;nglichen Validierung aus Quellcode 2 noch an. Dazu ersetzen Sie die Bl&ouml;cke zur Validierung der einzelnen Steuerelementinhalte durch die Aufrufe der neuen Validierungsfunktionen (siehe Quellcode 5). F&uuml;r weitere zu pr&uuml;fende Steuerelemente m&uuml;ssen Sie nur noch je eine Zeile hinzuf&uuml;gen. Au&szlig;erdem werden Sie fr&uuml;her oder sp&auml;ter neue Validierungsfunktionen hinzuf&uuml;gen, die beispielsweise pr&uuml;fen, ob<\/p>\n<li>ein Datum in einem bestimmten Zeitraum liegt,<\/li>\n<li>das Datum in einem Feld kleiner oder gleich dem in einem anderen Feld ist,<\/li>\n<li>ein Feld eine Zahl enth&auml;lt,<\/li>\n<li>eine Zahl in einem bestimmten Bereich liegt<\/li>\n<li>oder ein Feld eine aus Zahlen und Buchstaben bestehende Zeichenkette enth&auml;lt.<\/li>\n<p><IMG height=\"300\" src=\"..\/fileadmin\/_temp_\/{9E61AA36-A616-44F0-B606-5A8DAA310614}\/pic007.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Anwendung der Validierungsklasse<\/span><\/b><\/p>\n<p>Unter Umst&auml;nden kommt hier eine ganze Reihe Funktionen zusammen. Da es keinen Sinn macht, die komplette Sammlung in das Klassenmodul jedes einzelnen Formulars zu kopieren, legen wir ein spezielles Klassenmodul mit den Validierungsfunktionen zusammen.<\/p>\n<p>Das Klassenmodul enth&auml;lt den Code aus Quellcode 6. Die Validierungsfunktionen sind &ouml;ffentlich, damit sie von allen Formularen aus erreicht werden k&ouml;nnen. Damit die Funktionen Zugriff auf die jeweiligen Steuerelemente haben, erwarten sie zus&auml;tzlich zum Namen des Steuerelements noch einen Objektverweis auf das Formular, in dem das Steuerelement enthalten ist.<\/p>\n<p>Um die Klasse zu verwenden, m&uuml;ssen Sie diese lediglich deklarieren und instanzieren. Bild 7 zeigt, wie es funktioniert und welchen Vorteil die Verwendung einer Klasse noch mit sich bringt: Die einzelnen Validierungsfunktionen lassen sich dank Intellisense komfortabel ausw&auml;hlen.<\/p>\n<h2>G&uuml;ltigkeitsregeln in Formularen<\/h2>\n<p>Auch f&uuml;r Steuerelemente in Formularen stehen die beiden Eigenschaften G&uuml;ltigkeitsregel und G&uuml;ltigkeitsmeldung zur Verf&uuml;gung. Sie k&ouml;nnen diese Eigenschaften genau wie im Tabellenentwurf festlegen, aber die Wirksamkeit ist dann nat&uuml;rlich auf das Formular beschr&auml;nkt. Damit ist es aber auch m&ouml;glich, die Eingabe in nicht gebundene Steuerelemente zu validieren. Es gibt allerdings keine formularweite G&uuml;ltigkeitsregel und -meldung, sodass Sie damit keine Zusammenh&auml;nge zwischen den Steuerelementinhalten pr&uuml;fen k&ouml;nnen.<\/p>\n<p>Nat&uuml;rlich k&ouml;nnen Sie G&uuml;ltigkeitsregeln auf Tabellenebene und auf Formularebene gleichzeitig verwenden. Die Regeln werden dann in folgender Reihenfolge ber&uuml;cksichtigt:<\/p>\n<li>Vor Aktualisierung-Ereignisprozedur des Steuerelements oder des Formulars (je nachdem, welches zuerst ausgel&ouml;st wird)<\/li>\n<li>G&uuml;ltigkeitsregel des Steuerelements<\/li>\n<li>G&uuml;ltigkeitsregel des Tabellenfeldes<\/li>\n<li>G&uuml;ltigkeitsregel der Tabelle<\/li>\n<p>Eine gleichzeitige Einbeziehung mehrerer Ebenen in die Validierung f&uuml;hrt allerdings zu einer Erschwerung der Wartung.<\/p>\n<p>Validierung ist auf verschiedenen Ebenen m&ouml;glich. Die Validierung auf Tabellenebene hat den Vorteil, dass sie selbst bei direkter Bearbeitung der Tabellen greif. Da die Datenbearbeitung aber immer per Formular erfolgen sollte, verschafft diese Art der Validierung lediglich ein wenig mehr Sicherheit als andere.<\/p>\n<p>Die Validierung auf Formularebene hat den Vorteil, dass Sie jedes Feld in jedem Formular individuell behandeln k&ouml;nnen, dass die Ausgabe der G&uuml;ltigkeitsmeldungen per benutzerdefiniertem Meldungsfenster erfolgt und dass die Anwendungslogik somit wesentlich enger zusammenr&uuml;ckt.<\/p>\n<p>Mit der vorgestellten Validierungsklasse k&ouml;nnen Sie die Validierung jedes Feldes mit einem Einzeiler erledigen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Konsistenz einer Datenbank l&auml;sst sich nur durch eine entsprechende Validierung beim Anlegen und &Auml;ndern von Daten erhalten. Dazu stellt Access einiges an eingebauter Funktionalit&auml;t zur Verf&uuml;gung: zum Beispiel die G&uuml;ltigkeitsregeln und G&uuml;ltigkeitsmeldungen von Tabellenfeldern, Tabellen und Formularfeldern, mit denen sich eine Menge Fehleingaben ausschlie&szlig;en l&auml;sst. Wer aber den Benutzern seiner Anwendung in jeder Situation zur Seite stehen m&ouml;chte, kommt um einige Handarbeit nicht herum. Wie Sie Ihre Datenbankanwendung mit einer professionellen Validierung versehen, erfahren Sie in diesem Beitrag.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022005,662005,44000023,44000021],"tags":[],"class_list":["post-55000267","post","type-post","status-publish","format-standard","hentry","category-66022005","category-662005","category-Mit_Formularen_arbeiten","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Validierung von Daten - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Validierung von Daten\" \/>\n<meta property=\"og:description\" content=\"Die Konsistenz einer Datenbank l&auml;sst sich nur durch eine entsprechende Validierung beim Anlegen und &Auml;ndern von Daten erhalten. Dazu stellt Access einiges an eingebauter Funktionalit&auml;t zur Verf&uuml;gung: zum Beispiel die G&uuml;ltigkeitsregeln und G&uuml;ltigkeitsmeldungen von Tabellenfeldern, Tabellen und Formularfeldern, mit denen sich eine Menge Fehleingaben ausschlie&szlig;en l&auml;sst. Wer aber den Benutzern seiner Anwendung in jeder Situation zur Seite stehen m&ouml;chte, kommt um einige Handarbeit nicht herum. Wie Sie Ihre Datenbankanwendung mit einer professionellen Validierung versehen, erfahren Sie in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:56+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/c04a0aabcf8343278c51868835e803cb\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"18\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Validierung von Daten\",\"datePublished\":\"2020-05-06T15:17:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/\"},\"wordCount\":3314,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/c04a0aabcf8343278c51868835e803cb\",\"articleSection\":[\"2\\\/2005\",\"2005\",\"Mit Formularen arbeiten\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/\",\"name\":\"Validierung von Daten - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/c04a0aabcf8343278c51868835e803cb\",\"datePublished\":\"2020-05-06T15:17:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/c04a0aabcf8343278c51868835e803cb\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/c04a0aabcf8343278c51868835e803cb\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Validierung_von_Daten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Validierung von Daten\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Validierung von Daten - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/","og_locale":"de_DE","og_type":"article","og_title":"Validierung von Daten","og_description":"Die Konsistenz einer Datenbank l&auml;sst sich nur durch eine entsprechende Validierung beim Anlegen und &Auml;ndern von Daten erhalten. Dazu stellt Access einiges an eingebauter Funktionalit&auml;t zur Verf&uuml;gung: zum Beispiel die G&uuml;ltigkeitsregeln und G&uuml;ltigkeitsmeldungen von Tabellenfeldern, Tabellen und Formularfeldern, mit denen sich eine Menge Fehleingaben ausschlie&szlig;en l&auml;sst. Wer aber den Benutzern seiner Anwendung in jeder Situation zur Seite stehen m&ouml;chte, kommt um einige Handarbeit nicht herum. Wie Sie Ihre Datenbankanwendung mit einer professionellen Validierung versehen, erfahren Sie in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:56+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/c04a0aabcf8343278c51868835e803cb","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"18\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Validierung von Daten","datePublished":"2020-05-06T15:17:56+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/"},"wordCount":3314,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/c04a0aabcf8343278c51868835e803cb","articleSection":["2\/2005","2005","Mit Formularen arbeiten","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/","url":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/","name":"Validierung von Daten - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/c04a0aabcf8343278c51868835e803cb","datePublished":"2020-05-06T15:17:56+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/c04a0aabcf8343278c51868835e803cb","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/c04a0aabcf8343278c51868835e803cb"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Validierung_von_Daten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Validierung von Daten"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000267"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000267\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}