{"id":55001609,"date":"2026-08-01T00:00:00","date_gmt":"2026-07-04T14:10:29","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1609"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Gebundene_abhaengige_Kombinationsfelder","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/","title":{"rendered":"Gebundene abh&auml;ngige Kombinationsfelder"},"content":{"rendered":"<p><b>Im Beitrag &#8222;Abh&auml;ngige Kombinationsfelder&#8220; (www.access-im-unternehmen.de\/****) haben wir beschrieben, wie wir per 1:n-Beziehung verkn&uuml;pfte Daten in zwei aufeinanderfolgenden Kombinationsfeldern erst filtern und dann ausw&auml;hlen k&ouml;nnen. Im vorliegenden Beitrag gehen wir einen Schritt weiter und schauen uns an, wie wir abh&auml;ngige Kombinationsfelder in gebundenen Formularen darstellen. In Formularen in der Einzelansicht gelingt dies ohne Probleme. In der Endlosansicht und der Datenblattansicht sto&szlig;en wir jedoch auf Einschr&auml;nkungen, die wir mehr oder weniger gut umgehen k&ouml;nnen. Wie das gelingt, lesen Sie ebenfalls in diesem Beitrag.<\/b><\/p>\n<h2>Datenmodell der Beispieldatenbank<\/h2>\n<p>Die Beispieldatenbank erweitert das Modell aus dem ersten Beitrag um eine Ebene.<\/p>\n<p>In <b>tblKategorien<\/b> stehen die Kategorien, in <b>tblUnterkategorien<\/b> die Unterkategorien &#8211; jede Unterkategorie geh&ouml;rt &uuml;ber den Fremdschl&uuml;ssel <b>KategorieID<\/b> zu genau einer Kategorie.<\/p>\n<p>Die Produkte in <b>tblProdukte<\/b> verweisen mit den beiden Fremdschl&uuml;sseln <b>KategorieID<\/b> und <b>UnterkategorieID<\/b> zugleich auf ihre Kategorie und ihre Unterkategorie (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/pic_1609_003.png\" alt=\"Das Datenmodell mit tblKategorien, tblUnterkategorien und tblProdukte\" width=\"649,559\" height=\"370,0309\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Das Datenmodell mit tblKategorien, tblUnterkategorien und tblProdukte<\/span><\/b><\/p>\n<p>So entstehen zwei gestufte 1:n-Beziehungen, an denen sich das Zusammenspiel gebundener abh&auml;ngiger Kombinationsfelder gut zeigen l&auml;sst.<\/p>\n<p>Au&szlig;erdem haben wir noch eine 1:n-Beziehung zwischen den Tabellen <b>tblKategorien<\/b> und <b>tblUnterkategorien <\/b>hinzugef&uuml;gt, damit festgelegt ist, welche Unterkategorien zu welcher Kategorie geh&ouml;ren.<\/p>\n<h2>Abh&auml;ngige Kombinationsfelder in gebundenen Formularen<\/h2>\n<p>In der Einzelansicht ist die Sache unkompliziert. Als Beispiel dient das Formular <b>frmProdukteDetail<\/b>, das an die Tabelle <b>tblProdukte<\/b> gebunden ist und ihre Felder in vier Steuerelementen zeigt (siehe Bild 2): die Textfelder <b>ProduktID<\/b> und <b>Produkt<\/b> sowie die beiden Kombinationsfelder <b>cboKategorieID<\/b> und <b>cboUnterkategorieID<\/b>, die an die Fremdschl&uuml;ssel <b>KategorieID<\/b> und <b>UnterkategorieID<\/b> gebunden sind. Zum Erstellen dieses Formulars haben wir als Datensatzquelle die Tabelle <b>tblProdukte <\/b>eingestellt und alle Eintr&auml;ge der Feldliste in den Detailbereich gezogen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/pic_1609_004.png\" alt=\"Der Entwurf des Formulars frmProdukteDetail\" width=\"424,5589\" height=\"235,5675\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Der Entwurf des Formulars frmProdukteDetail<\/span><\/b><\/p>\n<p>Als Datensatzherkunft erh&auml;lt <b>cboKategorieID<\/b> eine Abfrage &uuml;ber alle Kategorien:<\/p>\n<pre>SELECT [tblKategorien].[KategorieID], [tblKategorien].[Kategorie] FROM tblKategorien ORDER BY [Kategorie];<\/pre>\n<p>Das abh&auml;ngige Feld <b>cboUnterkategorieID<\/b> bekommt zun&auml;chst eine Abfrage &uuml;ber s&auml;mtliche Unterkategorien als Datensatzherkunft &#8211; diese Liste schr&auml;nken wir gleich per VBA auf die gew&auml;hlte Kategorie ein.<\/p>\n<pre>SELECT [tblUnterkategorien].[UnterkategorieID], [tblUnterkategorien].[Unterkategorie] FROM tblUnterkategorien ORDER BY [Unterkategorie];<\/pre>\n<p>Den eigentlichen Mechanismus &uuml;bernimmt die Ereignisprozedur <b>cboKategorieID_AfterUpdate<\/b>, die wir f&uuml;r das Ereignis <b>Nach Aktualisierung<\/b> des Kombinationsfeldes <b>cboKategorieID<\/b> hinterlegen (siehe Listing 1).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboKategorieID_AfterUpdate()\r\n    <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n    strSQL = \"SELECT UnterkategorieID, Unterkategorie FROM tblUnterkategorien WHERE KategorieID = \" _\r\n        & Me.cboKategorieID & \" ORDER BY Unterkategorie\"\r\n    <span style=\"color:blue;\">With<\/span> Me.cboUnterkategorieID\r\n        .Value = Null\r\n        .RowSource = strSQL\r\n        .SetFocus\r\n        .Dropdown\r\n    End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Die Unterkategorien an die gew&auml;hlte Kategorie anpassen<\/span><\/b><\/p>\n<p>Wir stellen eine <b>SELECT<\/b>-Anweisung zusammen, die nur die Unterkategorien der gew&auml;hlten Kategorie liefert; das Kriterium bildet der gebundene Wert von <b>cboKategorieID<\/b>, also die <b>KategorieID<\/b>. Innerhalb eines <b>With<\/b>-Blocks setzen wir <b>cboUnterkategorieID<\/b> zun&auml;chst mit <b>Value = Null<\/b> zur&uuml;ck &#8211; so verschwindet eine wom&ouml;glich noch gespeicherte, nicht mehr passende Unterkategorie -, weisen anschlie&szlig;end die neue Datensatzherkunft zu und klappen die Liste &uuml;ber <b>SetFocus<\/b> und <b>Dropdown<\/b> gleich auf.<\/p>\n<p>Das Ergebnis zeigen die beiden folgenden Abbildungen: Bild 3 h&auml;lt die Auswahl einer Kategorie im Feld <b>cboKategorieID<\/b> fest.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/pic_1609_008.png\" alt=\"Auswahl einer Kategorie im Feld cboKategorieID\" width=\"424,5589\" height=\"284,0799\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Auswahl einer Kategorie im Feld cboKategorieID<\/span><\/b><\/p>\n<p>Unmittelbar nach der Auswahl eines dieser Eintr&auml;ge bietet <b>cboUnterkategorieID<\/b> nur noch die dazugeh&ouml;rigen Eintr&auml;ge an (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/pic_1609_002.png\" alt=\"Das gefilterte Kombinationsfeld cboUnterkategorieID nach der Kategorieauswahl\" width=\"424,5589\" height=\"284,0799\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Das gefilterte Kombinationsfeld cboUnterkategorieID nach der Kategorieauswahl<\/span><\/b><\/p>\n<p>In der Einzelansicht war das &#8211; wie versprochen &#8211; ohne H&uuml;rden. Interessant, und stellenweise widerspenstig, wird es in der Endlos- und der Datenblattansicht; ihnen wenden wir uns im n&auml;chsten Abschnitt zu.<\/p>\n<h2>Abh&auml;ngige Kombinationsfelder in gebundenen Endlosformularen<\/h2>\n<p>Um die abh&auml;ngigen Kombinationsfelder in einem Endlosformular zu nutzen, bauen wir das Formular zun&auml;chst wie zuvor auf und speichern dieses unter dem Namen <b>frmProdukteEndlos<\/b>. Hier nutzen wir nun die Anordnen-Funktion von Access.<\/p>\n<p>Wir markieren zun&auml;chst alle Steuerleemente des Formulars. Dann w&auml;hlen wir im Ribbon unter Anordnen den Befehl <b>Tabelle|Tabelle <\/b>aus. Dies verschiebt die Bezeichnungsfelder in den Formularkopf und bel&auml;sst die gebundenen Steuerelemente im Detailbereich. Au&szlig;erdem werden die Steuerelemente tabellarisch wie in Bild 5 angeordnet.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/pic_1609_005.png\" alt=\"Entwurf des Formulars in der Endlosansicht\" width=\"599,559\" height=\"202,1973\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Entwurf des Formulars in der Endlosansicht<\/span><\/b><\/p>\n<p>Anschlie&szlig;end markieren wir die Anordnung und entfernen diese durch einen Klick auf <b>Tabelle|Layout entfernen<\/b>.<\/p>\n<p>Au&szlig;erdem stellen wir f&uuml;r die Eigenschaft <b>Standardansicht <\/b>den Wert <b>Endlosformular <\/b>ein.<\/p>\n<p>F&uuml;r das Ereignis <b>Nach Aktualisierung<\/b> des Steuerelements <b>cboKategorieID <\/b>hinterlegen wir wieder die folgende Ereignisprozedur:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboKategorieID_AfterUpdate()\r\n    <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n    strSQL = \"SELECT UnterkategorieID, Unterkategorie \" _\r\n        & \"FROM tblUnterkategorien WHERE KategorieID = \" _\r\n        & Me.cboKategorieID & \" ORDER BY Unterkategorie\"\r\n    <span style=\"color:blue;\">With<\/span> Me.cboUnterkategorieID\r\n        .Value = Null\r\n        .RowSource = strSQL\r\n        .SetFocus\r\n        .Dropdown\r\n    End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Verhalten der abh&auml;ngigen Kombinationsfelder im Endlosformular<\/h2>\n<p>Danach wechseln wir in die Endlosformular-Ansicht und legen einen neuen Datensatz an, f&uuml;r den wir den Produktnamen festlegen. Wir k&ouml;nnen nun im Feld <b>cboUnterkategorieID <\/b>noch alle verf&uuml;gbaren Kategorien ausw&auml;hlen (siehe Bild 6). F&uuml;r bereits vorhandene Datens&auml;tze werden die Unterkategorien noch korrekt angezeigt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/04-07-2026_09-20-49.PNG\" alt=\"Auswahl der Unterkategorie ohne vorherige Auswahl einer Kategorie\" width=\"599,559\" height=\"313,4058\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Auswahl der Unterkategorie ohne vorherige Auswahl einer Kategorie<\/span><\/b><\/p>\n<p>Hier treffen wir keine Auswahl, sondern selektieren zun&auml;chst eine Kategorie. Anschlie&szlig;end klappen wir erneut das Kombinationsfeld <b>cboUnterkategorieID<\/b> auf.<\/p>\n<p>Wie Bild 7 zeigt, hat die Prozedur <b>cboUnterkategorieID_AfterUpdate <\/b>korrekt funktioniert: Das Kombinationsfeld <b>cboUnterkategorieID <\/b>zeigt nur noch die zu der gew&auml;hlten Kategorie geh&ouml;renden Unterkategorien an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/pic_1609_006.png\" alt=\"Auswahl der Unterkategorie nach vorheriger Auswahl einer Kategorie\" width=\"599,559\" height=\"249,2142\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Auswahl der Unterkategorie nach vorheriger Auswahl einer Kategorie<\/span><\/b><\/p>\n<p>Wenn wir eine Unterkategorie ausgew&auml;hlt haben und den Datensatz verlassen, geschieht jedoch etwas, mit dem wir zun&auml;chst nicht gerechnet haben: Das Feld <b>UnterkategorieID <\/b>wird f&uuml;r alle Datens&auml;tze, deren Kategorie nicht der zuletzt gew&auml;hlten Kategorie entspricht, geleert (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/04-07-2026_09-21-48.PNG\" alt=\"Verschiedene Unterkategorien werden scheinbar willk&uuml;rlich geleert.\" width=\"599,559\" height=\"257,992\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Verschiedene Unterkategorien werden scheinbar willk&uuml;rlich geleert.<\/span><\/b><\/p>\n<p>Das Verhalten &auml;ndert sich, wenn wir die Kategorie und die Unterkategorie f&uuml;r einen vorhanden Datensatz neu ausw&auml;hlen.<\/p>\n<p>Hier bleiben zun&auml;chst alle Eintr&auml;ge im Steuerelement <b>cboUnterkategorieID <\/b>erhalten. Erst wenn wir einen Datensatz markieren, dessen Kategorie nicht der zuletzt gew&auml;hlten Kategorie entspricht, wird dessen Feld <b>cboUnterkategorieID <\/b>geleert.<\/p>\n<p>Der Grund ist in beiden F&auml;llen schnell erl&auml;utert: Wir filtern die Datensatzherkunft von cboUnterkategorieID, sodass die anzuzeigenden Werte f&uuml;r die Datens&auml;tze mit einer anderen &uuml;bergeordneten Kategorie nicht mehr verf&uuml;gbar sind. Dadurch k&ouml;nnen diese schlicht nicht mehr angezeigt werden.<\/p>\n<p>Tats&auml;chlich sind die gespeicherten Werte f&uuml;r alle Datens&auml;tze der Tabelle noch vorhanden, wovon wir uns durch das Schlie&szlig;en und erneute &Ouml;ffnen des Formulars <b>frmProdukteEndlos <\/b>&uuml;berzeugen k&ouml;nnen (siehe Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/04-07-2026_09-55-19.png\" alt=\"Nach dem erneuten &Ouml;ffnen des Formulars sind alle Unterkategorien wieder sichtbar.\" width=\"599,559\" height=\"273,4352\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Nach dem erneuten &Ouml;ffnen des Formulars sind alle Unterkategorien wieder sichtbar.<\/span><\/b><\/p>\n<p>Dennoch ist dieses Verhalten &auml;u&szlig;erst ung&uuml;nstig, denn wir wollen den Benutzer nicht unn&ouml;tig verwirren.<\/p>\n<h2>Einfache L&ouml;sung zum Anzeigen aller Unterkategorien<\/h2>\n<p>Unsere Idee zu diesem Problem ist, die Datensatzherkunft des Kombinationsfeldes <b>cboUnterkategorieID <\/b>nach dem Verlassen des zuletzt bearbeiteten Datensatzes wieder auf die Abfrage einzustellen, die alle Unterkategorien liefert.<\/p>\n<p>Dazu k&ouml;nnen wir am einfachsten das Ereignis <b>Nach Aktualisierung <\/b>von <b>cboUnterkategorieID <\/b>verwenden. F&uuml;r dieses hinterlegen wir die Ereignisprozedur aus Listing 2.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboUnterkategorieID_AfterUpdate()\r\n    <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n    strSQL = \"SELECT UnterkategorieID, Unterkategorie FROM tblUnterkategorien ORDER BY Unterkategorie\"\r\n    <span style=\"color:blue;\">With<\/span> Me.cboUnterkategorieID\r\n        .RowSource = strSQL\r\n    End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Zur&uuml;cksetzen der Datensatzherkunft von cboUnterkategorieID<\/span><\/b><\/p>\n<p>Wenn wir einen Datensatz speichern, dessen Kategorie wir ge&auml;ndert und damit die Datensatzherkunft gefiltert haben, erh&auml;lt das Kombinationsfeld <b>cboUnterkategorieID <\/b>wieder alle Unterkategorien zur Auswahl. Somit zeigt dieses Kombinationsfeld nach dem Speichern auch nach dem Speichern des Datensatzes wieder alle Unterkategorien f&uuml;r die &uuml;brigen Datens&auml;tze an.<\/p>\n<h2>Nachteil dieser L&ouml;sung<\/h2>\n<p>Der einzige offensichtliche Nachteil dieser Vorgehensweise ist, dass nun beim Ausw&auml;hlen der Unterkategorie f&uuml;r jeden Datensatz alle Eintr&auml;ge angezeigt werden &#8211; unabh&auml;ngig davon, welche Kategorie f&uuml;r diesen Datensatz ausgew&auml;hlt wurde (siehe Bild 10).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_04\/pic_1609_009.png\" alt=\"Nun k&ouml;nnen alle Unterkategorien f&uuml;r einen Datensatz ausgew&auml;hlt werden.\" width=\"599,559\" height=\"273,4352\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Nun k&ouml;nnen alle Unterkategorien f&uuml;r einen Datensatz ausgew&auml;hlt werden.<\/span><\/b><\/p>\n<h2>Auswahl der Unterkategorie einschr&auml;nken<\/h2>\n<p>Wir w&uuml;nschen uns, dass wir das Kombinationsfeld <b>cboUnterkategorieID <\/b>&ouml;ffnen k&ouml;nnen und dass nur die zur Kategorie passenden Unterkategorien angezeigt werden &#8211; ohne, dass die Unterkategorien der &uuml;brigen Datens&auml;tze ausgeblendet werden.<\/p>\n<p>Das realisieren wir &uuml;ber einige Umwege, die wir nachfolgend genau erl&auml;utern.<\/p>\n<h2>Die Grundidee<\/h2>\n<p>Der Ausweg ist verbl&uuml;ffend einfach, wenn man ihn einmal gesehen hat: Wir drehen die Sache um.<\/p>\n<p>Statt die Liste dauerhaft einzuschr&auml;nken, lassen wir sie die ganze Zeit vollst&auml;ndig &#8211; mit allen Unterkategorien. Dann findet jede Zeile ihren gespeicherten Wert in der Liste und zeigt ihn an.<\/p>\n<p>Nur f&uuml;r den kurzen Moment, in dem der Benutzer in einer Zeile tats&auml;chlich eine neue Unterkategorie ausw&auml;hlt, blenden wir die passende, kurze Liste ein. Sobald er fertig ist, schalten wir wieder auf die vollst&auml;ndige Liste zur&uuml;ck.<\/p>\n<p>Man kann sich das wie eine Speisekarte vorstellen: W&uuml;rde man alle Gerichte bis auf eine Kategorie durchstreichen, st&uuml;nden alle Tische, die schon etwas anderes bestellt haben, pl&ouml;tzlich ohne Angabe da. Also lassen wir die volle Karte h&auml;ngen und reichen nur dem Tisch, der gerade neu bestellt, f&uuml;r einen Augenblick die kurze Auswahl.<\/p>\n<h2>Wenn sich die Kategorie &auml;ndert<\/h2>\n<p>Beginnen wir mit dem ersten Feld. W&auml;hlt der Benutzer in der aktuellen Zeile eine Kategorie, bauen wir die Liste des Unterkategorie-Feldes passend dazu neu auf, wie Listing 3 zeigt.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboKategorieID_AfterUpdate()\r\n    <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n    strSQL = \"SELECT UnterkategorieID, Unterkategorie FROM tblUnterkategorien WHERE KategorieID = \" _\r\n        & Me.cboKategorieID & \" ORDER BY Unterkategorie\"\r\n    <span style=\"color:blue;\">With<\/span> Me.cboUnterkategorieID\r\n        .Value = Null\r\n        .RowSource = strSQL\r\n        .SetFocus\r\n        .Dropdown\r\n    End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Nach der Kategoriewahl die passenden Unterkategorien zeigen<\/span><\/b><\/p>\n<p>Wir setzen <b>cboUnterkategorieID<\/b> zun&auml;chst mit <b>Value = Null<\/b> zur&uuml;ck, weisen dann die auf die Kategorie gefilterte Liste zu und klappen sie &uuml;ber <b>SetFocus<\/b> und <b>Dropdown<\/b> gleich auf. So weit ist das der bekannte Ablauf aus dem Einzelformular.<\/p>\n<h2>Der Normalzustand: die vollst&auml;ndige Liste<\/h2>\n<p>Damit alle Zeilen ihren Wert anzeigen, braucht das Unterkategorie-Feld im Ruhezustand die vollst&auml;ndige Liste. Diese kleine Hilfsprozedur stellt sie her (Listing 4).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>AlleUnterkategorienAnzeigen()\r\n    <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n    strSQL = \"SELECT UnterkategorieID, Unterkategorie FROM tblUnterkategorien ORDER BY Unterkategorie\"\r\n    <span style=\"color:blue;\">With<\/span> Me.cboUnterkategorieID\r\n        .RowSource = strSQL\r\n    End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Die Liste auf alle Unterkategorien setzen<\/span><\/b><\/p>\n<p>Sie schreibt schlicht eine Datensatzherkunft ohne Filter in <b>cboUnterkategorieID<\/b> &#8211; also alle Unterkategorien.<\/p>\n<p>Aufgerufen wird sie immer dann, wenn wir zu einem Datensatz wechseln. Daf&uuml;r sorgt das Ereignis <b>Beim Anzeigen<\/b>, das im Endlosformular f&uuml;r die jeweils aktuelle Zeile ausgel&ouml;st wird:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n    <span style=\"color:blue;\">Call<\/span> AlleUnterkategorienAnzeigen\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Beim Bearbeiten kurz die kurze Liste<\/h2>\n<p>Jetzt der eigentliche Kniff. Betritt der Benutzer das Unterkategorie-Feld, um eine Auswahl zu treffen, m&ouml;chten wir ihm nur die passenden Eintr&auml;ge zeigen und die Liste sofort aufklappen.<\/p>\n<p>Beides l&auml;sst sich aber nicht im selben Augenblick erledigen &#8211; Access braucht einen winzigen Moment, bis der Wechsel in das Feld abgeschlossen ist. Deshalb arbeiten wir mit einem kurzen Timer, wie folgendes Listing zeigt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboUnterkategorieID_GotFocus()\r\n    <span style=\"color:blue;\">Call<\/span> AlleUnterkategorienAnzeigen\r\n    Me.TimerInterval = 50\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Beim Fokuserhalt stellen wir zun&auml;chst wieder die volle Liste her &#8211; so bleibt der gespeicherte Wert in allen Datens&auml;tzen sichtbar &#8211; und setzen dann <b>TimerInterval<\/b> auf <b>50<\/b>. Damit bitten wir Access, in 50 Millisekunden das Timer-Ereignis auszul&ouml;sen. Dieses erledigt anschlie&szlig;end die eigentliche Arbeit (siehe Listing 5).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Timer()\r\n    <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n    Me.TimerInterval = 0\r\n    strSQL = \"SELECT UnterkategorieID, Unterkategorie FROM tblUnterkategorien WHERE KategorieID = \" _\r\n        & Me.cboKategorieID & \" ORDER BY Unterkategorie\"\r\n    <span style=\"color:blue;\">With<\/span> Me.cboUnterkategorieID\r\n        .RowSource = strSQL\r\n        .SetFocus\r\n        .Dropdown\r\n    End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Kurz darauf die gefilterte Liste zeigen und aufklappen<\/span><\/b><\/p>\n<p>Zuerst schalten wir den Timer mit <b>TimerInterval = 0<\/b> wieder aus, damit er nur ein einziges Mal feuert. Dann bauen wir die auf die aktuelle Kategorie gefilterte Liste, setzen den Fokus und klappen sie auf. F&uuml;r den Benutzer sieht es aus, als &ouml;ffne sich sofort die richtige, kurze Liste. Er sieht maximal ganz kurz das Aufklappen der vollst&auml;ndigen Liste.<\/p>\n<h2>Auch der Mausklick soll es ausl&ouml;sen<\/h2>\n<p>Nicht jeder betritt ein Feld mit der Tastatur &#8211; viele klicken es einfach an. Diesen Fall fangen wir zus&auml;tzlich ab, indem wir das Ereignis <b>MouseDown <\/b>von <b>cboUnterkategorieID <\/b>implementieren (siehe Listing 6).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboUnterkategorieID_MouseDown(Button<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>, X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n    <span style=\"color:blue;\">If <\/span>fIsComboOpen = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n        <span style=\"color:blue;\">Exit Sub<\/span>\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> Y &gt; Me.cboUnterkategorieID.Top + Me.cboUnterkategorieID.Height<span style=\"color:blue;\"> Then<\/span>\r\n        <span style=\"color:blue;\">Call<\/span> cboUnterkategorieID_GotFocus\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 6: Beim Anklicken dieselbe Auswahl-Logik starten<\/span><\/b><\/p>\n<p>Zuerst fragen wir mit der Hilfsfunktion <b>fIsComboOpen<\/b> nach, ob bereits eine Liste offen ist &#8211; wenn ja, tun wir nichts weiter. Diese Funktion stammt aus einem eigenen Modul namens <b>mdlAPI <\/b>und meldet &uuml;ber die Windows-API, ob ein Kombinationsfeld gerade aufgeklappt ist.<\/p>\n<p>Andernfalls pr&uuml;fen wir, ob der Klick oben auf das Feld selbst ging und nicht in die bereits ge&ouml;ffnete Liste darunter, und rufen dann dieselbe Prozedur wie beim Fokuserhalt auf.<\/p>\n<p>Warum diese Hilfsfunktion? Wenn wir zum Beispiel &uuml;ber die Auswahl einer Kategorie bereits das Kombinationsfeld <b>cboUnterkategorieID <\/b>ge&ouml;ffnet haben oder auch durch einen Mausklick auf das Steuerelement selbst, und klicken dann erneut darauf, soll sich das Kombinationsfeld wie &uuml;blich einfach wieder schlie&szlig;en.<\/p>\n<p>Da Access keine eingebaute M&ouml;glichkeit bietet, den &#8222;Ausgeklappt&#8220;-Zustand eines Kombinationsfeldes zu pr&uuml;fen, m&uuml;ssen wir hier die Windows-API hinzuziehen.<\/p>\n<p>Stellt diese fest, dass das Kombinationsfeld bereits ge&ouml;ffnet ist, wird die Prozedur beendet und der Klick bewirkt das Schlie&szlig;en des Kombinationsfeldes.<\/p>\n<p>Andernfalls pr&uuml;fen wir, ob der Benutzer in das Kombinationsfeld geklickt hat oder ob er einen der Eintr&auml;ge ausgew&auml;hlt hat &#8211; das Mouse Down-Ereignis wird n&auml;mlich in beiden F&auml;llen ausgel&ouml;st.<\/p>\n<p>Hier untersuchen wir die vertikale Position des Mauszeigers zum Zeitpunkt des Mausklicks. Diese erhalten wir &uuml;ber den Y-Parameter der entsprechenden Ereignisprozedur und pr&uuml;fen, ob dieser Wert kleiner ist als die Summe der Eigenschaften <b>Top <\/b>und <b>Height <\/b>des Kombinationsfeldes.<\/p>\n<p>Nur in diesem Fall wollen wir mit dem Aufruf von <b>cboUnterkategorie_GotFocus <\/b>daf&uuml;r sorgen, dass das Kombinationsfeld mit der korrekten Datensatzherkunft ge&ouml;ffnet wird.<\/p>\n<h2>Nach der Auswahl zur&uuml;ck zur vollen Liste<\/h2>\n<p>Hat der Benutzer seine Unterkategorie gew&auml;hlt, ist der Ausnahmezustand vorbei.<\/p>\n<p>Wir schalten sofort wieder auf die vollst&auml;ndige Liste zur&uuml;ck, damit alle Zeilen weiterhin ihre Werte anzeigen k&ouml;nnen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboUnterkategorieID_AfterUpdate()\r\n    <span style=\"color:blue;\">Call<\/span> AlleUnterkategorienAnzeigen\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Prozedur ruft nur unsere Hilfsprozedur <b>AlleUnterkategorienAnzeigen<\/b> auf &#8211; mehr ist nicht n&ouml;tig.<\/p>\n<h2>Falsche Kombinationen verhindern<\/h2>\n<p>Sollte doch einmal die vollst&auml;ndige Liste angezeigt werden und nicht die f&uuml;r die aktuelle Kategorie gefilterte, beugen wir Fehleingaben durch eine entsprechende Pr&uuml;fung vor.<\/p>\n<p>Dabei pr&uuml;fen wir im Ereignis <b>Vor Aktualisierung<\/b>, ob der gew&auml;hlte Wert in <b>cboUnterkategorieID <\/b>der Kategorie aus <b>cboKategorieID <\/b>entspricht. Das erledigt die Ereignisprozedur aus Listing 7.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboUnterkategorieID_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n    <span style=\"color:blue;\">Dim <\/span>lngKategorieID<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>lngUnterkategorieID<span style=\"color:blue;\"> As Long<\/span>\r\n    lngKategorieID = Me.cboKategorieID\r\n    lngUnterkategorieID = Me.cboUnterkategorieID\r\n    If Nz(DLookup(\"UnterkategorieID\", \"tblUnterkategorien\", \"UnterkategorieID = \" & lngUnterkategorieID _\r\n            & \" AND KategorieID = \" & lngKategorieID), 0) = 0 Then\r\n        <span style=\"color:blue;\">MsgBox<\/span> \"Diese Unterkategorie kann nicht f&uuml;r diese Kategorie ausgew&auml;hlt werden.\", vbOKOnly + vbExclamation, _\r\n            \"Ung&uuml;ltige Unterkategorie\"\r\n        Cancel = <span style=\"color:blue;\">True<\/span>\r\n        Me.cboUnterkategorieID.Dropdown\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 7: Pr&uuml;fen, ob Unterkategorie und Kategorie zusammenpassen<\/span><\/b><\/p>\n<p>Mit <b>DLookup<\/b> schlagen wir nach, ob es in <b>tblUnterkategorien<\/b> einen Eintrag gibt, dessen <b>UnterkategorieID<\/b> und <b>KategorieID<\/b> beide zur aktuellen Auswahl passen.<\/p>\n<p>Kommt dabei nichts heraus &#8211; der <b>Nz<\/b>-Ausdruck liefert dann <b>0<\/b> -, passt die Kombination nicht: Wir zeigen eine kurze Meldung, setzen <b>Cancel<\/b> auf <b>True<\/b>, wodurch die Eingabe verworfen wird, und klappen die Liste erneut auf, damit der Benutzer es gleich richtig w&auml;hlen kann.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Damit arbeiten abh&auml;ngige Kombinationsfelder auch im Endlosformular sauber: Alle Zeilen zeigen ihre Werte, und beim Bearbeiten erscheint trotzdem die passende, kurze Auswahl.<\/p>\n<p>Der Kern ist der Wechsel zwischen zwei Zust&auml;nden &#8211; vollst&auml;ndige Liste zum Anzeigen, gefilterte Liste zum Ausw&auml;hlen -, gesteuert &uuml;ber die Ereignisse des Formulars und des Kombinationsfeldes.<\/p>\n<p>Leider funktioniert dies nicht vollst&auml;ndig in der Datenblattansicht, da hier die im <b>Timer<\/b>-Ereignis angegebene Filterung nicht greift.<\/p>\n<p>F&uuml;r Endlosformulare haben wir damit jedoch eine gute L&ouml;sung, deren einziger Nachteil das kurze Aufflackern der gesamten Liste vor der eigentlichen Filterung ist.<\/p>\n<p>Wichtig: Die vorgestellten Ereignisprozeduren m&uuml;ssen wie gezeigt &uuml;bernommen werden &#8211; vor allem aber muss der Teil, der in die Timer-Prozedur ausgelagert wurde, dort verbleiben, andernfalls wird nach dem Anzeigen aller Eintr&auml;ge in <b>cboUnterkategorieID <\/b>das erneute Filtern auf die der Kategorie entsprechenden Eintr&auml;ge nicht durchgef&uuml;hrt werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Beitrag &#8222;Abh&auml;ngige Kombinationsfelder&#8220; (www.access-im-unternehmen.de\/****) haben wir beschrieben, wie wir per 1:n-Beziehung verkn&uuml;pfte Daten in zwei aufeinanderfolgenden Kombinationsfeldern erst filtern und dann ausw&auml;hlen k&ouml;nnen. Im vorliegenden Beitrag gehen wir einen Schritt weiter und schauen uns an, wie wir abh&auml;ngige Kombinationsfelder in gebundenen Formularen darstellen. In Formularen in der Einzelansicht gelingt dies ohne Probleme. In der Endlosansicht und der Datenblattansicht sto&szlig;en wir jedoch auf Einschr&auml;nkungen, die wir mehr oder weniger gut umgehen k&ouml;nnen. Wie das gelingt, lesen Sie ebenfalls 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":[662026,66042026,44000052],"tags":[],"class_list":["post-55001609","post","type-post","status-publish","format-standard","hentry","category-662026","category-66042026","category-Formulare_und_Steuerelemente"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Gebundene abh&auml;ngige Kombinationsfelder - 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\/Gebundene_abhaengige_Kombinationsfelder\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gebundene abh&auml;ngige Kombinationsfelder\" \/>\n<meta property=\"og:description\" content=\"Im Beitrag &quot;Abh&auml;ngige Kombinationsfelder&quot; (www.access-im-unternehmen.de\/****) haben wir beschrieben, wie wir per 1:n-Beziehung verkn&uuml;pfte Daten in zwei aufeinanderfolgenden Kombinationsfeldern erst filtern und dann ausw&auml;hlen k&ouml;nnen. Im vorliegenden Beitrag gehen wir einen Schritt weiter und schauen uns an, wie wir abh&auml;ngige Kombinationsfelder in gebundenen Formularen darstellen. In Formularen in der Einzelansicht gelingt dies ohne Probleme. In der Endlosansicht und der Datenblattansicht sto&szlig;en wir jedoch auf Einschr&auml;nkungen, die wir mehr oder weniger gut umgehen k&ouml;nnen. Wie das gelingt, lesen Sie ebenfalls in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-04T14:10:29+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=\"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\\\/Gebundene_abhaengige_Kombinationsfelder\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Gebundene abh&auml;ngige Kombinationsfelder\",\"datePublished\":\"2026-07-04T14:10:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/\"},\"wordCount\":2527,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"articleSection\":[\"2026\",\"4\\\/2026\",\"Formulare und Steuerelemente\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/\",\"name\":\"Gebundene abh&auml;ngige Kombinationsfelder - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"datePublished\":\"2026-07-04T14:10:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Gebundene_abhaengige_Kombinationsfelder\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gebundene abh&auml;ngige Kombinationsfelder\"}]},{\"@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":"Gebundene abh&auml;ngige Kombinationsfelder - 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\/Gebundene_abhaengige_Kombinationsfelder\/","og_locale":"de_DE","og_type":"article","og_title":"Gebundene abh&auml;ngige Kombinationsfelder","og_description":"Im Beitrag \"Abh&auml;ngige Kombinationsfelder\" (www.access-im-unternehmen.de\/****) haben wir beschrieben, wie wir per 1:n-Beziehung verkn&uuml;pfte Daten in zwei aufeinanderfolgenden Kombinationsfeldern erst filtern und dann ausw&auml;hlen k&ouml;nnen. Im vorliegenden Beitrag gehen wir einen Schritt weiter und schauen uns an, wie wir abh&auml;ngige Kombinationsfelder in gebundenen Formularen darstellen. In Formularen in der Einzelansicht gelingt dies ohne Probleme. In der Endlosansicht und der Datenblattansicht sto&szlig;en wir jedoch auf Einschr&auml;nkungen, die wir mehr oder weniger gut umgehen k&ouml;nnen. Wie das gelingt, lesen Sie ebenfalls in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/","og_site_name":"Access im Unternehmen","article_published_time":"2026-07-04T14:10:29+00:00","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\/Gebundene_abhaengige_Kombinationsfelder\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Gebundene abh&auml;ngige Kombinationsfelder","datePublished":"2026-07-04T14:10:29+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/"},"wordCount":2527,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"articleSection":["2026","4\/2026","Formulare und Steuerelemente"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/","url":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/","name":"Gebundene abh&auml;ngige Kombinationsfelder - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"datePublished":"2026-07-04T14:10:29+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Gebundene_abhaengige_Kombinationsfelder\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Gebundene abh&auml;ngige Kombinationsfelder"}]},{"@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\/55001609","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=55001609"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001609\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}