{"id":55000408,"date":"2018-06-01T00:00:00","date_gmt":"2020-01-24T16:00:08","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=408"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Details_aus_dem_Unterformular_oeffnen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html","title":{"rendered":"Details aus dem Unterformular &ouml;ffnen"},"content":{"rendered":"<p class='introduction'>Ein Unterformular kann einige Daten anzeigen, aber oft ist die Breite des Unterformulars begrenzt und der Benutzer muss scrollen, um die nicht sichtbaren Spalten zu lesen. Das ist nicht unbedingt komfortabel. Manchmal soll dann doch ein Detailformular die Daten zu einem Datensatz in &uuml;bersichtlicher Form anzeigen. Wie aber &ouml;ffnen wir das Detailformular zu einem Datensatz vom Unterformular aus Und wie aktualisieren wir das Unterformular, wenn wir den ge&ouml;ffneten Datensatz im Detailformular ge&auml;ndert haben All dies zeigt der vorliegende Artikel.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1803_OeffnenAusUnterformular.accdb<\/b>.<\/p>\n<h2>Haupt- und Unterformular erstellen<\/h2>\n<p>Das Unterformular soll den Namen <b>sfmArtikel <\/b>erhalten und alle Datens&auml;tze der Tabelle <b>tblArtikel <\/b>anzeigen. Dazu stellen Sie die Eigenschaft <b>Datenherkunft <\/b>des Unterformulars auf die Tabelle <b>tblArtikel <\/b>ein. Wechseln Sie dann zur Anzeige der Feldliste und ziehen Sie alle Eintr&auml;ge dieser Liste in den Detailbereich der Entwurfsansicht des Formulars (siehe Bild 1). Die Anordnung spielt in diesem Fall kenie besondere Rolle, da wir durch Einstellen der Eigenschaft <b>Standardansicht <\/b>auf den Wert <b>Datenblatt <\/b>ohnehin daf&uuml;r sorgen, dass die Datens&auml;tze im Unterformular in der Datenblatt-Ansicht erscheinen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_408_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_408_001.png\" alt=\"Formular-Entwurf des Unterformulars sfmArtikel\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Formular-Entwurf des Unterformulars sfmArtikel<\/p>\n<p>Schlie&szlig;en Sie dann das Formular und &ouml;ffnen Sie ein neues, leeres Formular in der Entwurfsansicht. Dieses speichern wir unter dem Namen <b>frmArtikel<\/b>. F&uuml;gen Sie dann das Unterformular hinzu, in dem Sie dieses aus dem Navigationsbereich in den Detailbereich des Formularentwurfs ziehen (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_408_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_408_002.png\" alt=\"Hinzuf&uuml;gen des Unterformulars zum Hauptformular\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Hinzuf&uuml;gen des Unterformulars zum Hauptformular<\/p>\n<p>Damit das Unterformular beim Vergr&ouml;&szlig;ern des Hauptformulars mitw&auml;chst, stellen wir seine beiden Eigenschaften <b>Horizontaler Anker <\/b>und <b>Vertikaler Anker <\/b>auf <b>Beide <\/b>ein.<\/p>\n<h2>Detailformular erstellen<\/h2>\n<p>Das Detailformular erstellen Sie ebenfalls als neues, leeres Formular, das Sie unter dem Namen <b>frmArtikeldetails <\/b>speichern. F&uuml;gen Sie der Datenherkunft ebenfalls die Tabelle <b>tblArtikel <\/b>hinzu und ziehen Sie alle Felder der Datenquelle aus der Feldliste in den Formularentwurf. Au&szlig;erdem legen wir im Detailformular noch eine <b>OK<\/b>-Schaltfl&auml;che namens <b>frmOK <\/b>an (siehe Bild 3).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_408_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_408_003.png\" alt=\"Entwurf des Detailformulars\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Entwurf des Detailformulars<\/p>\n<h2>Details per Schaltfl&auml;che anzeigen<\/h2>\n<p>Schlie&szlig;en Sie das Detailformular und &ouml;ffnen Sie erneut das Formular mit dem Unterformular. &uuml;ber dem Formular f&uuml;gen wir nun eine Schaltfl&auml;che zum Anzeigen der Details des jeweils markierten Datensatzes im Unterformular ein. Sie erh&auml;lt den Text <b>Details anzeigen <\/b>und den Namen <b>cmdDetailsAnzeigen<\/b>.<\/p>\n<p>Au&szlig;erdem stellen Sie den Wert der Eigenschaft <b>Beim Klicken <\/b>auf <b>[Ereignisprozedur] <\/b>ein und legen durch einen Klick auf die Schaltfl&auml;che mit den drei Punkten (<b>&#8230;<\/b>) rechts von der Eigenschaft die Ereignisprozedur <b>cmdDetailsAnzeigen_Click <\/b>an. Um einfach nur das Detailformular mit dem aktuell im Unterformular markierten Datensatz zu &ouml;ffnen, erg&auml;nzen Sie die Prozedur wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdDetailsAnzeigen_Click()\r\n    <span style=\"color:blue;\">Dim <\/span>lngArtikelID<span style=\"color:blue;\"> As Long<\/span>\r\n    lngArtikelID =                    Me!sfmArtikel.Form!ArtikelID\r\n    DoCmd.OpenForm \"frmArtikeldetails\",               WhereCondition:=\"ArtikelID = \"                                 & lngArtikelID\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Prozedur ermittelt den Wert des Prim&auml;rschl&uuml;sselfeldes des aktuell im Unterformular ausgew&auml;hlten Datensatzes. Das Unterformular-Steuerelement referenzieren wir mit <b>Me!sfmArtikel<\/b>, das darin enthaltene Unterformular mit <b>Me!sfmArtikel.Form <\/b>und das Feld schlie&szlig;lich mit <b>Me!sfmArtikel.Form!ArtikelID<\/b>. Diesen Wert speichern wir in der Variablen <b>lngArtikel<\/b>. Diese nutzen wir in der folgenden <b>DoCmd.OpenForm<\/b>-Anweisung als Teil des Kriteriums <b>&#8222;ArtikelID = &#8220; &#038; lngArtikelID<\/b>. Damit &ouml;ffnen wir per Mausklick das Detailformular mit dem aktuellen Datensatz, was wie in Bild 4 aussieht.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_408_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_408_004.png\" alt=\"Aufruf des Detailformulars\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Aufruf des Detailformulars<\/p>\n<p>Ein Problem kann hier auftreten, n&auml;mlich dann, wenn der Benutzer die Schaltfl&auml;che bet&auml;tigt, wenn sich der Datensatzzeiger gerade auf einem neuen, leeren Datensatz befindet. Dann erscheint n&auml;mlich die Fehlermeldung aus Bild 5. Der Fehler resultiert daraus, dass das Feld <b>ArtikelID <\/b>f&uuml;r den neuen, leeren Datensatz noch den Wert <b>Null <\/b>enth&auml;lt. Wenn wir dies einer Variable des Typs <b>Long <\/b>zuweisen, erhalten wir den hier vorliegenden Fehler.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_408_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_408_005.png\" alt=\"Fehler beim Aufruf eines leeren Datensatzes\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Fehler beim Aufruf eines leeren Datensatzes<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000408\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000408?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000408\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"123b777de9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Unterformular kann einige Daten anzeigen, aber oft ist die Breite des Unterformulars begrenzt und der Benutzer muss scrollen, um die nicht sichtbaren Spalten zu lesen. Das ist nicht unbedingt komfortabel. Manchmal soll dann doch ein Detailformular die Daten zu einem Datensatz in &uuml;bersichtlicher Form anzeigen. Wie aber &ouml;ffnen wir das Detailformular zu einem Datensatz vom Unterformular aus Und wie aktualisieren wir das Unterformular, wenn wir den ge&ouml;ffneten Datensatz im Detailformular ge&auml;ndert haben All dies zeigt der vorliegende Artikel.<\/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":[662018,66032018,44000004],"tags":[],"class_list":["post-55000408","post","type-post","status-publish","format-standard","hentry","category-662018","category-66032018","category-Formulare_fuer_die_Dateneingabe"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Details aus dem Unterformular &ouml;ffnen - Access [basics]<\/title>\n<meta name=\"description\" content=\"Ein Unterformular kann einige Daten anzeigen, aber oft ist die Breite des Unterformulars begrenzt und der Benutzer muss scrollen, um die nicht sichtbaren Spalten zu lesen. Das ist nicht unbedingt komfortabel. Manchmal soll dann doch ein Detailformular die Daten zu einem Datensatz in \u00fcbersichtlicher Form anzeigen. Wie aber \u00f6ffnen wir das Detailformular zu einem Datensatz vom Unterformular aus? Und wie aktualisieren wir das Unterformular, wenn wir den ge\u00f6ffneten Datensatz im Detailformular ge\u00e4ndert haben? All dies zeigt der vorliegende Artikel.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Details aus dem Unterformular &ouml;ffnen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Ein Unterformular kann einige Daten anzeigen, aber oft ist die Breite des Unterformulars begrenzt und der Benutzer muss scrollen, um die nicht sichtbaren Spalten zu lesen. Das ist nicht unbedingt komfortabel. Manchmal soll dann doch ein Detailformular die Daten zu einem Datensatz in \u00fcbersichtlicher Form anzeigen. Wie aber \u00f6ffnen wir das Detailformular zu einem Datensatz vom Unterformular aus? Und wie aktualisieren wir das Unterformular, wenn wir den ge\u00f6ffneten Datensatz im Detailformular ge\u00e4ndert haben? All dies zeigt der vorliegende Artikel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T16:00:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_408_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"8\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_408_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html\",\"name\":\"Details aus dem Unterformular &ouml;ffnen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html#primaryimage\"},\"datePublished\":\"2020-01-24T16:00:08+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Ein Unterformular kann einige Daten anzeigen, aber oft ist die Breite des Unterformulars begrenzt und der Benutzer muss scrollen, um die nicht sichtbaren Spalten zu lesen. Das ist nicht unbedingt komfortabel. Manchmal soll dann doch ein Detailformular die Daten zu einem Datensatz in \\u00fcbersichtlicher Form anzeigen. Wie aber \\u00f6ffnen wir das Detailformular zu einem Datensatz vom Unterformular aus? Und wie aktualisieren wir das Unterformular, wenn wir den ge\\u00f6ffneten Datensatz im Detailformular ge\\u00e4ndert haben? All dies zeigt der vorliegende Artikel.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Details_aus_dem_Unterformular_oeffnen.html\",\"name\":\"Details aus dem Unterformular &ouml;ffnen\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000408"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000408\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}