{"id":55001588,"date":"2026-02-01T00:00:00","date_gmt":"2026-01-09T11:52:17","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1588"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"ErledigtStatus_in_Haupt_und_Unterformular_synchron","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/","title":{"rendered":"Erledigt-Status in Haupt- und Unterformular synchron"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/f8a4bde851d34cb68c37f03daa164f7a\" width=\"1\" height=\"1\" alt=\"\"><b>Ein Kunde hatte neulich die Anforderung, dass er Produktionsauftr&auml;ge mit den zu produzierenden Teilen im Haupt- und Unterformular abbilden wollte. An sich kein Problem, wenn man Haupt- und Unterformular entsprechend verkn&uuml;pft. Er w&uuml;nschte sich jedoch sowohl in der Tabelle der Produktionsauftr&auml;ge als auch in der f&uuml;r die Teile jeweils ein Kontrollk&auml;stchen, das den Status abbildet. Wenn der vollst&auml;ndige Auftrag erledigt ist, soll dieser samt Teileliste einen Haken erhalten. Ist der Auftrag noch offen, sind alle Kontrollk&auml;stchen leer. Aber wenn nicht alle Teile fertig produziert sind, sollte dies im Produktionsauftrag auf eine spezielle Art gekennzeichnet werden. Er hat dabei den Dreifachstatus des Kontrollk&auml;stchens entdeckt und w&uuml;nschte sich, dass das Kontrollk&auml;stchen in diesem Fall f&uuml;r den Produktionsauftrag den dritten Status anzeigt &#8211; in aktuellen Access-Versionen ein gef&uuml;lltes Kontrollk&auml;stchen mit einem Minus-Zeichen. Wie das gelingt und wie wir die Zust&auml;nde von Produktionsauftrag und Teilen synchron halten, zeigen wir in diesem Beitrag.<\/b><\/p>\n<h2>Datenmodell<\/h2>\n<p>Zun&auml;chst stellen wir die beiden Tabellen zusammen, mit denen wir die Produktionsauftr&auml;ge und die enthaltenen, zu fertigenden Teile verwalten.<\/p>\n<p>Die erste Tabelle hei&szlig;t <b>tblProduktionsauftraege<\/b> und soll die Felder aus Bild 1 enthalten. Neben dem Prim&auml;rschl&uuml;sselfeld und dem Feld f&uuml;r die Bezeichnung des Produktionsauftrags finden wir das <b>Ja\/Nein<\/b>-Feld <b>Erledigt<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_001.png\" alt=\"Tabelle f&uuml;r die Produktionsauftr&auml;ge\" width=\"524,559\" height=\"293,5605\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Tabelle f&uuml;r die Produktionsauftr&auml;ge<\/span><\/b><\/p>\n<p>Die zweite Tabelle namens tblProduktionsteile enth&auml;lt &auml;hnliche Felder, also auch das Feld <b>Erledigt <\/b>mit dem Datentyp <b>Ja\/Nein<\/b>. Au&szlig;erdem finden wir hier noch das Feld <b>ProduktionsauftragID<\/b>, mit dem wir das zu produzierende Teil dem jeweiligen Produktionsauftrag zuweisen k&ouml;nnen (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_002.png\" alt=\"Tabelle f&uuml;r die Produktionsteile\" width=\"524,559\" height=\"304,66\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Tabelle f&uuml;r die Produktionsteile<\/span><\/b><\/p>\n<p>Zwischen den beiden Tabellen stellen wir &uuml;ber das Fremdschl&uuml;sselfeld <b>ProduktionsauftragID<\/b> eine Beziehung her und definieren referenzielle Integrit&auml;t zwischen den beiden Tabellen (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_003.png\" alt=\"Beziehung zwischen den beiden Tabellen\" width=\"524,559\" height=\"280,7805\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Beziehung zwischen den beiden Tabellen<\/span><\/b><\/p>\n<h2>Formulare f&uuml;r das Beispiel<\/h2>\n<p>Nun erstellen wir zun&auml;chst das Unterformular, das die Produktionsteile zu einem Produktionsauftrag anzeigen soll. Dazu f&uuml;gen wir einem leeren Formular die Tabelle <b>tblProduktionsteile <\/b>als Datensatzquelle hinzu und ziehen alle Felder au&szlig;er <b>ProduktionsauftragID <\/b>zur Detailansicht hinzu.<\/p>\n<p>Die Eigenschaft <b>Standardansicht <\/b>legen wir auf den Wert <b>Datenblatt <\/b>fest. Anschlie&szlig;end speichern wir das Formular unter dem Namen <b>sfmProduktionsauftraege<\/b> und schlie&szlig;en es (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_004.png\" alt=\"Entwurf des Unterformulars\" width=\"599,559\" height=\"282,5609\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Entwurf des Unterformulars<\/span><\/b><\/p>\n<p>Das Hauptformular erstellen wir auf &auml;hnliche Weise, allerdings verwenden wir hier die Tabelle <b>tblProduktionsauftraege <\/b>als Datensatzquelle.<\/p>\n<p>Zudem ziehen wir hier noch das soeben erstellte Unterformular <b>sfmProduktionsauftraege <\/b>in den Detailbereich, sodass das Ergebnis wie in Bild 5 aussieht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_005.png\" alt=\"Entwurf des Hauptformulars\" width=\"599,559\" height=\"365,2588\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Entwurf des Hauptformulars<\/span><\/b><\/p>\n<p>Hier pr&uuml;fen wir noch, ob die Eigenschaften <b>Verkn&uuml;pfen von <\/b>und <b>Verkn&uuml;pfen nach <\/b>f&uuml;r das Unterformular-Steuerelement korrekt eingestellt wurden.<\/p>\n<p>Anschlie&szlig;end k&ouml;nnen wir in die Formularansicht wechseln und direkt einige Beispieldaten in Haupt- und Unterformular eingeben (siehe Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_006.png\" alt=\"Eingabe von Beispieldaten\" width=\"499,5589\" height=\"287,2244\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Eingabe von Beispieldaten<\/span><\/b><\/p>\n<h2>Erledigt-Status synchron halten<\/h2>\n<p>Damit kommen wir zur eigentlichen Aufgabe:<\/p>\n<ul>\n<li>Wenn der Benutzer nun das Feld <b>Erledigt <\/b>f&uuml;r den Produktionsauftrag im Hauptformular markiert, sollen auch alle Eintr&auml;ge im Unterformular markiert werden.<\/li>\n<li>Wenn der Benutzer die Markierung dieses Feldes aufhebt, sollen auch alle Eintr&auml;ge im Unterformular abgew&auml;hlt werden.<\/li>\n<li>Setzt der Benutzer die Markierung f&uuml;r einen Eintrag im Unterformular oder hebt diese auf, soll gepr&uuml;ft werden, ob aktuell alle Eintr&auml;ge markiert sind oder auch nur einige oder keiner. Sind alle Eintr&auml;ge markiert, soll auch das Feld <b>Erledigt <\/b>im Hauptformular einen Haken erhalten. Wenn kein Haken markiert ist, soll <b>Erledigt <\/b>im Hauptformular auch abgew&auml;hlt werden. Und schlie&szlig;lich fehlt noch der Fall, dass nur einige Eintr&auml;ge markiert sind: Dann soll das Feld <b>Erledigt <\/b>im Hauptformular den dritten Status eines Kontrollk&auml;stchens erhalten.<\/li>\n<\/ul>\n<p>Wie das gelingt, beschreiben wir in den n&auml;chsten Abschnitten.<\/p>\n<h2>Kontrollk&auml;stchen umbenennen<\/h2>\n<p>Zuvor versehen wir die beiden Kontrollk&auml;stchen im Haupt- und Unterformular jedoch noch mit einem entsprechenden Pr&auml;fix, hier <b>chk <\/b>f&uuml;r <b>Checkbox <\/b>(Kontrollk&auml;stchen). Beide hei&szlig;en nun <b>chkErledigt<\/b>.<\/p>\n<h2>Produktionsauftrag als vollst&auml;ndig erledigt markieren<\/h2>\n<p>Wenn der Benutzer den Produktionsauftrag als erledigt kennzeichnet, sollen alle Produktionsteile zu diesem Auftrag auch als erledigt markiert werden. Um auf die &Auml;nderung des Zustandes des Kontrollk&auml;stchens <b>chkErledigt <\/b>im Hauptformular zu reagieren, hinterlegen wir eine Ereignisprozedur f&uuml;r das Ereignis <b>Nach Aktualisierung<\/b> (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_007.png\" alt=\"Anlegen einer Ereignisprozedur f&uuml;r das Kontrollk&auml;stchen\" width=\"549,559\" height=\"355,5969\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Anlegen einer Ereignisprozedur f&uuml;r das Kontrollk&auml;stchen<\/span><\/b><\/p>\n<p>Dazu w&auml;hlen wir hier den Eintrag <b>[Ereignisprozedur] <\/b>aus und klicken auf die Schaltfl&auml;che mit den drei Punkten.<\/p>\n<p>Die jetzt im VBA-Editor erscheinende Ereignisprozedur f&uuml;llen wir wie in Listing 1. Hier deklarieren wir ein <b>Database<\/b>-Objekt, das wir mit einem Verweis auf die aktuelle Datenbank f&uuml;llen, sowie eine Variable namens <b>bolErledigt<\/b>, in die wir den aktuellen Zustand des Kontrollk&auml;stchens <b>chkErledigt <\/b>aus dem Hauptformular einlesen.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>chkErledigt_AfterUpdate()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>bolErledigt<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     bolErledigt = Me.chkErledigt\r\n     db.Execute \"UPDATE tblProduktionsteile SET Erledigt = \" & CInt(bolErledigt) & \" WHERE ProduktionsauftragID = \" _\r\n         & Me.ProduktionsauftragID, dbFailOnError\r\n     Me.sfmProduktionsauftraege.Form.Requery\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: &Uuml;bertragen der Markierung aus dem Hauptformular in das Unterformular<\/span><\/b><\/p>\n<p>Dann f&uuml;hren wir eine Aktualisierungsabfrage aus, die f&uuml;r alle Datens&auml;tze der Tabelle <b>tblProduktionsteile<\/b>, die zum aktuellen Produktionsauftrag geh&ouml;ren, den Wert aus der Variablen <b>bolErledigt <\/b>eintr&auml;gt.<\/p>\n<p>Dabei konvertieren wir den Wert des <b>Boolean<\/b>-Feldes mit der <b>CInt<\/b>-Funktion noch in den Datentyp <b>Integer<\/b>. Das ist n&ouml;tig, da <b>Boolean<\/b>-Werte bei der Ausgabe als <b>Wahr <\/b>oder <b>Falsch <\/b>ausgegeben werden und die SQL-Anweisung damit nichts anfangen kann. Also transformieren wir den Wert zuvor noch in <b>-1 <\/b>oder <b>0<\/b>.<\/p>\n<p>Danach aktualisieren wir noch die Daten im Unterformular und erhalten das Ergebnis aus Bild 8.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_008.png\" alt=\"Synchronisierte Daten in Haupt- und Unterformular\" width=\"549,559\" height=\"315,9721\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Synchronisierte Daten in Haupt- und Unterformular<\/span><\/b><\/p>\n<p>Hier stellt sich noch die Frage, ob wir dies ohne vorherige R&uuml;ckfrage durchf&uuml;hren wollen, wenn bereits einige Eintr&auml;ge im Unterformular abgehakt wurden.<\/p>\n<p>Zur Sicherheit bauen wir also noch eine Meldung ein, die wir aber nicht erst im Ereignis <b>Nach Aktualisierung <\/b>aufrufen, sondern bereits im Ereignis <b>Vor Aktualisierung <\/b>von <b>chkErledigt <\/b>im Hauptformular. Nach dem Anlegen sehen wir auch, warum dies sinnvoller ist:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>chkErledigt_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese Ereignisprozedur bietet n&auml;mlich einen Parameter namens <b>Cancel <\/b>an, den wir auf <b>True <\/b>einstellen k&ouml;nnen, wenn der Benutzer sich gegen eine Aktualisierung entscheidet. Damit verwerfen wir automatisch auch die Eingabe des Benutzers. Die Prozedur f&uuml;llen wir wie in Listing 2.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>chkErledigt_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     If <span style=\"color:blue;\">MsgBox<\/span>(\"Dies setzt den Status Erledigt f&uuml;r alle Teile auf ''\" & CBool(Me.chkErledigt) & \"''. Fortsetzen?\", _\r\n             vbYesNo, \"Status &auml;ndern\") = vbNo Then\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><b><span style=\"color:darkgrey;\">Listing 2: R&uuml;ckfrage, ob die &Auml;nderung &uuml;bertragen werden soll<\/span><\/b><\/p>\n<p>Hier fragen wir den Benutzer in einer <b>MsgBox<\/b>-Funktion, ob die &Auml;nderung auf die Teile &uuml;bertragen werden soll. W&auml;hlt der Benutzer hier die Schaltfl&auml;che <b>Nein<\/b>, stellt die Prozedur den Parameter <b>Cancel <\/b>auf <b>True <\/b>ein, wodurch die &Auml;nderung verworfen wird.<\/p>\n<p>Das Ereignis <b>chkErledigt_AfterUpdate <\/b>wird in diesem Fall nicht aufgerufen.<\/p>\n<p>Mit dieser Vorgehensweise erledigen wir direkt das vollst&auml;ndige Aus- und Abw&auml;hlen der untergeordneten Elemente.<\/p>\n<h2>Aktualisieren von Eintr&auml;gen im Unterformular<\/h2>\n<p>Damit folgt der spannendere Teil. Wenn der Benutzer einen der Eintr&auml;ge im Unterformular auf <b>Erledigt <\/b>setzt oder eine solche Markierung entfernt, soll auch die Markierung im Hauptformular angepasst werden:<\/p>\n<ul>\n<li>Wenn der Wert des Feldes <b>Erledigt <\/b>f&uuml;r alle Produktionsteile auf <b>True <\/b>eingestellt ist, soll der Wert des entsprechenden Feldes im Hauptformular auch <b>True <\/b>lauten.<\/li>\n<li>Sind noch keine Produktionsteile f&uuml;r den aktuellen Produktionsauftrag gefertigt, soll das Feld <b>Erledigt <\/b>f&uuml;r den Produktionsauftrag den Wert <b>False <\/b>erhalten.<\/li>\n<li>Ist mindestens ein Produktionsteil erledigt, aber nicht alle, dann soll das Feld <b>Erledigt <\/b>f&uuml;r den Produktionsauftrag den Wert <b>Null <\/b>erhalten und das Kontrollk&auml;stchen soll den dritten Status anzeigen.<\/li>\n<\/ul>\n<p>Dazu m&uuml;ssen wir zun&auml;chst die Eigenschaft <b>Dreifacher Status <\/b>f&uuml;r das Feld <b>Erledigt <\/b>im Hauptformular auf <b>Ja <\/b>einstellen (siehe Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_009.png\" alt=\"Dreifachen Status f&uuml;r das Kontrollk&auml;stchen aktivieren\" width=\"549,559\" height=\"361,0669\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Dreifachen Status f&uuml;r das Kontrollk&auml;stchen aktivieren<\/span><\/b><\/p>\n<h2>Dreifachen Status testen<\/h2>\n<p>Wir pr&uuml;fen nun, ob das Kontrollk&auml;stchen den dreifachen Status annehmen kann, und wechseln dazu in die Formularansicht des Hauptformulars.<\/p>\n<p>Hier stellen wir schnell fest, dass das Anklicken des Kontrollk&auml;stchens nicht mehr funktioniert (siehe Bild 10). Das Kontrollk&auml;stchen zeigt immer den Status <b>False <\/b>an, unabh&auml;ngig davon, wie oft wir es anklicken.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_010.png\" alt=\"Der dreifache Status funktioniert nicht.\" width=\"499,5589\" height=\"276,9575\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Der dreifache Status funktioniert nicht.<\/span><\/b><\/p>\n<h2>Dreifacher Status funktioniert nicht mit Ja\/Nein-Feldern<\/h2>\n<p>Der Grund ist einfach: <b>Ja\/Nein<\/b>-Felder in Tabellen k&ouml;nnen nur den Wert <b>-1 <\/b>oder <b>0 <\/b>annehmen, also <b>Ja <\/b>oder <b>Nein <\/b>beziehungsweise <b>Wahr <\/b>oder <b>Falsch<\/b>. Sie sind also nicht mit Kontrollk&auml;stchen mit dem dreifachen Status kompatibel.<\/p>\n<p>Die L&ouml;sung lautet: Wir &auml;ndern den Datentyp des Feldes <b>Erledigt <\/b>in der Tabelle <b>tblProduktionsauftraege <\/b>in <b>Zahl<\/b>. Die Feldgr&ouml;&szlig;e belassen wir bei <b>Long Integer<\/b>, auch wenn wir nur die Zahlen <b>0 <\/b>und <b>-1 <\/b>oder den Wert <b>NULL <\/b>in das Feld schreiben werden (siehe Bild 11).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_011.png\" alt=\"&Auml;ndern des Datentyps im Feld Erledigt auf Zahl\" width=\"649,559\" height=\"369,6082\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: &Auml;ndern des Datentyps im Feld Erledigt auf Zahl<\/span><\/b><\/p>\n<p>Den Standardwert k&ouml;nnen wir bei <b>0 <\/b>belassen, da ein Auftrag beim Anlegen immer zun&auml;chst vollst&auml;ndig unerledigt ist.<\/p>\n<p>&Ouml;ffnen wir nun erneut das Formular <b>frmProduktionsauftraege<\/b>, k&ouml;nnen wir auch den dreifachen Status des Kontrollk&auml;stchens im Hauptformular nutzen. Hier l&auml;sst sich jetzt erwartungsgem&auml;&szlig; der Status <b>NULL<\/b> einstellen, was eigentlich nicht erw&uuml;nscht ist &#8211; dieser Status soll nur erscheinen, wenn im Unterformular mindestens ein Eintrag aktiviert ist, aber nicht alle. Darum k&uuml;mmern wir uns jetzt.<\/p>\n<h2>Auswahl im Feld &#8222;Erledigt&#8220; des Hauptformulars an dreifachen Status anpassen<\/h2>\n<p>Das Feld <b>Erledigt <\/b>im Hauptformular kann damit die Status <b>Ja<\/b>, <b>Nein <\/b>und <b>Null <\/b>annehmen. Klicken wir nacheinander darauf, werden diese Werte in dieser Reihenfolge eingestellt.<\/p>\n<p>Wir m&ouml;chten aber &uuml;ber das Anklicken im Hauptformular nur die beiden Werte <b>Ja <\/b>und <b>Nein <\/b>erlauben. Das hei&szlig;t, dass wir eine weitere Logik implementieren m&uuml;ssen:<\/p>\n<ul>\n<li>Wenn der Status <b>Null <\/b>lautet und wir klicken das Feld <b>Erledigt <\/b>an, soll es den Status <b>Ja <\/b>erhalten.<\/li>\n<li>Wenn es den Wert <b>Ja <\/b>enth&auml;lt, soll der Status in <b>Nein <\/b>ge&auml;ndert werden und umgekehrt.<\/li>\n<li>Der Status <b>Null <\/b>soll durch Anklicken nicht erreicht werden k&ouml;nnen.<\/li>\n<\/ul>\n<p>Dazu passen wir die beiden Prozeduren an, die durch die Ereignisse <b>Vor Aktualisierung <\/b>und <b>Nach Aktualisierung <\/b>des Kontrollk&auml;stchens im Hauptformular ausgel&ouml;st werden.<\/p>\n<p>Als Erstes deklarieren wir die Variable <b>bolErledigt <\/b>als modulweit bekannte Variable:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>bolErledigt<span style=\"color:blue;\"> As Boolean<\/span><\/pre>\n<p>Diese nehmen wir aus der Prozedur <b>chkErledigt_AfterUpdate <\/b>heraus. Stattdessen setzen wir den neuen Wert nun in der Prozedur <b>chkErledigt_BeforeUpdate<\/b>.<\/p>\n<p>Diese gestalten wir wie in Listing 3.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>chkErledigt_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>varAktuellerStatus<span style=\"color:blue;\"> As Variant<\/span>\r\n     varAktuellerStatus = Me.chkErledigt.Value\r\n     <span style=\"color:blue;\">If <\/span>IsNull(varAktuellerStatus)<span style=\"color:blue;\"> Then<\/span>\r\n         bolErledigt = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         bolErledigt = varAktuellerStatus\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     \r\n     If <span style=\"color:blue;\">MsgBox<\/span>(\"Dies setzt den Status Erledigt f&uuml;r alle Teile auf ''\" & bolErledigt & \"''. Fortsetzen?\", vbYesNo, _\r\n             \"Status &auml;ndern\") = vbNo Then\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><b><span style=\"color:darkgrey;\">Listing 3: Neue Version der Prozedur chkErledigt_BeforeUpdate<\/span><\/b><\/p>\n<p>Hier schreiben wir den aktuellen Wert des Kontrollk&auml;stchens in die <b>Variant<\/b>-Variable <b>varAktuellerStatus<\/b>. Durch die Verwendung einer <b>Variant<\/b>-Variablen k&ouml;nnen wir nicht nur die Werte <b>True <\/b>und <b>False<\/b>, sondern auch <b>Null <\/b>erfassen.<\/p>\n<p>Wir pr&uuml;fen, ob <b>varAktuellerStatus <\/b>den Wert <b>Null <\/b>enth&auml;lt, und weisen dann der Variablen <b>bolErledigt <\/b>den Wert <b>True <\/b>zu. Anderenfalls f&uuml;llen wir <b>bolErledigt <\/b>mit dem aktuellen Wert von <b>varAktuellerStatus<\/b>, also <b>True <\/b>oder <b>False<\/b>.<\/p>\n<p>Schlie&szlig;lich passen wir die R&uuml;ckfrage an, ob alle Teile als erledigt oder nicht erledigt markiert werden sollen. Hier tragen wir <b>bolErledigt <\/b>als Platzhalter f&uuml;r den einzustellenden Zustand ein.<\/p>\n<p>Da <b>bolErledigt <\/b>modulweit deklariert ist, wird dieser Wert in der Prozedur <b>chkErledigt_AfterUpdate <\/b>verwendet, um die Eintr&auml;ge im Unterformular entsprechend anzupassen.<\/p>\n<h2>&Auml;nderungen im Unterformular in das Hauptformular &uuml;bertragen<\/h2>\n<p>Nun wollen wir implementieren, dass das Feld <b>Erledigt <\/b>im Hauptformular beim Bearbeiten der Werte dieses Feldes im Unterformular auf den korrekten Status eingestellt wird.<\/p>\n<p>Dazu m&uuml;ssen wir z&auml;hlen, wie viele Eintr&auml;ge im Unterformular als erledigt markiert sind und ob dies der gesamten Anzahl der Eintr&auml;ge entspricht (siehe Bild 12).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_012.png\" alt=\"Die markieren Produktionsteile m&uuml;ssen nun gez&auml;hlt werden.\" width=\"499,5589\" height=\"285,3353\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Die markieren Produktionsteile m&uuml;ssen nun gez&auml;hlt werden.<\/span><\/b><\/p>\n<p>Dazu ist vorher zu entscheiden, wann wir den Status im Hauptformular aktualisieren wollen. Wenn der Benutzer einen der Eintr&auml;ge im Feld Erledigt markiert, ist der Datensatz noch nicht gespeichert. Die einfachere Variante w&auml;re, das Hauptformular erst nach dem Speichern des Datensatzes im Unterformular zu aktualisieren, denn dann k&ouml;nnten wir die erledigten Teile &uuml;ber die Tabelle z&auml;hlen.<\/p>\n<p>Sinnvoller w&auml;re es, direkt nach dem Einstellen des neuen Status auszuwerten und den neuen Stand im Hauptformular anzuzeigen. Dies wollen wir nun umsetzen, was etwas aufwendiger ist als das einfache Z&auml;hlen der Datens&auml;tze in den Tabellen.<\/p>\n<p>Wir erledigen diese Aufgabe mit der Prozedur, die durch das Ereignis <b>Nach Aktualisierung <\/b>des Kontrollk&auml;stchens <b>chkErledigt <\/b>im Unterformular ausgel&ouml;st wird (siehe Listing 4).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>chkErledigt_AfterUpdate()\r\n     <span style=\"color:blue;\">Dim <\/span>lngAnzahlElemente<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngAnzahlErledigt<span style=\"color:blue;\"> As Long<\/span>\r\n     \r\n     lngAnzahlElemente = DCount(\"ProduktionsteilID\", \"tblProduktionsteile\", \"ProduktionsauftragID = \" _\r\n         & Me.Parent.ProduktionsauftragID)\r\n     lngAnzahlErledigt = DCount(\"ProduktionsteilID\", \"tblProduktionsteile\", \"ProduktionsauftragID = \" _\r\n         & Me.Parent.ProduktionsauftragID & \" AND Erledigt = <span style=\"color:blue;\">True<\/span> AND ProduktionsteilID &lt;&gt; \" & Me.ProduktionsteilID)\r\n     \r\n     lngAnzahlErledigt = lngAnzahlErledigt + Abs(Me.Erledigt)\r\n     \r\n     <span style=\"color:blue;\">If <\/span>lngAnzahlElemente &gt; 0 And lngAnzahlElemente = lngAnzahlErledigt<span style=\"color:blue;\"> Then<\/span>\r\n         Me.Parent.chkErledigt = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>If lngAnzahlErledigt = 0 Then\r\n         Me.Parent.chkErledigt = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         Me.Parent.chkErledigt = Null\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 4: Z&auml;hlen der erledigten Produktionsteile und Aktualisieren des Erledigt-Status f&uuml;r den Produktionsauftrag<\/span><\/b><\/p>\n<p>Hier deklarieren wir zwei Variablen namens <b>lngAnzahlElemente <\/b>und <b>lngAnzahlErledigt<\/b>, mit denen wir die Gesamtanzahl der Teile f&uuml;r den Produktionsauftrag und die Anzahl der erledigten Teile erfassen.<\/p>\n<p>Die Gesamtzahl ermitteln wir mit einer <b>DCount<\/b>-Abfrage, die alle Datens&auml;tze der Tabelle <b>tblProduktionsteile <\/b>liefert, die zu dem aktuellen Produktionsauftrag im Hauptformular geh&ouml;ren. Die ID des Produktionsauftrags aus dem Hauptformular holen wir mit dem Ausdruck <b>Me.Parent.ProduktionsauftragID<\/b>.<\/p>\n<p>Zum Ermitteln der erledigten Produktionsteile ben&ouml;tigen wir zwei Schritte.<\/p>\n<p>Im ersten verwenden wir wieder die <b>DCount<\/b>-Funktion, die alle Datens&auml;tze der Tabelle <b>tblProduktionsteile <\/b>z&auml;hlt, f&uuml;r welche die folgenden Kriterien gelten:<\/p>\n<ul>\n<li>Der Produktionsauftrag entspricht dem aus dem Hauptformular.<\/li>\n<li>Der Wert im Feld <b>Erledigt <\/b>lautet <b>True<\/b>.<\/li>\n<li>Und wir z&auml;hlen nicht den Eintrag mit, der aktuell in Bearbeitung ist, also durch den das Ereignis <b>Nach Aktualisierung <\/b>ausgel&ouml;st wurde.<\/li>\n<\/ul>\n<p>Damit erhalten wir die Anzahl der erledigten Produktionsteile f&uuml;r den aktuellen Auftrag mit Ausnahme des aktuell bearbeiteten Auftrags.<\/p>\n<p>F&uuml;r diesen z&auml;hlen wir im zweiten Schritt den Wert <b>1 <\/b>hinzu, wenn das Kontrollk&auml;stchen <b>chkErledigt <\/b>im Unterformular den Wert <b>True <\/b>enth&auml;lt, oder den Wert <b>0 <\/b>im Falle des Wertes <b>False<\/b>.<\/p>\n<p>Da <b>True <\/b>gleich <b>-1 <\/b>ist und <b>False <\/b>gleich <b>0<\/b>, k&ouml;nnen wir den zu addierenden Wert einfach mit <b>Abs(Me.Erledigt) <\/b>ermitteln. <b>Abs <\/b>liefert den absoluten Wert ohne Vorzeichen.<\/p>\n<p>Danach aktualisieren wir den Wert des Kontrollk&auml;stchens <b>chkErledigt <\/b>im Hauptformular entsprechend. Wenn <b>lngAnzahlElemente <\/b>gr&ouml;&szlig;er <b>0 <\/b>und gleich <b>lngAnzahlErledigt <\/b>ist, stellen wir das Kontrollk&auml;stchen auf <b>True <\/b>ein. Falls <b>lngAnzahlErledigt <\/b>den Wert <b>0 <\/b>enth&auml;lt, legen wir den Wert <b>False <\/b>fest. Anderenfalls wird der Wert auf <b>Null <\/b>eingestellt.<\/p>\n<p>Das erste Kriterium bedeutet auch, dass der Produktionsauftrag auf &#8222;nicht erledigt&#8220; eingestellt wird, wenn noch keine zu fertigenden Produktionsteile hinzugef&uuml;gt wurden.<\/p>\n<p>Wenn wir nun mehrere Produktionsteile auf <b>Erledigt <\/b>einstellen, wird der Status f&uuml;r den Produktionsauftrag korrekt angezeigt (siehe Bild 13).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_01\/pic_1588_013.png\" alt=\"Korrekte Anzeige des Erledigt-Status f&uuml;r den Produktionsauftrag\" width=\"499,5589\" height=\"285,3353\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Korrekte Anzeige des Erledigt-Status f&uuml;r den Produktionsauftrag<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag zeigt, wie man den Dreifach-Status eines Kontrollk&auml;stchens nutzen kann, um den Erledigt-Status von untergeordneten Datens&auml;tzen korrekt abzubilden als vollst&auml;ndig, teilweise oder gar nicht erledigt.<\/p>\n<p>Es gibt noch weitere Anzeigem&ouml;glichkeiten f&uuml;r einen solchen Status, zum Beispiel durch ein Kombinationsfeld. Dieses k&ouml;nnte die Werte <b>Vollst&auml;ndig<\/b>, <b>Teilweise <\/b>oder <b>Noch nicht begonnen <\/b>enthalten.<\/p>\n<p>Hier w&auml;re der Trick, dass man den Eintrag <b>Teilweise <\/b>nur zur Auswahl anbietet, wenn dieser Eintrag ausgew&auml;hlt ist (damit er angezeigt werden kann).<\/p>\n<p>Wenn der Eintrag <b>Vollst&auml;ndig angezeigt <\/b>ist, sollte logischerweise nur der Eintrag <b>Noch nicht begonnen <\/b>ausw&auml;hlbar sein, um den Auftrag zur&uuml;cksetzen zu k&ouml;nnen, oder der Eintrag <b>Vollst&auml;ndig<\/b>, um einen noch nicht begonnenen Auftrag direkt als vollst&auml;ndig erledigt zu markieren.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>ErledigtStatusInHauptUndUnterformularSynchronisieren.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/8D00C760-B5B7-4690-BC73-97CEF8E47E1B\/aiu_1588.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Kunde hatte neulich die Anforderung, dass er Produktionsauftr&auml;ge mit den zu produzierenden Teilen im Haupt- und Unterformular abbilden wollte. An sich kein Problem, wenn man Haupt- und Unterformular entsprechend verkn&uuml;pft. Er w&uuml;nschte sich jedoch sowohl in der Tabelle der Produktionsauftr&auml;ge als auch in der f&uuml;r die Teile jeweils ein Kontrollk&auml;stchen, das den Status abbildet. Wenn der vollst&auml;ndige Auftrag erledigt ist, soll dieser samt Teileliste einen Haken erhalten. Ist der Auftrag noch offen, sind alle Kontrollk&auml;stchen leer. Aber wenn nicht alle Teile fertig produziert sind, sollte dies im Produktionsauftrag auf eine spezielle Art gekennzeichnet werden. Er hat dabei den Dreifachstatus des Kontrollk&auml;stchens entdeckt und w&uuml;nschte sich, dass das Kontrollk&auml;stchen in diesem Fall f&uuml;r den Produktionsauftrag den dritten Status anzeigt &#8211; in aktuellen Access-Versionen ein gef&uuml;lltes Kontrollk&auml;stchen mit einem Minus-Zeichen. Wie das gelingt und wie wir die Zust&auml;nde von Produktionsauftrag und Teilen synchron halten, zeigen wir 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":[66012026,662026,44000023],"tags":[],"class_list":["post-55001588","post","type-post","status-publish","format-standard","hentry","category-66012026","category-662026","category-Mit_Formularen_arbeiten"],"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>Erledigt-Status in Haupt- und Unterformular synchron - 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\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Erledigt-Status in Haupt- und Unterformular synchron\" \/>\n<meta property=\"og:description\" content=\"Ein Kunde hatte neulich die Anforderung, dass er Produktionsauftr&auml;ge mit den zu produzierenden Teilen im Haupt- und Unterformular abbilden wollte. An sich kein Problem, wenn man Haupt- und Unterformular entsprechend verkn&uuml;pft. Er w&uuml;nschte sich jedoch sowohl in der Tabelle der Produktionsauftr&auml;ge als auch in der f&uuml;r die Teile jeweils ein Kontrollk&auml;stchen, das den Status abbildet. Wenn der vollst&auml;ndige Auftrag erledigt ist, soll dieser samt Teileliste einen Haken erhalten. Ist der Auftrag noch offen, sind alle Kontrollk&auml;stchen leer. Aber wenn nicht alle Teile fertig produziert sind, sollte dies im Produktionsauftrag auf eine spezielle Art gekennzeichnet werden. Er hat dabei den Dreifachstatus des Kontrollk&auml;stchens entdeckt und w&uuml;nschte sich, dass das Kontrollk&auml;stchen in diesem Fall f&uuml;r den Produktionsauftrag den dritten Status anzeigt - in aktuellen Access-Versionen ein gef&uuml;lltes Kontrollk&auml;stchen mit einem Minus-Zeichen. Wie das gelingt und wie wir die Zust&auml;nde von Produktionsauftrag und Teilen synchron halten, zeigen wir in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T11:52:17+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/f8a4bde851d34cb68c37f03daa164f7a\" \/>\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=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Erledigt-Status in Haupt- und Unterformular synchron\",\"datePublished\":\"2026-01-09T11:52:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/\"},\"wordCount\":2610,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f8a4bde851d34cb68c37f03daa164f7a\",\"articleSection\":[\"1\\\/2026\",\"2026\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/\",\"name\":\"Erledigt-Status in Haupt- und Unterformular synchron - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f8a4bde851d34cb68c37f03daa164f7a\",\"datePublished\":\"2026-01-09T11:52:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f8a4bde851d34cb68c37f03daa164f7a\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f8a4bde851d34cb68c37f03daa164f7a\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Erledigt-Status in Haupt- und Unterformular synchron\"}]},{\"@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":"Erledigt-Status in Haupt- und Unterformular synchron - 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\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/","og_locale":"de_DE","og_type":"article","og_title":"Erledigt-Status in Haupt- und Unterformular synchron","og_description":"Ein Kunde hatte neulich die Anforderung, dass er Produktionsauftr&auml;ge mit den zu produzierenden Teilen im Haupt- und Unterformular abbilden wollte. An sich kein Problem, wenn man Haupt- und Unterformular entsprechend verkn&uuml;pft. Er w&uuml;nschte sich jedoch sowohl in der Tabelle der Produktionsauftr&auml;ge als auch in der f&uuml;r die Teile jeweils ein Kontrollk&auml;stchen, das den Status abbildet. Wenn der vollst&auml;ndige Auftrag erledigt ist, soll dieser samt Teileliste einen Haken erhalten. Ist der Auftrag noch offen, sind alle Kontrollk&auml;stchen leer. Aber wenn nicht alle Teile fertig produziert sind, sollte dies im Produktionsauftrag auf eine spezielle Art gekennzeichnet werden. Er hat dabei den Dreifachstatus des Kontrollk&auml;stchens entdeckt und w&uuml;nschte sich, dass das Kontrollk&auml;stchen in diesem Fall f&uuml;r den Produktionsauftrag den dritten Status anzeigt - in aktuellen Access-Versionen ein gef&uuml;lltes Kontrollk&auml;stchen mit einem Minus-Zeichen. Wie das gelingt und wie wir die Zust&auml;nde von Produktionsauftrag und Teilen synchron halten, zeigen wir in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/","og_site_name":"Access im Unternehmen","article_published_time":"2026-01-09T11:52:17+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/f8a4bde851d34cb68c37f03daa164f7a","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Erledigt-Status in Haupt- und Unterformular synchron","datePublished":"2026-01-09T11:52:17+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/"},"wordCount":2610,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/f8a4bde851d34cb68c37f03daa164f7a","articleSection":["1\/2026","2026","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/","url":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/","name":"Erledigt-Status in Haupt- und Unterformular synchron - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/f8a4bde851d34cb68c37f03daa164f7a","datePublished":"2026-01-09T11:52:17+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/f8a4bde851d34cb68c37f03daa164f7a","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/f8a4bde851d34cb68c37f03daa164f7a"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/ErledigtStatus_in_Haupt_und_Unterformular_synchron\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Erledigt-Status in Haupt- und Unterformular synchron"}]},{"@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\/55001588","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=55001588"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001588\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}