{"id":55000366,"date":"2017-10-01T00:00:00","date_gmt":"2020-01-24T15:59:53","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=366"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Meldungen_bei_Datensatzaenderungen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html","title":{"rendered":"Meldungen bei Datensatz&auml;nderungen"},"content":{"rendered":"<p class='introduction'>Access bietet einige Sicherheitsma&szlig;nahmen, um den Benutzer vor unbewussten und nicht wiederherstellbaren &auml;nderungen von Daten zu sch&uuml;tzen. Dabei erscheinen zu bestimmten Gelegenheiten wie etwa vor dem L&ouml;schen von Datens&auml;tzen entsprechende Warnmeldungen. Das kann auch geschehen, wenn der Benutzer Daten durch den Aufruf von VBA-Anweisungen l&ouml;schen will oder dies per Aktionsabfrage erledigt. Dieser Artikel zeigt, wo Access eingreift und wie Sie das Verhalten f&uuml;r Ihre Zwecke anpassen k&ouml;nnen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1705_MeldungenBeiDatensatzaenderungen.accdb<\/b>.<\/p>\n<h2>Wo tauchen Warnmeldungen auf<\/h2>\n<p>Als Erstes sehen wir uns an, wo &uuml;berhaupt Warnmeldungen auftauchen, wenn der Benutzer Datensatz&auml;nderungen durchf&uuml;hrt. <\/p>\n<p>Dies bereits in der Datenblattansicht einer Tabelle der Fall. Versuchen Sie hier, einen Datensatz zu l&ouml;schen, erscheint die Meldung aus Bild 1. Diese taucht auf, nachdem der zu l&ouml;schende Datensatz bereits verschwunden ist. Klicken Sie hier auf <b>Nein<\/b>, wird der Datensatz wiederhergestellt.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_366_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_366_001.png\" alt=\"Meldung beim manuellen L&ouml;schen aus der Datenblattansicht\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Meldung beim manuellen L&ouml;schen aus der Datenblattansicht<\/p>\n<p>Die gleiche Meldung erscheint auch bei allen weiteren Datenblattansichten, also etwa von Abfragen oder in Formularen.<\/p>\n<p>Die zweite Gelegenheit zum Anzeigen von Meldungen ist das Ausf&uuml;hren von Aktionsabfragen wie zum Beispiel die Abfrage zum L&ouml;schen von Daten aus Bild 2. Auch hier bewirkt ein Klick auf <b>Ja<\/b>, dass die Abfrage tats&auml;chlich ausgef&uuml;hrt wird und <b>Nein<\/b>, dass die Daten erhalten bleiben.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_366_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_366_002.png\" alt=\"Meldung beim L&ouml;schen per Aktionsabfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Meldung beim L&ouml;schen per Aktionsabfrage<\/p>\n<p>N&auml;chste Gelegenheit ist das L&ouml;schen von Datens&auml;tzen &uuml;ber DAO, und zwar mit der <b>Delete<\/b>-Methode f&uuml;r den aktuell im Recordset markierten Datensatz.<\/p>\n<p>Folgende Prozedur &ouml;ffnet ein Recordset auf Basis der Tabelle <b>tblBestelldetails<\/b>, bewegt den Datensatzzeiger zum ersten und wieder zum ersten Datensatz, damit <b>rst.RecordCount <\/b>die korrekte Anzahl Datens&auml;tze ausgibt, l&ouml;scht dann den aktuellen Datensatz und gibt erneut die Anzahl der Datens&auml;tze aus:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>LoeschenMitDAO_I()\r\n    <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n    <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n    <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n    <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM                       tblBestelldetails\", dbOpenDynaset)\r\n    rst.MoveLast\r\n    rst.MoveFirst\r\n    <span style=\"color:blue;\">Debug.Print<\/span> rst.RecordCount\r\n    <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> rst.EOF<span style=\"color:blue;\"> Then<\/span>\r\n        'ersten Datensatz l&ouml;schen\r\n        rst.Delete\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    <span style=\"color:blue;\">Debug.Print<\/span> rst.RecordCount\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Im Direktbereich k&ouml;nnen Sie ablesen, dass genau ein Datensatz gel&ouml;scht wurde &#8211; wobei allerdings diesmal keine Meldung mit einer R&uuml;ckfrage an den Benutzer ausgegeben wurde.<\/p>\n<p>Aktionen im Recordset f&uuml;hren also direkt zum L&ouml;schen des Datensatzes.<\/p>\n<p>Wie sieht es mit dem L&ouml;schen per <b>Execute<\/b>-Anweisung aus Schauen wir es uns anhand des folgenden Beispiels an:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>LoeschenMitDAO_II()\r\n    <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n    <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n    db.Execute \"DELETE FROM tblBestelldetails          WHERE BestellungID = 10250\", dbFailOnError\r\n    <span style=\"color:blue;\">Debug.Print<\/span> db.RecordsAffected\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Hier haben wir die <b>Execute<\/b>-Methode des <b>Database<\/b>-Objekts mit einer <b>DELETE<\/b>-Anweisung aufgerufen. Es werden Datens&auml;tze gel&ouml;scht, aber auch hier gibt es keine R&uuml;ckfrage an den Benutzer.<\/p>\n<p>Hat der Benutzer gar keine M&ouml;glichkeit, bei Daten&auml;nderungen &uuml;ber VBA &uuml;ber die anstehenden &auml;nderungen informiert zu werden &#8211; au&szlig;er gegebenenfalls &uuml;ber selbst programmierte Meldungen Doch, wenn Sie die Methode <b>RunSQL <\/b>des <b>DoCmd<\/b>-Objekts wie in Bild 3 aufrufen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_366_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_366_003.png\" alt=\"Meldung beim L&ouml;schen per DoCmd.RunSQL\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Meldung beim L&ouml;schen per DoCmd.RunSQL<\/p>\n<p>Klicken Sie hier auf <b>Ja<\/b>, wird die Abfrage durchgef&uuml;hrt, <b>Nein <\/b>f&uuml;hrt allerdings zu einem Laufzeitfehler (siehe Bild 4). In diesem Fall m&uuml;ssen Sie noch eine Fehlerbehandlung zum Code hinzuf&uuml;gen, die beispielsweise wie folgt aussieht:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_366_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_366_004.png\" alt=\"Meldung beim Abbrechen einer RunSQL-Anweisung\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Meldung beim Abbrechen einer RunSQL-Anweisung<\/p>\n<pre>On Error Resume <span style=\"color:blue;\">Next<\/span>\r\nDoCmd.RunSQL strSQL\r\nSelect Case Err.Number\r\n    <span style=\"color:blue;\">Case <\/span>2501\r\n    <span style=\"color:blue;\">Case <\/span>0\r\n    <span style=\"color:blue;\">Case Else<\/span>\r\n        <span style=\"color:blue;\">MsgBox<\/span> \"Fehler \" & Err.Number & \", '\"                                  & Err.Description & \"'\"\r\n<span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">On Error GoTo<\/span> 0<\/pre>\n<h2>L&ouml;schen per RunCommand acCmdDeleteRecord<\/h2>\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\/55000366\/\">\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\/55000366?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\/55000366\/\"\/>\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>Access bietet einige Sicherheitsma&szlig;nahmen, um den Benutzer vor unbewussten und nicht wiederherstellbaren &auml;nderungen von Daten zu sch&uuml;tzen. Dabei erscheinen zu bestimmten Gelegenheiten wie etwa vor dem L&ouml;schen von Datens&auml;tzen entsprechende Warnmeldungen. Das kann auch geschehen, wenn der Benutzer Daten durch den Aufruf von VBA-Anweisungen l&ouml;schen will oder dies per Aktionsabfrage erledigt. Dieser Artikel zeigt, wo Access eingreift und wie Sie das Verhalten f&uuml;r Ihre Zwecke anpassen 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":[662017,66052017,44000002],"tags":[],"class_list":["post-55000366","post","type-post","status-publish","format-standard","hentry","category-662017","category-66052017","category-Grundlagen"],"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>Meldungen bei Datensatz&auml;nderungen - Access [basics]<\/title>\n<meta name=\"description\" content=\"Access bietet einige Sicherheitsma\u00dfnahmen, um den Benutzer vor unbewussten und nicht wiederherstellbaren \u00c4nderungen von Daten zu sch\u00fctzen. Dabei erscheinen zu bestimmten Gelegenheiten wie etwa vor dem L\u00f6schen von Datens\u00e4tzen entsprechende Warnmeldungen. Das kann auch geschehen, wenn der Benutzer Daten durch den Aufruf von VBA-Anweisungen l\u00f6schen will oder dies per Aktionsabfrage erledigt. Dieser Artikel zeigt, wo Access eingreift und wie Sie das Verhalten f\u00fcr Ihre Zwecke anpassen k\u00f6nnen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Meldungen bei Datensatz&auml;nderungen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Access bietet einige Sicherheitsma\u00dfnahmen, um den Benutzer vor unbewussten und nicht wiederherstellbaren \u00c4nderungen von Daten zu sch\u00fctzen. Dabei erscheinen zu bestimmten Gelegenheiten wie etwa vor dem L\u00f6schen von Datens\u00e4tzen entsprechende Warnmeldungen. Das kann auch geschehen, wenn der Benutzer Daten durch den Aufruf von VBA-Anweisungen l\u00f6schen will oder dies per Aktionsabfrage erledigt. Dieser Artikel zeigt, wo Access eingreift und wie Sie das Verhalten f\u00fcr Ihre Zwecke anpassen k\u00f6nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59: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_366_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=\"9\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\/Meldungen_bei_Datensatzaenderungen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_366_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html\",\"name\":\"Meldungen bei Datensatz&auml;nderungen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:53+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Access bietet einige Sicherheitsma\\u00dfnahmen, um den Benutzer vor unbewussten und nicht wiederherstellbaren \\u00c4nderungen von Daten zu sch\\u00fctzen. Dabei erscheinen zu bestimmten Gelegenheiten wie etwa vor dem L\\u00f6schen von Datens\\u00e4tzen entsprechende Warnmeldungen. Das kann auch geschehen, wenn der Benutzer Daten durch den Aufruf von VBA-Anweisungen l\\u00f6schen will oder dies per Aktionsabfrage erledigt. Dieser Artikel zeigt, wo Access eingreift und wie Sie das Verhalten f\\u00fcr Ihre Zwecke anpassen k\\u00f6nnen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.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\/Meldungen_bei_Datensatzaenderungen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Meldungen_bei_Datensatzaenderungen.html\",\"name\":\"Meldungen bei Datensatz&auml;nderungen\"}}]},{\"@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\/55000366","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=55000366"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000366\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}