{"id":55000723,"date":"2010-06-01T00:00:00","date_gmt":"2020-05-22T22:13:15","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=723"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"mnBeziehung_per_Kontrollkaestchen_verwalten","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/","title":{"rendered":"m:n-Beziehung per Kontrollk&auml;stchen verwalten"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/4ffabc64fe474a10a57087a9c9704263\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wenn Sie die Daten zweier Tabellen mit einer einfachen Verkn&uuml;pfungstabelle zu einer m:n-Beziehung verbunden haben, k&ouml;nnen Sie die Daten auf verschiedenste Arten verwalten. Wir stellen eine nicht so oft verwendete, aber dennoch sehr ergonomische Variante vor. Dabei erfolgt die Zuordnung ausschlie&szlig;lich &uuml;ber das Aktivieren oder Deaktivieren eines Kontrollk&auml;stchens f&uuml;r den gew&uuml;nschten Eintrag.<\/b><\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Ziel dieses Beitrags<\/p>\n<p>&Uuml;bliche Auspr&auml;gungen der m:n-Beziehung sehen ein Haupt- und ein Unterformular vor, wobei das Hauptformular einen Datensatz der m-Seite der Beziehung anzeigt und das Unterformular die damit verkn&uuml;pften Datens&auml;tze der n-Seite. Neue verkn&uuml;pfte Datens&auml;tze lassen sich beispielsweise per Kombinationsfeld in einem neuen Datensatz im Unterformular hinzuf&uuml;gen, wie es auch im Bestellformular der Nordwind-Datenbank der Fall ist.<\/p>\n<p>Hier ist gleichzeitig die Bearbeitung weiterer in der Verkn&uuml;pfungstabelle enthaltener Daten m&ouml;glich. Eine andere M&ouml;glichkeit zur Darstellung und Bearbeitung einer m:n-Beziehung ist die Verwendung zweier Listenfelder in einem Formular, das selbst an die m-Seite der Verkn&uuml;pfung gebunden ist. Dabei zeigt das erste Listenfeld alle verkn&uuml;pften und das zweite Listenfeld die &uuml;brigen Datens&auml;tze der n-Seite an<\/p>\n<p>In unserem Beispiel m&ouml;chten wir eine Darstellung erzielen, bei dem das Hauptformular den Datensatz der m-Seite und das Unterformular alle Datens&auml;tze der n-Seite anzeigt &#8211; unabh&auml;ngig davon, ob diese dem aktuellen Datensatz des Hauptformulars zugeordnet sind oder nicht. Diesen Zustand markiert ein Kontrollk&auml;stchen, &uuml;ber das der Benutzer gleichzeitig neue Verkn&uuml;pfungen herstellen als auch bestehende l&ouml;schen kann. Bild 1 zeigt, wie das am Beispiel von Fahrzeugen und deren Ausstattungsmerkmalen aussehen soll.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/mnPerKombifeld-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Verwaltung der Daten einer m:n-Beziehung per Kontrollk&auml;stchen<\/span><\/b><\/p>\n<p><b>Beispiel<\/b><\/p>\n<p>Als Beispiel verwenden wir Fahrzeuge und deren Ausstattungen. Das Datenmodell haben wir so einfach gehalten wie m&ouml;glich (siehe Bild 2). Die beiden Tabellen <b>tblFahrzeuge <\/b>und <b>tblAusstattungen <\/b>sind dabei &uuml;ber die Tabelle <b>tblFahrzeugeAusstattungen <\/b>miteinander verkn&uuml;pft.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/mnPerKombifeld-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Datenmodell der Beispieldatenbank<\/span><\/b><\/p>\n<p>Diese Tabelle enth&auml;lt neben dem Prim&auml;rschl&uuml;sselfeld <b>FahrzeugeAusstattungenID <\/b>zwei Fremdschl&uuml;sselfelder, die mit den beiden Tabellen <b>tblFahrzeuge <\/b>und <b>tblAusstattungen <\/b>verkn&uuml;pft sind. Da jedes Fahrzeug jede Ausstattung nur einmal enthalten soll, legen Sie f&uuml;r die beiden Fremdschl&uuml;sselfelder einen zusammengesetzten eindeutigen Index fest (siehe Bild 3).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/mnPerKombifeld-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Eindeutiger Index f&uuml;r die Kombination aus Fahrzeug und Ausstattung<\/span><\/b><\/p>\n<p><b>Unterformular zur Darstellung der n-Seite der Beziehung<\/b><\/p>\n<p>Das Unterformular soll nur zwei Felder anzeigen: die Bezeichnung eines jeden Ausstattungsmerkmals (Feld <b>Ausstattung<\/b>) und ein Kontrollk&auml;stchen, das anzeigt, ob das Fahrzeug aus dem Hauptformular diese Ausstattung besitzt (ohne entsprechendes Feld). Au&szlig;erdem ben&ouml;tigen wir das Feld <b>AusstattungID<\/b>, um den Ausstattungs-Datensatz eindeutig zu identifizieren. Um ein wenig Arbeit zu sparen, weisen Sie der Eigenschaft Datenherkunft eines neuen Formulars namens <b>sfmFahrzeugeAusstattungen <\/b>die Tabelle <b>tblAusstattungen <\/b>zu. Ziehen Sie aus der Feldliste die beiden Felder <b>AusstattungID <\/b>und <b>Ausstattung <\/b>in den Detailbereich des Formularentwurfs.<\/p>\n<p>Fehlt noch das Kontrollk&auml;stchen: Dieses erstellen Sie zun&auml;chst als neues, ungebundenes Steuerelement, benennen es in <b>IstAusstattung <\/b>um und stellen die Eigenschaft <b>Steuerelementinhalt <\/b>auf <b>lstAusstattung <\/b>ein &#8211; auch wenn dieses Feld zum aktuellen Zeitpunkt noch gar nicht in der Datenherkunft des Formulars existiert. Im Entwurf sieht das Unterformular nun wie in Bild 4 aus. Bevor Sie das Unterformular speichern und schlie&szlig;en, leeren Sie die Eigenschaft <b>Datenherkunft<\/b> wieder &#8211; wir k&uuml;mmern uns sp&auml;ter um die Daten f&uuml;r das Formular. Au&szlig;erdem stellen Sie unbedingt die Eigenschaft <b>Standardansicht <\/b>auf den Wert <b>Datenblatt <\/b>ein, damit die Ausstattungen sch&ouml;n tabellarisch angezeigt werden.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/mnPerKombifeld-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Das Unterformular mit einem gebundenen Feld, das in der Datenherkunft nicht existiert.<\/span><\/b><\/p>\n<p><b>Hauptformular zur Anzeige der Fahrzeuge<\/b><\/p>\n<p>Das Hauptformular soll <b>frmFahrzeugeAusstattungen <\/b>hei&szlig;en und die Tabelle <b>tblFahrzeuge <\/b>als Datenherkunft verwenden. Aus dieser Tabelle f&uuml;gen Sie dem Formular alle Felder hinzu. Au&szlig;erdem soll das Formular nat&uuml;rlich das Unterformular mit den verkn&uuml;pften Ausstattungsmerkmalen anzeigen, wozu Sie das soeben erstellte Formular als Unterformular hinzuf&uuml;gen. Dazu ziehen Sie es am einfachsten aus dem Datenbankfenster beziehungsweise Navigationsbereich in den Detailbereich des Hauptformulars, sodass sich die Konstellation aus Bild 5 ergibt.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/mnPerKombifeld-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Haupt- und Unterformular in der Entwurfsansicht<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p><b>Ausstattungen per tempor&auml;rem Recordset<\/b><\/p>\n<p>Nun ist es an der Zeit, auch das Unterformular an eine Datenherkunft zu binden beziehungsweise ihm die entsprechenden Daten hinzuzuf&uuml;gen. Dabei greifen wir auf eine im Beitrag <b>Tempor&auml;re Datensatzgruppen <\/b>(<b>www.access-im-unternehmen.de\/711<\/b>) vorgestellte Technik zu, die allerdings leider erst ab Access 2002 funktioniert.<\/p>\n<p>Normalerweise wird ein Unterformular, dessen Daten &uuml;ber ein Fremdschl&uuml;sselfeld mit denen des Hauptformulars verkn&uuml;pft sind, beim Anzeigen eines neuen Datensatzes automatisch aktualisiert. Dazu stellt man die Eigenschaften <b>Verkn&uuml;pfen von <\/b>und <b>Verkn&uuml;pfen nach <\/b>auf die Namen der Steuerelemente mit dem Prim&auml;r- und dem Fremdschl&uuml;sselfeld der beiden beteiligten Formulare ein. Hier ist die Verwendung dieser Eigenschaften nicht m&ouml;glich, und das Unterformular besitzt ohnehin keine feste Datenherkunft.<\/p>\n<p>Also m&uuml;ssen wir uns selbst darum k&uuml;mmern, dass das Unterformular beim Anzeigen eines Datensatzes im Hauptformular mit den gew&uuml;nschten Daten gef&uuml;llt wird.<\/p>\n<p>Wie aber sehen diese Daten aus Wir ben&ouml;tigen zumindest alle Datens&auml;tze der Tabelle <b>tblAusstattungen<\/b>, unabh&auml;ngig davon, ob diese dem aktuellen Fahrzeug &uuml;ber die Verkn&uuml;pfungstabelle <b>tblFahrzeugeAusstattungen <\/b>zugewiesen wurden. Normalerweise k&ouml;nnte man dies &uuml;ber eine Abfrage realisieren, welche die beiden Tabellen <b>tblFahrzeugeAusstattungen <\/b>und <b>tblAusstattungen <\/b>enth&auml;lt und deren Beziehungseigenschaften so eingestellt sind, dass alle Datens&auml;tze der Tabelle <b>tblAusstattungen <\/b>angezeigt werden, aber nur die Daten der verkn&uuml;pften Datens&auml;tze der Tabelle <b>tblFahrzeugeAusstattungen<\/b>. Leider soll das Unterformular die Datens&auml;tze aber nach der <b>FahrzeugID <\/b>des Hauptformulars filtern, wodurch nicht mehr alle Datens&auml;tze der Tabelle <b>tblAusstattungen <\/b>angezeigt werden.<\/p>\n<p>Daher arbeiten wir mit einem tempor&auml;ren Recordset, das wir bei jeder Anzeige eines Datensatzes der Tabelle tblFahrzeuge im Hauptformular neu erstellen und dem Unterformular zuweisen. Die dazu notwendige Prozedur sieht wie in Listing 1 aus.<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Unterformular mit tempor&auml;rem Recordset f&uuml;llen<\/p>\n<pre>Private Sub Form_Current()\r\n    Dim cnn As ADODB.Connection\r\n    Dim rstAusstattungen As ADODB.Recordset\r\n    Dim rstTemp As ADODB.Recordset\r\n    Dim fld As ADODB.Field\r\n    Set cnn = CurrentProject.Connection\r\n    Set rstTemp = New ADODB.Recordset\r\n    Set rstAusstattungen = New ADODB.Recordset\r\n    rstTemp.CursorLocation = adUseClient\r\n    rstTemp.LockType = adLockOptimistic\r\n    rstTemp.Fields.Append &quot;AusstattungID&quot;, adInteger\r\n    rstTemp.Fields.Append &quot;Ausstattung&quot;, adVarWChar, 255\r\n    rstTemp.Fields.Append &quot;IstAusstattung&quot;, adBoolean, False\r\n    rstTemp.Open\r\n    rstAusstattungen.Open &quot;SELECT\r\n    tblAusstattungen.AusstattungID,\r\n    tblAusstattungen.Ausstattung\r\n    FROM tblAusstattungen&quot;, cnn\r\n    Do While Not rstAusstattungen.EOF\r\n        rstTemp.AddNew\r\n        rstTemp(&quot;AusstattungID&quot;) = _\r\n        rstAusstattungen!AusstattungID\r\n        If Me.NewRecord Then\r\n            rstTemp(&quot;IstAusstattung&quot;) = False\r\n        Else\r\n            rstTemp(&quot;IstAusstattung&quot;) = Not _\r\n            IsNull(DLookup(&quot;FahrzeugID&quot;, _\r\n            &quot;tblFahrzeugeAusstattungen&quot;, _\r\n            &quot;FahrzeugID = &quot; &amp; Me!FahrzeugID _\r\n            &amp; &quot; AND AusstattungID = &quot; _\r\n            &amp; rstAusstattungen!AusstattungID))\r\n        End If\r\n        rstTemp(&quot;Ausstattung&quot;) = rstAusstattungen!Ausstattung\r\n        rstTemp.Update\r\n        rstAusstattungen.MoveNext\r\n    Loop\r\n    Set Me!sfmFahrzeugeAusstattungen.Form.Recordset = rstTemp\r\n    Set rstAusstattungen = Nothing\r\n    Set cnn = Nothing\r\nEnd Sub<\/pre>\n<p>Die Prozedur erstellt zun&auml;chst ein tempor&auml;res Recordset namens <b>rstTemp<\/b>, das sp&auml;ter als Datenherkunft des Unterformulars dienen wird, sowie ein Recordset mit allen Datens&auml;tzen der Tabelle <b>tblAusstattungen<\/b>. Das tempor&auml;re Recordset statten wir mit den drei im Unterformular angezeigten Feldern <b>AusstattungID<\/b>, <b>Ausstattung <\/b>und <b>IstAusstattung <\/b>aus.<\/p>\n<p>Danach &ouml;ffnet die Prozedur das Recordset <b>rstAusstattungen <\/b>und durchl&auml;uft alle enthaltenen Datens&auml;tze. Dabei werden die Felder <b>AusstattungID <\/b>und <b>Ausstattung <\/b>mit den in der Tabelle <b>tblAusstattungen <\/b>enthaltenen Daten gef&uuml;llt. Das Feld <b>IstAusstattung <\/b>erf&auml;hrt eine Sonderbehandlung: Wenn das Hauptformular einen neuen Datensatz anzeigt, wird sein Wert f&uuml;r alle Ausstattungsdatens&auml;tze auf <b>False <\/b>eingestellt.<\/p>\n<p>F&uuml;r bestehende Fahrzeug-Datens&auml;tze pr&uuml;ft die Prozedur mit einer <b>DLookup<\/b>-Anweisung, ob in der Tabelle <b>tblFahrzeugeAusstattungen <\/b>bereits ein Datensatz vorliegt, der das Fahrzeug des Hauptformulars und das aktuell untersuchte Ausstattungsmerkmal verkn&uuml;pft und stellt <b>IstAusstattung <\/b>gegebenenfalls auf <b>True <\/b>ein. Schlie&szlig;lich weist die Prozedur dem Unterformular das Recordset zu.<\/p>\n<p>Die Anzeige funktioniert nun bereits: Wenn Sie zuvor ein paar Datens&auml;tze zur Tabelle <b>tblFahrzeugeAusstattungen <\/b>hinzugef&uuml;gt haben, sehen Sie im Unterformular bereits in paar aktivierte Kontrollk&auml;stchen.<\/p>\n<p><b>Finetuning<\/b><\/p>\n<p>Allerdings bietet das Unterformular noch nicht das erwartete Bild: Erstens enth&auml;lt die Spalte mit den Kontrollk&auml;stchen noch die &Uuml;berschrift IstAusstattung, was nicht sch&ouml;n aussieht, und die Spalte AusstattungID sollte am besten gleich ganz verschwinden.<\/p>\n<p>Kein Problem: In der Prozedur, die beim Laden des Unterformulars ausgel&ouml;st wird, k&uuml;mmern wir uns erstens um die Sichtbarkeit des Steuerelements <b>AusstattungID <\/b>und weisen anschlie&szlig;end der Spalte IstAusstattung ein Leerzeichen als Beschriftung zu. Die Sichtbarkeit (beziehungsweise Unsichtbarkeit) von Feldern in der Datenblattansicht regeln Sie &uuml;ber die Eigenschaft <b>ColumnHidden<\/b>.<\/p>\n<p>Die Beschriftung k&ouml;nnten wir eigentlich &uuml;ber den Text des zum Kontrollk&auml;stchen geh&ouml;renden Bezeichnungsfeldes einstellen, aber dieses verschwindet, wenn man eine leere Zeichenkette oder auch nur eines oder mehrere Leerzeichen eintr&auml;gt &#8211; und wenn ein Feld kein Bezeichnungsfeld enth&auml;lt, zeigt Access als Spalten&uuml;berschrift den jeweiligen Feldnamen an. Also weisen wir der <b>Caption<\/b>-Eigenschaft per VBA ein Leerzeichen zu:<\/p>\n<pre>Private Sub Form_Load()\r\n    Me!AusstattungID.ColumnHidden _\r\n    = True\r\n    Me!lblIstAusstattung.Caption _\r\n    = &quot; &quot;\r\nEnd Sub<\/pre>\n<p><b>Hinzuf&uuml;gen und Entfernen von Ausstattungsmerkmalen<\/b><\/p>\n<p>Aktuell k&ouml;nnen wir noch keine &auml;nderungen &uuml;ber die Kontrollk&auml;stchen vornehmen &#8211; zumindest wirken sich diese noch nicht auf die zugrunde liegende Tabelle <b>tblFahrzeugeAusstattungen <\/b>aus. <\/p>\n<p>Dies holen wir nach, indem wir eine Prozedur anlegen, die gleich nach dem &auml;ndern des Wertes des Kontrollk&auml;stchens <b>IstAusstattung <\/b>ausgel&ouml;st wird. Diese sieht wie in Listing 2 aus und f&uuml;hrt in Abh&auml;ngigkeit des Wertes des Kontrollk&auml;stchens eine von zwei SQL-Aktionsabfragen aus. Wenn das Kontrollk&auml;stchen den Wert <b>True <\/b>aufweist, dann legt die Prozedur einen neuen Datensatz in der Tabelle <b>tblFahrzeugeAusstattungen <\/b>an, der die <b>FahrzeugID <\/b>des aktuell im Hauptformular angezeigten Datensatzes und die <b>AusstattungID <\/b>des zum Kontrollk&auml;stchen geh&ouml;renden Datensatzes enth&auml;lt.<\/p>\n<p class=\"kastentabelleheader\">Listing 2: Neue Ausstattungen hinzuf&uuml;gen und entfernte Ausstattungen l&ouml;schen<\/p>\n<pre>Private Sub IstAusstattung_AfterUpdate()\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    If Me!IstAusstattung Then\r\n        db.Execute &quot;INSERT INTO tblFahrzeugeAusstattungen(FahrzeugID, AusstattungID) VALUES(&quot; _\r\n        &amp; Me.Parent!FahrzeugID &amp; &quot;, &quot; &amp; Me!AusstattungID &amp; &quot;)&quot;, dbFailOnError\r\n    Else\r\n        db.Execute &quot;DELETE FROM tblFahrzeugeAusstattungen WHERE FahrzeugID = &quot; _\r\n        &amp; Me.Parent!FahrzeugID &amp; &quot; AND AusstattungID = &quot; &amp; Me!AusstattungID, dbFailOnError\r\n    End If\r\n    Me.Dirty = False\r\nEnd Sub<\/pre>\n<p>Hat der Benutzer das H&auml;kchen aus dem Kontrollk&auml;stchen entfernt, l&ouml;scht die entsprechende Aktionsabfrage den Datensatz aus der Tabelle <b>tblFahrzeugeAusstattungen<\/b>, welcher der aktuellen <b>FahrzeugID <\/b>und <b>AusstattungID <\/b>entspricht.<\/p>\n<p>Fehlt nur noch eine kleine Absicherung f&uuml;r den Fall, dass der Benutzer Ausstattungen hinzuf&uuml;gen m&ouml;chte, obwohl das Hauptformular einen neuen, noch nicht gespeicherten Datensatz anzeigt: Diese M&ouml;glichkeit f&auml;ngt das Ereignis <b>Vor Aktualisierung <\/b>des Kontrollk&auml;stchens ab (s. Listing 3). Dort pr&uuml;fen wir mit der Eigenschaft <b>NewRecord <\/b>des Hauptformulars, ob dieses gerade einen frischen, noch nicht gespeicherten Datensatz anzeigt. Ist dies der Fall, erscheint eine entsprechende Meldung und die Aktualisierung des Kontrollk&auml;stchens wird r&uuml;ckg&auml;ngig gemacht.<\/p>\n<p class=\"kastentabelleheader\">Listing 3: Diese Routine verhindert die Auswahl von Ausstattungen f&uuml;r nicht angelegte Fahrzeuge.<\/p>\n<pre>Private Sub IstAusstattung_BeforeUpdate(Cancel As Integer)\r\n    If Me.Parent.NewRecord = True Then\r\n        MsgBox &quot;Bitte legen Sie zun&auml;chst einen Datensatz im Hauptformular an.&quot;, _\r\n        vbOKOnly + vbExclamation, &quot;Kein Datensatz&quot;\r\n        Me.Undo\r\n        Cancel = True\r\n    End If\r\nEnd Sub<\/pre>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>mnPerKombifeld.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{1D03D555-0FC3-4FE2-AC94-C9FE0B962233}\/aiu_723.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie die Daten zweier Tabellen mit einer einfachen Verkn&uuml;pfungstabelle zu einer m:n-Beziehung verbunden haben, k&ouml;nnen Sie die Daten auf verschiedenste Arten verwalten. Wir stellen eine nicht so oft verwendete, aber dennoch sehr ergonomische Variante vor. Dabei erfolgt die Zuordnung ausschlie&szlig;lich &uuml;ber das Aktivieren oder Deaktivieren eines Kontrollk&auml;stchens f&uuml;r den gew&uuml;nschten Eintrag.<\/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":[662010,66032010,44000023],"tags":[],"class_list":["post-55000723","post","type-post","status-publish","format-standard","hentry","category-662010","category-66032010","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>m:n-Beziehung per Kontrollk&auml;stchen verwalten - 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\/mnBeziehung_per_Kontrollkaestchen_verwalten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"m:n-Beziehung per Kontrollk&auml;stchen verwalten\" \/>\n<meta property=\"og:description\" content=\"Wenn Sie die Daten zweier Tabellen mit einer einfachen Verkn&uuml;pfungstabelle zu einer m:n-Beziehung verbunden haben, k&ouml;nnen Sie die Daten auf verschiedenste Arten verwalten. Wir stellen eine nicht so oft verwendete, aber dennoch sehr ergonomische Variante vor. Dabei erfolgt die Zuordnung ausschlie&szlig;lich &uuml;ber das Aktivieren oder Deaktivieren eines Kontrollk&auml;stchens f&uuml;r den gew&uuml;nschten Eintrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:13:15+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/4ffabc64fe474a10a57087a9c9704263\" \/>\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=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"m:n-Beziehung per Kontrollk&auml;stchen verwalten\",\"datePublished\":\"2020-05-22T22:13:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/\"},\"wordCount\":1704,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/4ffabc64fe474a10a57087a9c9704263\",\"articleSection\":[\"2010\",\"3\\\/2010\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/\",\"name\":\"m:n-Beziehung per Kontrollk&auml;stchen verwalten - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/4ffabc64fe474a10a57087a9c9704263\",\"datePublished\":\"2020-05-22T22:13:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/4ffabc64fe474a10a57087a9c9704263\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/4ffabc64fe474a10a57087a9c9704263\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehung_per_Kontrollkaestchen_verwalten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"m:n-Beziehung per Kontrollk&auml;stchen verwalten\"}]},{\"@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":"m:n-Beziehung per Kontrollk&auml;stchen verwalten - 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\/mnBeziehung_per_Kontrollkaestchen_verwalten\/","og_locale":"de_DE","og_type":"article","og_title":"m:n-Beziehung per Kontrollk&auml;stchen verwalten","og_description":"Wenn Sie die Daten zweier Tabellen mit einer einfachen Verkn&uuml;pfungstabelle zu einer m:n-Beziehung verbunden haben, k&ouml;nnen Sie die Daten auf verschiedenste Arten verwalten. Wir stellen eine nicht so oft verwendete, aber dennoch sehr ergonomische Variante vor. Dabei erfolgt die Zuordnung ausschlie&szlig;lich &uuml;ber das Aktivieren oder Deaktivieren eines Kontrollk&auml;stchens f&uuml;r den gew&uuml;nschten Eintrag.","og_url":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:13:15+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/4ffabc64fe474a10a57087a9c9704263","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"m:n-Beziehung per Kontrollk&auml;stchen verwalten","datePublished":"2020-05-22T22:13:15+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/"},"wordCount":1704,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/4ffabc64fe474a10a57087a9c9704263","articleSection":["2010","3\/2010","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/","url":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/","name":"m:n-Beziehung per Kontrollk&auml;stchen verwalten - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/4ffabc64fe474a10a57087a9c9704263","datePublished":"2020-05-22T22:13:15+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/4ffabc64fe474a10a57087a9c9704263","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/4ffabc64fe474a10a57087a9c9704263"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehung_per_Kontrollkaestchen_verwalten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"m:n-Beziehung per Kontrollk&auml;stchen verwalten"}]},{"@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\/55000723","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=55000723"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000723\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}