{"id":55000203,"date":"2013-12-01T00:00:00","date_gmt":"2020-01-24T15:58:53","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=203"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ereignisse_abgreifen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html","title":{"rendered":"Ereignisse abgreifen"},"content":{"rendered":"<p class='introduction'>Normalerweise implementieren Sie die Ereignisprozeduren von Formularen und Steuerelementen jeweils im Klassenmodul des jeweiligen Formulars. Aber wussten Sie, dass Sie die Ereignisse auch in anderen Klassenmodulen implementieren k&ouml;nnen Falls nicht: Es funktioniert! Und f&uuml;r diese Technik gibt es auch noch sinnvolle Einsatzzwecke. Wie dies gelingt und welche Einsatzzwecke es daf&uuml;r gibt, erfahren Sie im vorliegenden Artikel. <\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1306_EreignisseAbgreifen.mdb<\/b>.<\/p>\n<h2>Ereignisse implementieren<\/h2>\n<p>Bestimmte Prozeduren werden durch Ereignisse ausgel&ouml;st. Einige haben Sie in <b>Access [basics] <\/b>bereits kennengelernt &#8211; zum Beispiel das Ereignis <b>Beim Klicken <\/b>einer Schaltfl&auml;che oder Formularereignisse wie <b>Beim &ouml;ffnen<\/b>, <b>Beim Anzeigen<\/b>, <b>Beim Laden <\/b>oder <b>Beim Entladen <\/b>eines Formulars.<\/p>\n<p>Diese k&ouml;nnen Sie nutzen, indem Sie erstens f&uuml;r die Ereigniseigenschaft festlegen, dass das Ereignis eine Ereignisprozedur ausl&ouml;sen soll. Dies erledigen Sie durch Eintragen des Wertes <b>[Ereignisprozedur] <\/b>f&uuml;r die entsprechende Ereigniseigenschaft.<\/p>\n<p>Zus&auml;tzlich ben&ouml;tigen Sie eine Ereignisprozedur, deren erste Zeile eine spezielle, vom Namen des Objekts (also des Formulars oder Steuerelements) und vom Ereignis abh&auml;ngige Syntax aufweisen muss. Diese sieht etwa f&uuml;r das Laden eines Formulars wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()<\/pre>\n<p>Die erste Zeile mancher Ereignisprozeduren enth&auml;lt noch Parameter, die verschiedene Informationen liefern, die beim Durchf&uuml;hren der Prozedur hilfreich sein k&ouml;nnen. In manchen F&auml;llen nehmen die Parameter auch R&uuml;ckgabewerte entgegen, mit denen sich das weitere Verhalten von Access steuern l&auml;sst.<\/p>\n<h2>Einfache Beispiele<\/h2>\n<p>Die Konstellation aus Bild 1 liefert ein paar Beispiele f&uuml;r Ereignisprozeduren. Die Schaltfl&auml;che <b>cmdForm2-Oeffnen <\/b>l&ouml;st die folgende Prozedur aus und &ouml;ffnet damit das zweite Formular:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_203_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_203_001.png\" alt=\"Formular 1 &ouml;ffnet Formular 2, Formular 2 wird wieder geschlossen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Formular 1 &ouml;ffnet Formular 2, Formular 2 wird wieder geschlossen<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdForm2Oeffnen_Click()\r\n     DoCmd.OpenForm \"frm2\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Schaltfl&auml;che <b>cmdForm2-Schliessen <\/b>im zweiten Formular schlie&szlig;t das Formular wieder und gibt eine Meldung aus, dass Formular 2 geschlossen wird:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdForm2Schliessen_Click()\r\n    DoCmd.Close acForm, Me.Name\r\n    <span style=\"color:blue;\">MsgBox<\/span> \"Formular 2 wird geschlossen.\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Formular 1 beim Schlie&szlig;en von Formular 2 informieren<\/h2>\n<p>Das ist alles kein Problem, wenn die Formulare unabh&auml;ngig voneinander sind. Wenn Formular 1 aber nun Werte anzeigt (beispielsweise in einem Unterformular in der Datenblattansicht), die in Formular 2 bearbeitet werden, soll das Unterformular von Formular 1 nach dem Schlie&szlig;en von Formular 2 tunlichst aktualisiert werden, damit es den aktuellen Stand des bearbeiteten Datensatzes anzeigt.<\/p>\n<p>Formular 1 muss also irgendwie informiert werden, wenn der Benutzer Formular 2 schlie&szlig;t. Dies k&ouml;nnen Sie auf folgende Art erledigen: Dabei &ouml;ffnet Formular 1 das Formular 2 mit dem Wert <b>acDialog <\/b>f&uuml;r den Parameter <b>WindowMode<\/b>. Dies bewirkt, dass Access den aufrufenden Code erst fortsetzt, wenn Formular 2 den Fokus verliert. Dies kann durch zwei Ereignisse geschehen &#8211; wenn der Benutzer das Formular schlie&szlig;t oder wenn es nicht mehr sichtbar ist.<\/p>\n<p>Schauen wir uns dies f&uuml;r die Beispielformulare <b>frm1_1 <\/b>und <b>frm2_1 <\/b>an. Die Schaltfl&auml;che in <b>frm1_1 <\/b>l&ouml;st die Ereignisprozedur aus Listing 1 aus. Formular 2 wird dadurch als modaler Dialog ge&ouml;ffnet, die zweite Anweisung der Prozedur wird noch nicht ausgef&uuml;hrt.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdForm2Oeffnen_Click()\r\n     DoCmd.OpenForm \"frm2_1\", WindowMode:=acDialog\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Formular 2 ist geschlossen oder unsichtbar\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p class='imagetext'>Listing 1: Formular modal &ouml;ffnen<\/p>\n<p>Erst wenn der Benutzer Formular 2 schlie&szlig;t, zeigt die Prozedur die Meldung mit dem Text <b>Formular 2 ist geschlossen <\/b>an.<\/p>\n<p>Der Nachteil bei dieser Vorgehensweise ist, dass der Benutzer erst nach dem Schlie&szlig;en von Formular 2 wieder auf Formular 1 oder andere Formulare zugreifen kann. Das kann aber auch zum Vorteil werden &#8211; n&auml;mlich dann, wenn das aufrufende Formular die im aufgerufenen Formulare eingegebenen Daten oder Aktionen erwartet.<\/p>\n<h2>Ereignisse abgreifen<\/h2>\n<p>Es geht aber noch etwas eleganter: Beim folgenden Beispiel ruft die Schaltfl&auml;che in Formular 1 wiederum Formular 2 auf, diesmal allerdings nicht im modalen Modus. Als Beispiele dienen die Formulare <b>frm1_2 <\/b>und <b>frm2_2<\/b>.<\/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\/55000203\/\">\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\/55000203?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\/55000203\/\"\/>\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>Normalerweise implementieren Sie die Ereignisprozeduren von Formularen und Steuerelementen jeweils im Klassenmodul des jeweiligen Formulars. Aber wussten Sie, dass Sie die Ereignisse auch in anderen Klassenmodulen implementieren k&ouml;nnen Falls nicht: Es funktioniert! Und f&uuml;r diese Technik gibt es auch noch sinnvolle Einsatzzwecke. Wie dies gelingt und welche Einsatzzwecke es daf&uuml;r gibt, erfahren Sie im vorliegenden 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":[662013,66062013,44000011],"tags":[],"class_list":["post-55000203","post","type-post","status-publish","format-standard","hentry","category-662013","category-66062013","category-VBAGrundlagen"],"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 abgreifen - Access [basics]<\/title>\n<meta name=\"description\" content=\"Normalerweise implementieren Sie die Ereignisprozeduren von Formularen und Steuerelementen jeweils im Klassenmodul des jeweiligen Formulars. Aber wussten Sie, dass Sie die Ereignisse auch in anderen Klassenmodulen implementieren k\u00f6nnen? Falls nicht: Es funktioniert! Und f\u00fcr diese Technik gibt es auch noch sinnvolle Einsatzzwecke. Wie dies gelingt und welche Einsatzzwecke es daf\u00fcr gibt, erfahren Sie im vorliegenden Artikel.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ereignisse abgreifen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Normalerweise implementieren Sie die Ereignisprozeduren von Formularen und Steuerelementen jeweils im Klassenmodul des jeweiligen Formulars. Aber wussten Sie, dass Sie die Ereignisse auch in anderen Klassenmodulen implementieren k\u00f6nnen? Falls nicht: Es funktioniert! Und f\u00fcr diese Technik gibt es auch noch sinnvolle Einsatzzwecke. Wie dies gelingt und welche Einsatzzwecke es daf\u00fcr gibt, erfahren Sie im vorliegenden Artikel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:53+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_203_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_abgreifen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_203_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html\",\"name\":\"Ereignisse abgreifen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:53+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Normalerweise implementieren Sie die Ereignisprozeduren von Formularen und Steuerelementen jeweils im Klassenmodul des jeweiligen Formulars. Aber wussten Sie, dass Sie die Ereignisse auch in anderen Klassenmodulen implementieren k\\u00f6nnen? Falls nicht: Es funktioniert! Und f\\u00fcr diese Technik gibt es auch noch sinnvolle Einsatzzwecke. Wie dies gelingt und welche Einsatzzwecke es daf\\u00fcr gibt, erfahren Sie im vorliegenden Artikel.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.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_abgreifen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Ereignisse_abgreifen.html\",\"name\":\"Ereignisse abgreifen\"}}]},{\"@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\/55000203","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=55000203"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000203\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}