{"id":55000452,"date":"2007-04-01T00:00:00","date_gmt":"2020-05-15T16:27:17","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=452"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"mnBeziehungen_im_Haupt_und_Unterformular","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/","title":{"rendered":"m:n-Beziehungen im Haupt- und Unterformular"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/967c1adb87b84936b09a16a1f959620e\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Das Bestellungen-Formular der Nordwind-Datenbank wird oft als Beispiel f&uuml;r die Darstellung komplexer m:n-Beziehungen in Formularen angef&uuml;hrt. Dieses nachzubauen ist allerdings schwieriger, als man denkt &#8211; vor allem, wenn man nicht richtig im Thema steckt. Access im Unternehmen zeigt alle Tricks, die Sie zum Erstellen und Anpassen solcher Formulare ben&ouml;tigen.<\/b><\/p>\n<p>Grundlage f&uuml;r das in diesem Beitrag beschriebene Formular sind die Tabellen der S&uuml;dsturm-Datenbank &#8211; dabei handelt es sich um eine angepasste Version der Nordwind-Datenbank (Shortlink 411).<\/p>\n<p>Wichtig sind dabei vor allem die Tabellen <b>tblBestellungen<\/b>, <b>tblBestelldetails <\/b>und <b>tblArtikel<\/b> (siehe Bild 1). Das Hauptformular namens <b>frmBestellungen <\/b>soll die Details zur jeweiligen Bestellung wie Bestellnummer, Kunde, Bestelldatum oder Versanddatum anzeigen. Das Unterformular <b>sfmBestellungen <\/b>dient zur Eingabe und Anzeige der Bestellpositionen. Es soll jeweils die zum aktuell im Hauptformular angezeigten Bestellungsdatensatz passenden Bestellpositionen darstellen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/MNBeziehungenInHauptUndUnterformular-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Die Daten dieser Tabellen sollen im Formular und Unterformular angezeigt werden.<\/span><\/b><\/p>\n<h2>Anzeigen der Positionen im Unterformular<\/h2>\n<p>Als Datenherkunft des Unterformulars dient eine Abfrage, die auf den beiden Tabellen <b>tblBestelldetails <\/b>und <b>tblArtikel <\/b>basiert. Die Felder <b>Einzelpreis <\/b>und <b>Mehrwertsteuer <\/b>kommen in beiden Tabellen vor. Hintergrund ist, dass die Felder in der Tabelle <b>tblArtikel <\/b>prinzipiell die Standardwerte f&uuml;r eine Bestellung sind.<\/p>\n<p>Der Einzelpreis kann sich dabei ebenso wie die Mehrwertsteuer &auml;ndern. Diese &auml;nderungen d&uuml;rfen sich aber nicht auf bereits gespeicherte Bestellungen auswirken, sondern nur auf zuk&uuml;nftige. Daher speichert die Tabelle mit den Bestelldetails diese Daten nochmals. Einige Informationen wie der Rabatt und die Anzahl h&auml;ngen von der Bestellung ab und werden nur in der Tabelle <b>tblBestelldetails <\/b>gespeichert.<\/p>\n<p>Warum nun nicht auch noch Informationen wie die Liefereinheit in der Tabelle mit den Bestelldetails speichern Nun, es k&ouml;nnen sich zwar der Preis und die Mehrwertsteuer eines Artikels &auml;ndern, aber ein Wechsel der Liefereinheiten etwa von 20 Flaschen auf 24 Dosen verlangt doch eher nach dem Anlegen eines neuen Artikels.<\/p>\n<p>Der Entwurf der Abfrage sieht wie in Bild 2 aus. Zus&auml;tzlich zu den Feldern der beiden Tabellen enth&auml;lt die Abfrage ein drittes Feld, das den Endpreis f&uuml;r die jeweilige Position ermittelt. Dieses hat den folgenden Inhalt:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/MNBeziehungenInHauptUndUnterformular-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Datenherkunft des Unterformulars zur Anzeige der Bestellpositionen<\/span><\/b><\/p>\n<pre>Endpreis: [tblBestelldetails].[Einzelpreis]*\r\n[Anzahl]*(1-[Rabatt])*\r\n(1+[tblBestelldetails].[Mehrwertsteuer])<\/pre>\n<p>Wozu brauchen Sie nun die einzelnen Felder Die meisten zeigt das Unterformular in der Datenblattansicht an. Sie m&uuml;ssen die Felder nur in der gew&uuml;nschten Reihenfolge in den Detailbereich des Formularentwurfs ziehen.<\/p>\n<p>Lediglich das Feld <b>BestellungID <\/b>soll dort nicht erscheinen, sondern nur die Beziehung zwischen den im Haupt- und Unterformular angezeigten Datens&auml;tzen herstellen. Sie k&ouml;nnten es ebenfalls in den Entwurf ziehen und es anschlie&szlig;end ausblenden, aber das ist gar nicht n&ouml;tig: Access kann alle in der Datenherkunft verwendeten Felder f&uuml;r die Eigenschaft <b>Verkn&uuml;pfen von <\/b>verwenden.<\/p>\n<p>Eine besondere Rolle kommt dem Feld <b>ArtikelID<\/b> zu. Wenn Sie das Fremdschl&uuml;sselfeld der Verkn&uuml;pfungstabelle als Nachschlagefeld eingerichtet haben, k&ouml;nnen Sie damit direkt den Artikel f&uuml;r die aktuelle Position ausw&auml;hlen. Falls nicht, erledigen Sie dies in folgenden Schritten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Wandeln Sie das Textfeld in ein Kombinationsfeld um (Kontextmen&uuml;eintrag <b>&auml;ndern zu\/Kombinationsfeld<\/b>).<\/li>\n<li class=\"aufz-hlung\">Stellen Sie die Datensatzherkunft auf die Abfrage <b>SELECT [ArtikelID], Artikelname FROM tblArtikel ORDER BY [Artikelname]; <\/b>ein.<\/li>\n<li class=\"aufz-hlung\">Weisen Sie den Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>die Werte <b>2 <\/b>und <b>0cm <\/b>zu.<\/li>\n<\/ul>\n<p>Fertig! Sie k&ouml;nnen nun den Artikel f&uuml;r den aktuellen Datensatz festlegen. Die Felder, die direkt aus der Tabelle <b>tblArtikel <\/b>stammen, werden dabei automatisch angepasst.<\/p>\n<h2>Summe der Bestellpositionen<\/h2>\n<p>Das Hauptformular soll die Summe der im Unterformular angezeigten Positionen anzeigen. Diese berechnen Sie am einfachsten direkt im Unterformular, indem Sie dort im Formularfu&szlig; ein Textfeld mit der Bezeichnung <b>txtGesamtsumme <\/b>und dem Steuerelementinhalt <b>=Summe(Endpreis)<\/b> einf&uuml;gen. Das Unterformular sieht nun im Entwurf wie in Bild 3 aus. Damit es sp&auml;ter im Hauptformular als Datenblatt angezeigt wird, stellen Sie noch die Eigenschaft <b>Standardansicht <\/b>auf <b>Datenblatt <\/b>ein.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/MNBeziehungenInHauptUndUnterformular-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Das Unterformular in der Entwurfsansicht<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p>Falls notwendig, setzen Sie noch das Format der W&auml;hrungs- und Prozentfelder auf die Werte <b>W&auml;hrung <\/b>beziehungsweise <b>Prozentzahl<\/b>.<\/p>\n<h2>Hauptformular zum Anzeigen der Bestelldaten<\/h2>\n<p>Nun erstellen Sie zun&auml;chst das Hauptformular. Es verwendet die Tabelle <b>tblBestellungen <\/b>als Datenherkunft. Ziehen Sie die gew&uuml;nschten Felder in den Detailbereich. Im vorliegenden Fall sind dies die Felder <b>BestellungID<\/b>, <b>KundeID<\/b>, <b>Bestelldatum<\/b>, <b>Lieferdatum <\/b>und <b>Versanddatum<\/b>. Auf die &uuml;brigen Felder k&ouml;nnen Sie der Einfachheit halber verzichten.<\/p>\n<p>F&uuml;gen Sie nun das Unterformular hinzu, indem Sie es vom Datenbankfenster direkt in den Entwurf des Hauptformulars hineinziehen. Access sollte die zu verkn&uuml;pfenden Felder automatisch erkennen und wie in Bild 4 anlegen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/MNBeziehungenInHauptUndUnterformular-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Haupt- und Unterformular mit Verkn&uuml;pfungseigenschaften<\/span><\/b><\/p>\n<p>Falls nicht, holen Sie dies von Hand nach, indem Sie auf eine der beiden Eigenschaften <b>Verkn&uuml;pfen von <\/b>oder <b>Verkn&uuml;pfen nach <\/b>und dann auf die erscheinende Schaltfl&auml;che klicken. Im folgenden Dialog k&ouml;nnen Sie die zu verkn&uuml;pfenden Felder bequem ausw&auml;hlen.<\/p>\n<p>Wenn Sie das Hauptformular dann &ouml;ffnen, haben Sie schon einen Teil der Arbeit geschafft: Sie k&ouml;nnen durch die Bestellungen bl&auml;ttern und das Unterformular zeigt die zur aktuellen Bestellung passenden Artikel an.<\/p>\n<p>Leider k&ouml;nnen Sie so nur mit viel Handarbeit neue Rechnungspositionen anlegen oder den Artikel einer Position &auml;ndern &#8211; im Unterformular werden jeweils nur der Artikelname und die Liefereinheit angepasst.<\/p>\n<p>Alle anderen Felder behalten ihren Wert oder &#8211; falls Sie eine neue Position anlegen &#8211; sind leer.<\/p>\n<p>Das &auml;ndern Sie im n&auml;chsten Schritt. Wie oben erw&auml;hnt, speichern Sie etwa die Felder <b>Preis <\/b>und <b>Mehrwertsteuer <\/b>in der Verkn&uuml;pfungstabelle, damit diese bei &auml;nderungen der zugrunde liegenden Artikeldaten nicht ebenfalls ge&auml;ndert werden.<\/p>\n<p>Allerdings erscheinen diese nicht automatisch in der Tabelle, sondern Sie m&uuml;ssen sie manuell oder per VBA noch einf&uuml;gen. Keine Frage, dass in diesem Fall VBA den Vorzug erh&auml;lt.<\/p>\n<p>Die Vorgehensweise ist einfach: Sie m&uuml;ssen nur beim Ausw&auml;hlen des Artikels die beiden Informationen aus der Tabelle <b>tblArtikel <\/b>auslesen und in die Felder im Unterformular eintragen. Dies erledigt die folgende Routine, die durch das Ereignis <b>Nach Aktualisierung <\/b>ausgel&ouml;st wird:<\/p>\n<pre>Private Sub ArtikelID_AfterUpdate()\r\n    Me!Einzelpreis = _\r\n    DLookup(&quot;Einzelpreis&quot;, &quot;tblArtikel&quot;, _\r\n    &quot;ArtikelID = &quot; &amp; Me!ArtikelID)\r\n    Me!Mehrwertsteuer = _\r\n    DLookup(&quot;Mehrwertsteuer&quot;, &quot;tblArtikel&quot;, _\r\n    &quot;ArtikelID = &quot; &amp; Me!ArtikelID)\r\n    End Sub<\/pre>\n<p>Nun fehlt noch die Ausgabe der Gesamtsumme der aktuellen Bestellung im Hauptformular. Dazu legen Sie unterhalb des Unterformulars ein Textfeld namens <b>txtGesamtsumme <\/b>an.<\/p>\n<p>Dass der Name mit dem entsprechenden Feld des Unterformulars &uuml;bereinstimmt, spielt keine Rolle &#8211; jedes Formular hat diesbez&uuml;glich seinen eigenen Namensraum. Als <b>Steuerelementinhalt <\/b>geben Sie den folgenden Ausdruck an:<\/p>\n<pre>=sfmBestellungen.Formular!txtGesamtsumme<\/pre>\n<p>Stellen Sie au&szlig;erdem die Eigenschaft <b>Format <\/b>auf den Wert <b>W&auml;hrung <\/b>ein.<\/p>\n<h2>Keine Positionen ohne Bestellung<\/h2>\n<p>Eine entscheidende Rolle beim Anlegen von Bestellpositionen spielt die Eigenschaft <b>Eingabe erforderlich <\/b>des Feldes <b>BestellungID <\/b>der Tabelle <b>tblBestelldetails<\/b>.<\/p>\n<p>Sie m&uuml;ssen es unbedingt auf den Wert <b>Ja <\/b>einstellen, damit Access sich meldet, wenn Sie einen Datensatz in der Tabelle <b>tblBestelldetails <\/b>anlegen, ohne dass im Feld <b>BestellungID <\/b>ein g&uuml;ltiger Wert eingetragen ist &#8211; in dem Fall der Prim&auml;rschl&uuml;sselwert eines Datensatzes der Tabelle <b>tblBestellungen<\/b>.<\/p>\n<p>Falls dies nicht der Fall ist, kann das folgende Ph&auml;nomen auftreten:<\/p>\n<p>Sie springen mit der Schaltfl&auml;che <b>Neuer Datensatz <\/b>der Navigationsleiste des Hauptformulars zu einem neuen, leeren Bestellungsdatensatz.<\/p>\n<p>Dann wechseln Sie in das Unterformular und bearbeiten den dort angezeigten leeren Datensatz, indem Sie etwa den Namen des Artikels ausw&auml;hlen oder einen Wert in eines der anderen Felder eingeben.<\/p>\n<p>Wechseln Sie anschlie&szlig;end zu einem bestehenden Datensatz und wieder zur&uuml;ck zum soeben angelegten Datensatz. Die im vorherigen Schritt angelegte Position ist verschwunden! Und zwar nicht in die ewigen Jagdgr&uuml;nde, sondern in die Tabelle <b>tblBestelldetails<\/b>. <\/p>\n<p>Dort fristet der Datensatz von nun an ein Dasein als nicht mit einer Bestellung verkn&uuml;pfter und damit &uuml;ber das Formular <b>frmBestellungen <\/b>nicht mehr auffindbarer Posten (siehe Bild 5).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/MNBeziehungenInHauptUndUnterformular-web-images\/pic007_opt.jpeg\" alt=\"pic007.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Diese Einstellung verhindert die Eingabe von Bestellpositionen ohne Bestellung.<\/span><\/b><\/p>\n<p>Wenn Sie die Eigenschaft <b>Eingabe erforderlich <\/b>wie in Bild 6 auf <b>Ja <\/b>eingestellt haben, passiert dies nicht. Stattdessen erscheint eine entsprechende Fehlermeldung.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/MNBeziehungenInHauptUndUnterformular-web-images\/pic006_opt.jpeg\" alt=\"pic006.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Dieser Datensatz geh&ouml;rt zu keiner Bestellung und wird im Formular nicht mehr angezeigt.<\/span><\/b><\/p>\n<p>Das ist nat&uuml;rlich nicht besonders sch&ouml;n, aber zum Gl&uuml;ck lassen sich solche Fehler zumindest in Formularen abfangen. Der richtige Ort daf&uuml;r ist die <b>Bei Fehler<\/b>-Ereigniseigenschaft, f&uuml;r die Sie die Routine aus Listing 1 anlegen.<\/p>\n<p class=\"tabellenkopf\">Listing 1: Abfangen eines Fehlers, der durch das Anlegen einer Bestellposition ohne vorhandene Bestellung ausgel&ouml;st wurde<\/p>\n<pre>Private Sub Form_Error(DataErr As Integer, Response As Integer)\r\n    Select Case DataErr\r\n    Case 3314\r\n    MsgBox &quot;Sie k&ouml;nnen keine Bestellposition eingeben, bevor Sie eine &quot; _\r\n    &amp; &quot;Bestellung angelegt haben.&quot;\r\n    Response = acDataErrContinue\r\n    Case Else\r\n    Response = acDataErrDisplay\r\n    End Select\r\n    End Sub<\/pre>\n<p>Die Routine pr&uuml;ft die mit dem Parameter <b>DataErr <\/b>&uuml;bergebene Fehlernummer und gibt im Falle des Fehlers mit der Nummer <b>3314 <\/b>eine passende Meldung aus. Leider erzeugen <b>Me.Undo<\/b>&#8211; und <b>SetFocus<\/b>-Befehle auf Elemente des Hauptformulars Fehler. Besser funktioniert diese Vorgehensweise, wenn der Prim&auml;rschl&uuml;ssel aus BestellungID und ArtikelID zusammengesetzt ist &#8211; den hier entstehenden Fehler kann man &uuml;ber den Fehlercode 3058 abfangen, die Eingabe r&uuml;ckg&auml;ngig machen und den Focus auf das Hauptformular setzen (s. Beispieldatenbank).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/MNBeziehungenInHauptUndUnterformular-web-images\/pic009_opt.jpeg\" alt=\"pic009.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Das fertige Formular zur Anzeige von Bestellungen und Bestelldetails im Haupt- und Unterformular.<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Wenn Sie die Daten beider Seiten einer m:n-Beziehung gleichzeitig bearbeiten m&ouml;chten, sind Formulare wie dieses die beste L&ouml;sung. <\/p>\n<p>Das gilt besonders, wenn auch die Verkn&uuml;pfungstabelle noch weitere Daten au&szlig;er den Fremdschl&uuml;sselfeldern zum Verkn&uuml;pfen mit den beiden anderen Tabellen enth&auml;lt.<\/p>\n<p>Ausbauf&auml;hig ist dieses Beispiel nat&uuml;rlich auch noch: So fehlt zum Beispiel M&ouml;glichkeit, die Kundendaten anzuzeigen und zu bearbeiten, und auch die &uuml;brigen Felder der Tabelle <b>tblBestellungen<\/b> lie&szlig;en sich noch unterbringen. Auch die Validierung der vorhandenen Felder w&auml;re in einer echten Anwendung Pflicht. Wie Sie dieses Formular mit einer Validierung ausstatten, erfahren Sie im Beitrag <b>Validierung von Daten<\/b>, den Sie auf <b>http:\/\/www.access-im-unternehmen.de <\/b>unter dem Shortlink 267 finden.<\/p>\n<p>F&uuml;r die Demonstration der in diesem Beitrag vorgestellten Techniken reicht dieses rudiment&auml;re Bestellformular allerdings v&ouml;llig aus.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>BeziehungenInFormularen.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{A456A45C-0B85-448D-B49F-0EA6BBB5E5AB}\/aiu_452.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Bestellungen-Formular der Nordwind-Datenbank wird oft als Beispiel f&uuml;r die Darstellung komplexer m:n-Beziehungen in Formularen angef&uuml;hrt. Dieses nachzubauen ist allerdings schwieriger, als man denkt &#8211; vor allem, wenn man nicht richtig im Thema steckt. Access im Unternehmen zeigt alle Tricks, die Sie zum Erstellen und Anpassen solcher Formulare ben&ouml;tigen.<\/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":[66022007,662007,44000023,44000021],"tags":[],"class_list":["post-55000452","post","type-post","status-publish","format-standard","hentry","category-66022007","category-662007","category-Mit_Formularen_arbeiten","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>m:n-Beziehungen im Haupt- und Unterformular - 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\/mnBeziehungen_im_Haupt_und_Unterformular\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"m:n-Beziehungen im Haupt- und Unterformular\" \/>\n<meta property=\"og:description\" content=\"Das Bestellungen-Formular der Nordwind-Datenbank wird oft als Beispiel f&uuml;r die Darstellung komplexer m:n-Beziehungen in Formularen angef&uuml;hrt. Dieses nachzubauen ist allerdings schwieriger, als man denkt - vor allem, wenn man nicht richtig im Thema steckt. Access im Unternehmen zeigt alle Tricks, die Sie zum Erstellen und Anpassen solcher Formulare ben&ouml;tigen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-15T16:27:17+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/967c1adb87b84936b09a16a1f959620e\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"m:n-Beziehungen im Haupt- und Unterformular\",\"datePublished\":\"2020-05-15T16:27:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/\"},\"wordCount\":1688,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/967c1adb87b84936b09a16a1f959620e\",\"articleSection\":[\"2\\\/2007\",\"2007\",\"Mit Formularen arbeiten\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/\",\"name\":\"m:n-Beziehungen im Haupt- und Unterformular - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/967c1adb87b84936b09a16a1f959620e\",\"datePublished\":\"2020-05-15T16:27:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/967c1adb87b84936b09a16a1f959620e\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/967c1adb87b84936b09a16a1f959620e\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnBeziehungen_im_Haupt_und_Unterformular\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"m:n-Beziehungen im Haupt- und Unterformular\"}]},{\"@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-Beziehungen im Haupt- und Unterformular - 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\/mnBeziehungen_im_Haupt_und_Unterformular\/","og_locale":"de_DE","og_type":"article","og_title":"m:n-Beziehungen im Haupt- und Unterformular","og_description":"Das Bestellungen-Formular der Nordwind-Datenbank wird oft als Beispiel f&uuml;r die Darstellung komplexer m:n-Beziehungen in Formularen angef&uuml;hrt. Dieses nachzubauen ist allerdings schwieriger, als man denkt - vor allem, wenn man nicht richtig im Thema steckt. Access im Unternehmen zeigt alle Tricks, die Sie zum Erstellen und Anpassen solcher Formulare ben&ouml;tigen.","og_url":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-15T16:27:17+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/967c1adb87b84936b09a16a1f959620e","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"m:n-Beziehungen im Haupt- und Unterformular","datePublished":"2020-05-15T16:27:17+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/"},"wordCount":1688,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/967c1adb87b84936b09a16a1f959620e","articleSection":["2\/2007","2007","Mit Formularen arbeiten","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/","url":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/","name":"m:n-Beziehungen im Haupt- und Unterformular - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/967c1adb87b84936b09a16a1f959620e","datePublished":"2020-05-15T16:27:17+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/967c1adb87b84936b09a16a1f959620e","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/967c1adb87b84936b09a16a1f959620e"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/mnBeziehungen_im_Haupt_und_Unterformular\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"m:n-Beziehungen im Haupt- und Unterformular"}]},{"@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\/55000452","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=55000452"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000452\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}