{"id":55001464,"date":"2023-12-01T00:00:00","date_gmt":"2023-11-07T11:45:28","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1464"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Unterformular_erst_nach_Validierung_aktivieren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/","title":{"rendered":"Unterformular erst nach Validierung aktivieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/ce48f4493b8f46939aadd1dad8d7e478\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Im Beitrag Dateneingabe in Haupt- und Unterformular (www.access-im-unternehmen.de\/1463) haben wir gezeigt, wir man bei der Eingabe neuer Daten verhindert, dass der Benutzer Daten in das Unterformular eingibt, bevor ein Datensatz im Hauptformular angelegt wurde. Das kann man noch vertiefen, wenn das Hauptformular Felder enth&auml;lt, die validiert werden m&uuml;ssen, bevor der dortige Datensatz gespeichert werden kann. Wir schauen uns an einem einfachen Beispiel an, wie sich eine Validierung auf die L&ouml;sung aus dem oben genannten Beitrag auswirkt.<\/b><\/p>\n<p>Angenommen, unser Formular enth&auml;lt bereits eine Validierung &#8211; wie k&ouml;nnen wir dann die Techniken aus dem Artikel <b>Dateneingabe in Haupt- und Unterformular <\/b>(<b>www.access-im-unternehmen.de\/1463<\/b>) damit kombinieren?<\/p>\n<h2>Einfache Validierungsfunktion<\/h2>\n<p>Dabei gehen wir davon aus, dass wir die Validierung durchf&uuml;hren, bevor der Benutzer den Datensatz speichert. Beim Speichern wird das Ereignis <b>Vor Aktualisierung <\/b>ausgel&ouml;st, in dem wir das Speichern durch Einstellen des Parameters <b>Cancel <\/b>auf den Wert <b>True <\/b>abbrechen k&ouml;nnen. Hier rufen wir wie folgt die Validierungsfunktion auf und werten das Ergebnis aus &#8211; wenn es <b>False <\/b>lautet, wird das Speichern abgebrochen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>Validierung = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Validierungsfunktion haben wir zu Beispielzwecken recht einfach gehalten (siehe Listing 1). Sie pr&uuml;ft lediglich die vom Benutzer zu f&uuml;llenden Felder und wenn eines leer ist, zeigt es eine Meldung an, die den Benutzer auffordert, das Feld zu f&uuml;llen. Anschlie&szlig;end setzt sie den Fokus auf das entsprechende Steuerelement und verl&auml;sst die Funktion. Nur wenn alle Validierungen gelingen, wird die Funktion bis zum Ende ausgef&uuml;hrt und liefert den Wert <b>True <\/b>zur&uuml;ck.<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>Validierung()<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Nz(Me!Kategorie, \"\")) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Bitte geben Sie eine Kategorie ein.\", vbOKOnly + vbExclamation\r\n         Me!txtKategorie.SetFocus\r\n         <span style=\"color:blue;\">Exit Function<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Nz(Me!Beschreibung, \"\")) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Bitte geben Sie eine Beschreibung ein.\", vbOKOnly + vbExclamation\r\n         Me!txtBeschreibung.SetFocus\r\n         <span style=\"color:blue;\">Exit Function<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Validierung = <span style=\"color:blue;\">True<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Validierungsfunktion<\/span><\/b><\/p>\n<h2>Validieren und zum Unterformular wechseln<\/h2>\n<p>Wie vertr&auml;gt sich dies mit dem Unterformular, das ja den Fokus erhalten soll beziehungsweise nur aktiviert werden soll, wenn der Benutzer den Datensatz im Hauptformular in einen speicherf&auml;higen Zustand gebracht hat?<\/p>\n<p>Wir haben im oben genannten Beitrag zwei Varianten vorgestellt:<\/p>\n<ul>\n<li>die erste gibt eine Meldung aus, wenn der Benutzer versucht, das Unterformular zu nutzen, obwohl noch kein Datensatz im Hauptformular vorliegt und<\/li>\n<li>die zweite deaktiviert das Unterformular-Steuerelement solange, bis im Hauptformular ein Datensatz vorliegt.<\/li>\n<\/ul>\n<h2>Validieren und Meldung, wenn noch keine Daten ins Unterformular eingegeben werden k&ouml;nnen<\/h2>\n<p>Die erste Variante sehen wir im Hauptformular <b>frmKategorienProdukte<\/b>. Hier erhalten wir nach dem Hinzuf&uuml;gen der Validierungsfunktion folgendes Verhalten:<\/p>\n<p>Wenn wir direkt nach dem Anlegen eines neuen Datensatzes zum Unterformular wechseln, also ohne &uuml;berhaupt Werte einzugeben, erscheint die Meldung, dass noch keine Kategorie angegeben ist. Die Validierung wird hier zun&auml;chst au&szlig;en vor gelassen (siehe Bild 1). Dies wird durch das Ereignis <b>Beim Hingehen <\/b>des Unterformular-Steuerelements realisiert.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_06\/pic_1464_001.png\" alt=\"Meldung ohne Validierungsfunktion\" width=\"549,559\" height=\"345,5421\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Meldung ohne Validierungsfunktion<\/span><\/b><\/p>\n<p>Geben wir hingegen Daten ein und versuchen dann, zum Unterformular zu wechseln, wird zuerst die Validierungsfunktion aufgerufen. Diese meldet eventuelle Probleme (siehe Bild 2) und bricht die Aktualisierung des Datensatzes im Hauptformular durch Setzen von <b>Cancel <\/b>auf <b>True <\/b>ab. Au&szlig;erdem wird der Fokus zur&uuml;ck auf das nicht validierte Feld gesetzt, sodass dieser nicht im Unterformular landet und somit auch nicht die Meldung mit dem Titel <b>Kategorie fehlt <\/b>angezeigt wird.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_06\/pic_1464_002.png\" alt=\"Die Validierung schl&auml;gt zuerst an.\" width=\"549,559\" height=\"305,0052\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Die Validierung schl&auml;gt zuerst an.<\/span><\/b><\/p>\n<p>Geben wir hingegen alle von der Validierung geforderten Daten an, k&ouml;nnen wir problemlos zum Unterformular wechseln, um dort die entsprechenden Datens&auml;tze einzugeben.<\/p>\n<h2>Validieren und Unterformular erst aktivieren, wenn Daten im Hauptformular speicherbar sind<\/h2>\n<p>[<\/p>\n<p>Die zweite Variante aus dem oben genannten Beitrag haben wir so gestaltet, dass das Unterformular-Steuerelement so lange deaktiviert bleibt, bis im Hauptformular die Bedingungen erf&uuml;llt sind, um den dortigen Datensatz zu speichern und somit auch das Unterformular zur Eingabe verkn&uuml;pfter Datens&auml;tze genutzt werden kann.<\/p>\n<p>Funktioniert das noch, wenn wir die Validierung wie oben hinzuf&uuml;gen? Das verwendete Hauptformular hei&szlig;t nun <b>frmKategorienProdukte_Enable<\/b>. Ist noch kein Datensatz im Hauptformular hinterlegt, soll dieses deaktiviert sein und den Text aus Bild 3 anzeigen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_06\/pic_1464_003.png\" alt=\"Aktivieren und Deaktivieren des Unterformular-Steuerelements\" width=\"499,5589\" height=\"214,6467\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Aktivieren und Deaktivieren des Unterformular-Steuerelements<\/span><\/b><\/p>\n<p>F&uuml;gen wir nun die Validierung wie im vorherigen Beispiel hinzu und geben f&uuml;r einen neuen, leeren Datensatz ein erstes Zeichen ein, wird das Unterformular direkt aktiviert. Beim Versuch, dorthin zu wechseln, erscheint jedoch die Meldung, dass die Validierung fehlgeschlagen ist (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_06\/pic_1464_004.png\" alt=\"Das Unterformular wird aktiviert, bevor die Validierung erfolgreich war\" width=\"549,559\" height=\"312,3714\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Das Unterformular wird aktiviert, bevor die Validierung erfolgreich war<\/span><\/b><\/p>\n<p>Die beiden Methoden arbeiten also noch nicht so gut zusammen. Wir wollen, dass das Unterformular erst aktiviert wird, wenn auch die Validierung erfolgreich ist.<\/p>\n<p>Wir m&uuml;ssten also prinzipiell nach der Eingabe eines jeden Zeichens pr&uuml;fen, ob die Validierung erfolgreich ist und dann das Unterformular-Steuerelement aktivieren oder deaktivieren. Beginnen wir mit dem Ereignis, das durch das Wechseln des angezeigten Datensatzes ausgel&ouml;st wird &#8211; <b>Beim Anzeigen<\/b>. Hier haben wir in der L&ouml;sung aus dem oben genannten Beitrag gepr&uuml;ft, ob <b>KategorieID <\/b>bereits einen Wert hat, was ein sicherer Indikator daf&uuml;r war, dass im Hauptformular ein Datensatz existiert, f&uuml;r den wir verkn&uuml;pfte Datens&auml;tze im Unterformular anlegen k&ouml;nnen. Das reicht nun nicht mehr aus, denn wir wollen dort erst Datens&auml;tze anlegen, wenn der Datensatz im Hauptformular erfolgreich validiert wurde.<\/p>\n<p>In einem ersten, naiven Ansatz ersetzen wir einfach die Bedingung <b>If IsNull(Me!KategorieID) Then <\/b>durch die aus Listing 2. Das geht solange gut, bis wir zu einem neuen, leeren Datensatz gelangen: Dann erscheint direkt die Meldung mit dem ersten Validierungsfehler. Und den Benutzer direkt auf einen Fehler aufmerksam zu machen, bevor er &uuml;berhaupt die Gelegenheit hatte, die erforderlichen Daten einzugeben, d&uuml;rfte kontraproduktiv sein.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n     <span style=\"color:blue;\">If <\/span>Validierung = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         Me!sfmKategorienProdukte.Enabled = <span style=\"color:blue;\">False<\/span>\r\n         Me!lblUnterformular.Caption = \"Produkte (Eingabe erst nach Angabe oder Auswahl einer Kategorie m&ouml;glich):\"\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         Me!sfmKategorienProdukte.Enabled = <span style=\"color:blue;\">True<\/span>\r\n         Me!lblUnterformular.Caption = \"Produkte:\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Validierungsfunktion im Beim Anzeigen-Ereignis<\/span><\/b><\/p>\n<p>Wir stellen also fest: Mit der bisher verwendeten Validierungsfunktion kommen wir hier nicht weiter &#8211; auch in den &uuml;brigen F&auml;llen d&uuml;rfen die Meldungen dieser Funktion eher nerven als dienlich zu sein. Das hei&szlig;t also, dass wir die Validierungsfunktion anpassen m&uuml;ssen &#8211; zumindest so, dass die Meldungen nicht direkt erscheinen.<\/p>\n<p>Das erledigen wir, indem wir der Funktion einen <b>Boolean<\/b>-Parameter namens <b>bolMessage <\/b>hinzuf&uuml;gen. Diesen pr&uuml;fen wir jeweils vor dem Ausgaben einer Meldung. Die Meldung wird nur ausgegeben, wenn <b>bolMessage <\/b>den Wert <b>True <\/b>aufweist (siehe Listing 3).<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>Validierung(bolMessage<span style=\"color:blue;\"> As Boolean<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Nz(Me!Kategorie, \"\")) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>bolMessage<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Bitte geben Sie eine Kategorie ein.\", vbOKOnly + vbExclamation\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         Me!txtKategorie.SetFocus\r\n         <span style=\"color:blue;\">Exit Function<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Nz(Me!Beschreibung, \"\")) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>bolMessage<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Bitte geben Sie eine Beschreibung ein.\", vbOKOnly + vbExclamation\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         Me!txtBeschreibung.SetFocus\r\n         <span style=\"color:blue;\">Exit Function<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Validierung = <span style=\"color:blue;\">True<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Validierungsfunktion mit einem Parameter, der angibt, ob Meldungen angezeigt werden sollen<\/span><\/b><\/p>\n<p>Wir k&ouml;nnen die Funktion also mit dem Parameter <b>False <\/b>dazu nutzen, einfach nur zu pr&uuml;fen, ob alle Felder erfolgreich validiert werden k&ouml;nnen.<\/p>\n<p>Ersetzen wir in <b>Form_Current <\/b>nun <b>Validierung = False <\/b>durch <b>Validierung(False) = False<\/b>, funktioniert der Ablauf f&uuml;r das Durchlaufen vollst&auml;ndiger Datens&auml;tze &#8211; das Unterformular wird dann aktiviert.<\/p>\n<p>Bei einem neuen Datensatz funktioniert das beim Anzeigen auch, das Unterformular wird deaktiviert. Wenn wir nun Daten in eines der Felder eingeben, soll das Unterformular deaktiviert bleiben, bis alle f&uuml;r die erfolgreiche Validierung notwendigen Daten eingegeben wurden. Aber wie sollen wir das herausfinden? Das Ereignis <b>Form_Dirty <\/b>hilft hier nicht weiter, denn es wird nur beim ersten &Auml;ndern eines der Felder ausgel&ouml;st &#8211; und die Validierungsfunktion k&ouml;nnen wir hier auch nicht nutzen, weil diese den Inhalt der Felder (<b>Value<\/b>) untersucht. Beim Ausl&ouml;sen des <b>Bei Ge&auml;ndert<\/b>-Ereignisses hat das ausl&ouml;sende Feld, zumindest wenn es ein Textfeld ist, noch gar keinen Wert, sondern nur einen angezeigten, aber nicht gespeicherten Inhalt (<b>Text<\/b>-Eigenschaft).<\/p>\n<p>Es f&uuml;hrt kein Weg daran vorbei, nach der Eingabe in jedes einzelne Textfeld zu pr&uuml;fen, ob das Unterformular-Steuerelement aktiviert werden soll.<\/p>\n<p>Dazu f&uuml;gen wir zu jedem Steuerelement eine Ereignisprozedur f&uuml;r das Ereignis <b>Nach Aktualisierung <\/b>hinzu, was f&uuml;r unsere beiden Textfelder wie folgt aussieht:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtBeschreibung_AfterUpdate()\r\n     UnterformularAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>txtKategorie_AfterUpdate()\r\n     UnterformularAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die hier aufgerufene Prozedur <b>UnterformularAktivieren <\/b>pr&uuml;ft, ob die Validierung erfolgreich ist und nimmt die entsprechenden Einstellungen vor:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>UnterformularAktivieren()\r\n     <span style=\"color:blue;\">If <\/span>Validierung(<span style=\"color:blue;\">False<\/span>) = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         Me!sfmKategorienProdukte.Enabled = <span style=\"color:blue;\">True<\/span>\r\n         Me!lblUnterformular.Caption = \"Produkte:\"\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         Me!sfmKategorienProdukte.Enabled = <span style=\"color:blue;\">False<\/span>\r\n         Me!lblUnterformular.Caption = _\r\n             & \"Produkte (Eingabe erst nach Angabe \" _\r\n             & \"oder Auswahl einer Kategorie m&ouml;glich):\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Da die Ereignisprozedur <b>Form_Current <\/b>die gleichen Anweisungen ausf&uuml;hrt, k&ouml;nnen wir auch hier auf <b>UnterformularAktivieren <\/b>verweisen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n     UnterformularAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Im Beispiel aus dem oben genannten Beitrag hatten wir auch f&uuml;r den Fall vorgesorgt, dass der Benutzer mit der <b>Escape<\/b>-Schaltfl&auml;che die bisherige Eingabe in die Textfelder r&uuml;ckg&auml;ngig macht.<\/p>\n<p>Dann wurde die Ereignisprozedur <b>Form_Undo <\/b>ausgel&ouml;st, die wiederum einen Timer gesetzt hat, der dazu f&uuml;hrte, dass kurz nach dem Beenden des <b>Undo<\/b>-Ereignisses das Unterformular aktiviert oder deaktiviert wurde.<\/p>\n<p>K&ouml;nnen wir dieses hier noch gebrauchen? Ja, das k&ouml;nnen wir. Denn es kann immer noch geschehen, dass der Benutzer die Bedingungen daf&uuml;r erf&uuml;llt, dass das Unterformular aktiviert wird, und anschlie&szlig;end mit <b>Escape<\/b> den Datensatz verwerfen. Wir k&ouml;nnen den Code hier allerdings verk&uuml;rzen, da wir wieder die Prozedur <b>UnterormularAktivieren <\/b>aufrufen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Timer()\r\n     Me.TimerInterval = 0\r\n     UnterformularAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Undo(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     Me.TimerInterval = 50\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit wird das Unterformular nach dem Verwerfen von &Auml;nderungen an einem noch nicht gespeicherten Datensatz deaktiviert.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag hat gezeigt, wie wir die Validierung mit dem Erlauben des Hingehens beziehungsweise Aktivieren des Unterformular-Steuerelements verbinden k&ouml;nnen.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>UnterformularErstNachValidierungFreigeben.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/13EEFFD5-00F3-4D29-BEB9-397234CB8313\/aiu_1464.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Beitrag Dateneingabe in Haupt- und Unterformular (www.access-im-unternehmen.de\/1463) haben wir gezeigt, wir man bei der Eingabe neuer Daten verhindert, dass der Benutzer Daten in das Unterformular eingibt, bevor ein Datensatz im Hauptformular angelegt wurde. Das kann man noch vertiefen, wenn das Hauptformular Felder enth&auml;lt, die validiert werden m&uuml;ssen, bevor der dortige Datensatz gespeichert werden kann. Wir schauen uns an einem einfachen Beispiel an, wie sich eine Validierung auf die L&ouml;sung aus dem oben genannten Beitrag auswirkt.<\/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":[662023,66062023,44000023],"tags":[],"class_list":["post-55001464","post","type-post","status-publish","format-standard","hentry","category-662023","category-66062023","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Unterformular erst nach Validierung aktivieren - 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\/Unterformular_erst_nach_Validierung_aktivieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unterformular erst nach Validierung aktivieren\" \/>\n<meta property=\"og:description\" content=\"Im Beitrag Dateneingabe in Haupt- und Unterformular (www.access-im-unternehmen.de\/1463) haben wir gezeigt, wir man bei der Eingabe neuer Daten verhindert, dass der Benutzer Daten in das Unterformular eingibt, bevor ein Datensatz im Hauptformular angelegt wurde. Das kann man noch vertiefen, wenn das Hauptformular Felder enth&auml;lt, die validiert werden m&uuml;ssen, bevor der dortige Datensatz gespeichert werden kann. Wir schauen uns an einem einfachen Beispiel an, wie sich eine Validierung auf die L&ouml;sung aus dem oben genannten Beitrag auswirkt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-07T11:45:28+00:00\" \/>\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=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Unterformular erst nach Validierung aktivieren\",\"datePublished\":\"2023-11-07T11:45:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/\"},\"wordCount\":1494,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ce48f4493b8f46939aadd1dad8d7e478\",\"articleSection\":[\"2023\",\"6\\\/2023\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/\",\"name\":\"Unterformular erst nach Validierung aktivieren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ce48f4493b8f46939aadd1dad8d7e478\",\"datePublished\":\"2023-11-07T11:45:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ce48f4493b8f46939aadd1dad8d7e478\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ce48f4493b8f46939aadd1dad8d7e478\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterformular_erst_nach_Validierung_aktivieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unterformular erst nach Validierung aktivieren\"}]},{\"@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":"Unterformular erst nach Validierung aktivieren - 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\/Unterformular_erst_nach_Validierung_aktivieren\/","og_locale":"de_DE","og_type":"article","og_title":"Unterformular erst nach Validierung aktivieren","og_description":"Im Beitrag Dateneingabe in Haupt- und Unterformular (www.access-im-unternehmen.de\/1463) haben wir gezeigt, wir man bei der Eingabe neuer Daten verhindert, dass der Benutzer Daten in das Unterformular eingibt, bevor ein Datensatz im Hauptformular angelegt wurde. Das kann man noch vertiefen, wenn das Hauptformular Felder enth&auml;lt, die validiert werden m&uuml;ssen, bevor der dortige Datensatz gespeichert werden kann. Wir schauen uns an einem einfachen Beispiel an, wie sich eine Validierung auf die L&ouml;sung aus dem oben genannten Beitrag auswirkt.","og_url":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-11-07T11:45:28+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Unterformular erst nach Validierung aktivieren","datePublished":"2023-11-07T11:45:28+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/"},"wordCount":1494,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/ce48f4493b8f46939aadd1dad8d7e478","articleSection":["2023","6\/2023","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/","url":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/","name":"Unterformular erst nach Validierung aktivieren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/ce48f4493b8f46939aadd1dad8d7e478","datePublished":"2023-11-07T11:45:28+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/ce48f4493b8f46939aadd1dad8d7e478","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/ce48f4493b8f46939aadd1dad8d7e478"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Unterformular_erst_nach_Validierung_aktivieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Unterformular erst nach Validierung aktivieren"}]},{"@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\/55001464","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=55001464"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001464\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}