{"id":55000118,"date":"2012-10-01T00:00:00","date_gmt":"2020-01-24T15:58:12","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=118"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ereignisse_in_Formularen_oeffnen_und_Schliessen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html","title":{"rendered":"Ereignisse in Formularen: &ouml;ffnen und Schlie&szlig;en"},"content":{"rendered":"<p class='introduction'>Nachdem Sie im ersten Teil dieser Artikelreihe gelernt haben, wie Sie die Reihenfolge der auftretenden Ereignisse beim &ouml;ffnen und Schlie&szlig;en von Formularen samt Unterformular ermitteln, schauen wir uns in diesem Teil genauer an, was beim &ouml;ffnen eines Formulars geschieht und welche Aktionen Sie in den verschiedenen Ereignisprozeduren unterbringen k&ouml;nnen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1205_EreignisseInFormularen_2.mdb<\/b>.<\/p>\n<h2>Ereignisse beim &ouml;ffnen eines Formulars<\/h2>\n<p>Schauen wir uns nun im Detail an, was beim &ouml;ffnen eines Formulars geschieht und was Sie mit den ausgel&ouml;sten Prozeduren anfangen k&ouml;nnen.<\/p>\n<h2>Das Ereignis Beim &ouml;ffnen<\/h2>\n<p>Dieses Ereignis wird beim &ouml;ffnen eines Formulars als Erstes ausgel&ouml;st. Damit dies geschieht, stellen Sie den Wert der Ereigniseigenschaft <b>Beim &ouml;ffnen <\/b>auf den Wert <b>[Ereignisprozedur] <\/b>ein und klicken auf die Schaltfl&auml;che mit den drei Punkten, um die durch das Ereignis ausgel&ouml;ste Ereignisprozedur anzulegen. Diese sieht zun&auml;chst so aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Es bietet einen Parameter namens <b>Cancel<\/b>, mit dem sich das &ouml;ffnen abbrechen l&auml;sst, und das ist einer der wesentlichen Unterschiede zum Ereignis <b>Form_Load<\/b>, das wir gleich vorstellen.<\/p>\n<h2>Das Ereignis Beim Laden<\/h2>\n<p>Dieses Ereignis wird nach dem Ereignis <b>Form_Open <\/b>ausgel&ouml;st. Der wesentliche Unterschied zwischen beiden Ereignissen ist, dass Sie das &ouml;ffnen des Formulars im Ereignis <b>Beim &ouml;ffnen <\/b>abbrechen k&ouml;nnen. Au&szlig;erdem bietet das <b>Form_Load<\/b>-Ereignis die M&ouml;glichkeit, die angezeigten Daten bereits beim Laden per VBA-Code anzupassen.<\/p>\n<h2>&ouml;ffnungsvorgang abbrechen<\/h2>\n<p>Wenn Sie den Parameter <b>Cancel <\/b>auf den Wert <b>True <\/b>einstellen, wird das Formular gar nicht erst ge&ouml;ffnet &#8211; probieren Sie es aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     Cancel = <span style=\"color:blue;\">True<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Nat&uuml;rlich macht es keinen Sinn, ein Formular mit einer Prozedur auszustatten, die dieses sofort wieder schlie&szlig;t. Daf&uuml;r sollte es schon eine entsprechende Bedingung geben &#8211; zum Beispiel, dass das Formular keine Daten enth&auml;lt. Dies l&auml;sst sich wie folgt realisieren:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>Me.Recordset.EOF<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Das Formular enth&auml;lt keine Daten.\"\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das <b>Recordset<\/b>-Objekt erm&ouml;glicht den Zugriff auf die Daten des Formulars. Wenn die Eigenschaft <b>EOF <\/b>wahr ist, bedeutet dies, dass der Datensatzzeiger sich hinter dem letzten Datensatz befindet, was gleichbedeutend mit einer leeren Datenherkunft ist. In diesem Fall soll eine Meldung erscheinen und der Parameter <b>Cancel <\/b>auf den Wert <b>True <\/b>eingestellt werden, damit das Formular nach der Anzeige der Meldung gar nicht erst ge&ouml;ffnet wird.<\/p>\n<p>Wie k&ouml;nnen Sie dies ausprobieren Indem Sie das Formular mit der <b>DoCmd.OpenForm<\/b>-Methode &ouml;ffnen und dabei eine <b>WhereCondition <\/b>&uuml;bergeben, die garantiert f&uuml;r keinen Datensatz der Datenherkunft gilt. Ein passender Kandidat f&uuml;r eine solche Bedingung lautet <b>1=2<\/b>. Setzen Sie die folgende Anweisung im Direktbereich des VBA-Editors ab:<\/p>\n<pre>DoCmd.OpenForm \"frmOhneDaten\", WhereCondition:=\"1=2\"<\/pre>\n<p>Die Meldung erscheint wie erwartet, aber leider zieht der Aufruf auch noch einen Fehler nach sich (siehe Bild 1). Um diesen Fehler zu verhindern, m&uuml;ssen Sie die <b>DoCmd.OpenForm<\/b>-Methode in eine kleine Fehlerbehandlung integrieren. Diese sorgt daf&uuml;r, dass im Falle des Fehlers <b>2501 <\/b>keine Meldung angezeigt wird, sondern nur bei anderen Fehlercodes:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_118_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_118_001.png\" alt=\"Fehler beim Abbruch des &ouml;ffnungsvorgangs\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Fehler beim Abbruch des &ouml;ffnungsvorgangs<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>FormularOeffnenAbbrechen()\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     DoCmd.OpenForm \"frmOhneDaten\", WhereCondition:=\"1=2\"\r\n     Select Case Err.Number\r\n         <span style=\"color:blue;\">Case <\/span>0, 2501\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Fehler\"\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Datenherkunft einstellen<\/h2>\n<p>Meistens ist die Tabelle oder Abfrage, welche die Daten f&uuml;r ein Formular liefert, bereits vor dem &ouml;ffnen bekannt und wird f&uuml;r die Eigenschaft <b>Datenherkunft <\/b>des Formulars eingestellt. Gegebenfalls geben Sie beim &ouml;ffnen mit <b>Docmd.OpenForm <\/b>noch eine <b>WhereCondition <\/b>oder einen <b>Filter <\/b>mit, um die Daten einzuschr&auml;nken.<\/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\/55000118\/\">\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\/55000118?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\/55000118\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\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>Nachdem Sie im ersten Teil dieser Artikelreihe gelernt haben, wie Sie die Reihenfolge der auftretenden Ereignisse beim &ouml;ffnen und Schlie&szlig;en von Formularen samt Unterformular ermitteln, schauen wir uns in diesem Teil genauer an, was beim &ouml;ffnen eines Formulars geschieht und welche Aktionen Sie in den verschiedenen Ereignisprozeduren unterbringen k&ouml;nnen.<\/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":[662012,66052012,44000010],"tags":[],"class_list":["post-55000118","post","type-post","status-publish","format-standard","hentry","category-662012","category-66052012","category-Formulare_mit_VBA_programmieren"],"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>Ereignisse in Formularen: &ouml;ffnen und Schlie&szlig;en - Access [basics]<\/title>\n<meta name=\"description\" content=\"Nachdem Sie im ersten Teil dieser Artikelreihe gelernt haben, wie Sie die Reihenfolge der auftretenden Ereignisse beim \u00d6ffnen und Schlie\u00dfen von Formularen samt Unterformular ermitteln, schauen wir uns in diesem Teil genauer an, was beim \u00d6ffnen eines Formulars geschieht und welche Aktionen Sie in den verschiedenen Ereignisprozeduren unterbringen k\u00f6nnen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ereignisse in Formularen: &ouml;ffnen und Schlie&szlig;en - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Nachdem Sie im ersten Teil dieser Artikelreihe gelernt haben, wie Sie die Reihenfolge der auftretenden Ereignisse beim \u00d6ffnen und Schlie\u00dfen von Formularen samt Unterformular ermitteln, schauen wir uns in diesem Teil genauer an, was beim \u00d6ffnen eines Formulars geschieht und welche Aktionen Sie in den verschiedenen Ereignisprozeduren unterbringen k\u00f6nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:12+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_118_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=\"10\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\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_118_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html\",\"name\":\"Ereignisse in Formularen: &ouml;ffnen und Schlie&szlig;en - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:12+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Nachdem Sie im ersten Teil dieser Artikelreihe gelernt haben, wie Sie die Reihenfolge der auftretenden Ereignisse beim \\u00d6ffnen und Schlie\\u00dfen von Formularen samt Unterformular ermitteln, schauen wir uns in diesem Teil genauer an, was beim \\u00d6ffnen eines Formulars geschieht und welche Aktionen Sie in den verschiedenen Ereignisprozeduren unterbringen k\\u00f6nnen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.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\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_in_Formularen_oeffnen_und_Schliessen.html\",\"name\":\"Ereignisse in Formularen: &ouml;ffnen und Schlie&szlig;en\"}}]},{\"@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\/55000118","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=55000118"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000118\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}