{"id":55000247,"date":"2014-12-01T00:00:00","date_gmt":"2020-01-24T15:59:11","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=247"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Datenbankereignis_beim_Schliessen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html","title":{"rendered":"Datenbankereignis beim Schlie&szlig;en"},"content":{"rendered":"<p class='introduction'>Access bietet die M&ouml;glichkeit, beim Start ein Makro namens <b>AutoExec<\/b> auszuf&uuml;hren oder ein als Startformular angegebenes Startformular anzuzeigen. Damit lassen sich gleich bei Start notwendige Aktionen durchf&uuml;hren. Beim Schlie&szlig;en einer Datenbank sieht es anders aus: Hier stellt Microsoft keine eingebaute M&ouml;glichkeit bereit, um abschlie&szlig;ende Arbeiten durchzuf&uuml;hren. Dazu geh&ouml;rt beispielsweise das Speichern von w&auml;hrend der Benutzung ge&auml;nderten Konfigurationsdaten. Dieser Artikel zeigt, wie Sie diese Funktion nachr&uuml;sten.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1406_DatenbankereignisBeimSchliessen.mdb<\/b>.<\/p>\n<p>Dass beim &ouml;ffnen einer Datenbank Aktionen ausgef&uuml;hrt werden, ist selbstverst&auml;ndlich. Aber manchmal ist es auch n&ouml;tig, das Schlie&szlig;en einer Datenbank abzufangen &#8211; und wenn Sie auch nur aus irgendeinem Grund fragen m&ouml;chten: <b>Wollen Sie die Anwendung wirklich beenden<\/b><\/p>\n<p>Vielleicht haben Sie aber auch einen besseren Grund &#8211; beispielsweise k&ouml;nnten Sie so Informationen, die Sie w&auml;hrend der Anwendung in globalen Variablen oder in TempVars speichern, um nicht st&auml;ndig auf die Optionentabelle zugreifen zu m&uuml;ssen, wieder zur&uuml;ckschreiben.<\/p>\n<p>Wie auch immer: Zun&auml;chst einmal m&uuml;ssen herausfinden, wie man den Zeitpunkt des Schlie&szlig;ens der Anwendung ermittelt. Tatsache ist n&auml;mlich, dass Access keine solche Funktion wie etwa beim Starten einer Anwendung bereitstellt.<\/p>\n<h2>AutoClose &uuml;ber Umwege<\/h2>\n<p>Da es keine eingebaute M&ouml;glichkeit gibt, pr&uuml;fen wir einmal, welchen Weg wir w&auml;hlen k&ouml;nnen. Gibt es &uuml;berhaupt andere Ereignisse, die man etwa mit dem Access-Anwendungsobjekt assoziieren k&ouml;nnte Also so etwas wie Access_Close Nein: Access bietet keine solchen M&ouml;glichkeiten.<\/p>\n<p>Aber wer sagt denn, dass wir uns in diesem Fall an Access selbst halten m&uuml;ssen Vielleicht l&ouml;st Access ja ein Ereignis eines anderen Objekts aus, wenn man es schlie&szlig;t &#8230; und das ist unser Ansatzpunkt: Wenn beispielsweise bei Schlie&szlig;en von Access noch ein Formular ge&ouml;ffnet ist, dass wird dieses nat&uuml;rlich auch geschlossen. Au&szlig;er, Sie haben &auml;nderungen am Entwurf vorgenommen &#8211; dann fragt Access noch, ob Sie die &auml;nderungen speichern wollen. Wir wollen uns aber ohnehin eher auf die Ereignisse konzentrieren, und dort bieten Formulare beim Schlie&szlig;en gleich mehrere Ereignisse, zum Beispiel<\/p>\n<ul>\n<li><b>Beim Schlie&szlig;en <\/b>und<\/li>\n<li><b>Beim Entladen<\/b>.<\/li>\n<\/ul>\n<p>Legen wir also f&uuml;r beide Ereignisse testweise je eine Ereignisprozedur an, indem wir die entsprechenden Eigenschaften <b>Beim Schlie&szlig;en <\/b>und <b>Beim Entladen <\/b>auf <b>[Ereignisprozedur] <\/b>einstellen und dann auf die Schaltfl&auml;che mit den drei Punkten auf der rechten Seite klicken (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/001.png\" alt=\"Ereignisse anlegen, die beim Schlie&szlig;en eines Formulars ausgel&ouml;st werden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Ereignisse anlegen, die beim Schlie&szlig;en eines Formulars ausgel&ouml;st werden<\/p>\n<p>Zun&auml;chst wollen wir testen, in welcher Reihenfolge die beiden Ereignisse ausgel&ouml;st werden. Dazu legen Sie f&uuml;r beide Prozeduren je einen Haltepunkt im VBA-Editor fest (Sie k&ouml;nnen auch Meldungsfenster einf&uuml;gen, wenn Sie m&ouml;chten). Dann &ouml;ffnen Sie das Formular in der Formularansicht und schlie&szlig;en es. Schnell wird deutlich, dass <b>Beim Entladen <\/b>zuerst aufgerufen wird, erst dann folgt <b>Beim Schlie&szlig;en <\/b>(siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/002.png\" alt=\"Haltepunkte der beiden beim Schlie&szlig;en ausgel&ouml;sten Prozeduren im Test\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Haltepunkte der beiden beim Schlie&szlig;en ausgel&ouml;sten Prozeduren im Test<\/p>\n<p>Wenn wir uns die beiden Ereignisse ansehen, f&auml;llt ein f&uuml;r unsere Anforderungen gravierender Unterschied auf: Die Ereignisprozedur <b>Form_Unload <\/b>(<b>Beim Entladen<\/b>) besitzt einen Parameter namens <b>Cancel<\/b>. Wenn Sie diesen auf True einstellen, wird das Schlie&szlig;en des Formulars abgebrochen! Das ist wichtig f&uuml;r unser Vorhaben, wenn wir die M&ouml;glichkeit haben wollen, das Schlie&szlig;en der Anwendung zu verhindern.<\/p>\n<p>Probieren wir dies aus, indem wir die die Prozedur wie in Listing 1 erweitern. Beim Schlie&szlig;en des Formulars erscheint das entsprechende Meldungsfenster. Wenn Sie dort auf <b>Abbrechen <\/b>klicken, wird das Formular nicht geschlossen. Klicken Sie auf <b>OK<\/b>, wird der Vorgang wie &uuml;blich mit dem Schlie&szlig;en des Formulars abgeschlossen. Damit steht nun fest, welches Ereignis uns in diesem Fall hilft.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Unload(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">MsgBox<\/span>(\"Wirklich schlie&szlig;en\", vbYesNo) = vbNo<span style=\"color:blue;\"> Then<\/span>\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 class='imagetext'>Listing 1: Diese Prozedur wird beim Schlie&szlig;en des Formulars ausgel&ouml;st.<\/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\/55000247\/\">\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\/55000247?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\/55000247\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"22c77db969\"\/>\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>Access bietet die M&ouml;glichkeit, beim Start ein Makro namens <b>AutoExec<\/b> auszuf&uuml;hren oder ein als Startformular angegebenes Startformular anzuzeigen. Damit lassen sich gleich bei Start notwendige Aktionen durchf&uuml;hren. Beim Schlie&szlig;en einer Datenbank sieht es anders aus: Hier stellt Microsoft keine eingebaute M&ouml;glichkeit bereit, um abschlie&szlig;ende Arbeiten durchzuf&uuml;hren. Dazu geh&ouml;rt beispielsweise das Speichern von w&auml;hrend der Benutzung ge&auml;nderten Konfigurationsdaten. Dieser Artikel zeigt, wie Sie diese Funktion nachr&uuml;sten.<\/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":[662014,66062014,44000010],"tags":[],"class_list":["post-55000247","post","type-post","status-publish","format-standard","hentry","category-662014","category-66062014","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>Datenbankereignis beim Schlie&szlig;en - Access [basics]<\/title>\n<meta name=\"description\" content=\"Access bietet die M\u00f6glichkeit, beim Start ein Makro namens AutoExec auszuf\u00fchren oder ein als Startformular angegebenes Startformular anzuzeigen. Damit lassen sich gleich bei Start notwendige Aktionen durchf\u00fchren. Beim Schlie\u00dfen einer Datenbank sieht es anders aus: Hier stellt Microsoft keine eingebaute M\u00f6glichkeit bereit, um abschlie\u00dfende Arbeiten durchzuf\u00fchren. Dazu geh\u00f6rt beispielsweise das Speichern von w\u00e4hrend der Benutzung ge\u00e4nderten Konfigurationsdaten. Dieser Artikel zeigt, wie Sie diese Funktion nachr\u00fcsten.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datenbankereignis beim Schlie&szlig;en - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Access bietet die M\u00f6glichkeit, beim Start ein Makro namens AutoExec auszuf\u00fchren oder ein als Startformular angegebenes Startformular anzuzeigen. Damit lassen sich gleich bei Start notwendige Aktionen durchf\u00fchren. Beim Schlie\u00dfen einer Datenbank sieht es anders aus: Hier stellt Microsoft keine eingebaute M\u00f6glichkeit bereit, um abschlie\u00dfende Arbeiten durchzuf\u00fchren. Dazu geh\u00f6rt beispielsweise das Speichern von w\u00e4hrend der Benutzung ge\u00e4nderten Konfigurationsdaten. Dieser Artikel zeigt, wie Sie diese Funktion nachr\u00fcsten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:11+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\/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\/Datenbankereignis_beim_Schliessen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html\",\"name\":\"Datenbankereignis beim Schlie&szlig;en - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:11+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Access bietet die M\\u00f6glichkeit, beim Start ein Makro namens AutoExec auszuf\\u00fchren oder ein als Startformular angegebenes Startformular anzuzeigen. Damit lassen sich gleich bei Start notwendige Aktionen durchf\\u00fchren. Beim Schlie\\u00dfen einer Datenbank sieht es anders aus: Hier stellt Microsoft keine eingebaute M\\u00f6glichkeit bereit, um abschlie\\u00dfende Arbeiten durchzuf\\u00fchren. Dazu geh\\u00f6rt beispielsweise das Speichern von w\\u00e4hrend der Benutzung ge\\u00e4nderten Konfigurationsdaten. Dieser Artikel zeigt, wie Sie diese Funktion nachr\\u00fcsten.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_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\/Datenbankereignis_beim_Schliessen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Datenbankereignis_beim_Schliessen.html\",\"name\":\"Datenbankereignis beim 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\/55000247","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=55000247"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000247\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}