{"id":55000178,"date":"2013-12-01T00:00:00","date_gmt":"2020-01-24T15:58:44","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=178"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"SQLGrundlagen_Aktionsabfragen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html","title":{"rendered":"SQL-Grundlagen: Aktionsabfragen"},"content":{"rendered":"<p class='introduction'>Wer schon etwas l&auml;nger mit Access arbeitet, kennt das: Sie m&ouml;chten mal eben den Wert eines Feldes f&uuml;r alle Datens&auml;tze &auml;ndern oder auch eine bestimmte Gruppe von Datens&auml;tzen l&ouml;schen. Manuell in der Datenblattansicht ist das aber nicht zu erledigen, weil die Anzahl der Datens&auml;tze daf&uuml;r zu gro&szlig; ist. Daf&uuml;r extra eine Aktionsabfrage erstellen und ausf&uuml;hren Nein, das ist auch zuviel Aufwand. Also bleibt nur eine M&ouml;glichkeit: Sie schaffen sich einige Grundlagen zum Thema Aktionsabfragen unter SQL drauf und erledigen die genannten Aufgaben schnell vom Direktfenster aus.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1212_SQLAktionsabfragen.mdb<\/b>.<\/p>\n<h2>Aufruf<\/h2>\n<p>Zum Ausf&uuml;hren einer Aktionsabfrage &uuml;ber das Direktfenster k&ouml;nnen Sie zwei verschiedene Methoden verwenden. Beide werden im Artikel Aktionsabfragen per VBA ausf&uuml;hrlich erl&auml;utert. Im vorliegenden Artikel verwenden wir ausschlie&szlig;lich die <b>Execute<\/b>-Methode des mit <b>CurrentDb <\/b>gelieferten Objekts. Dies sieht, am einfachen Beispiel einer L&ouml;schabfrage, etwa so aus:<\/p>\n<pre>CurrentDb.Execute \"DELETE FROM tblTest\", dbFailOnError<\/pre>\n<p>Mit dieser Anweisung, abgesetzt im Direktfenster des VBA-Editors, das Sie mit der Tastenkombination <b>Strg + G <\/b>&ouml;ffnen, w&uuml;rden Sie alle Datens&auml;tze der Tabelle <b>tblTest <\/b>l&ouml;schen (siehe Bild 1). Die <b>Execute<\/b>-Anweisung erwartet die SQL-Variante der Aktionsabfrage als Parameter in Anf&uuml;hrungszeichen. Der Wert <b>dbFailOnError <\/b>f&uuml;r den zweiten Parameter sorgt daf&uuml;r, dass eventuell auftretenden Fehler gemeldet werden.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_178_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_178_001.png\" alt=\"Absetzen einer SQL-Anweisung per Direktfenster\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Absetzen einer SQL-Anweisung per Direktfenster<\/p>\n<p>Damit Sie etwas Spa&szlig; an den Beispielen des Artikels haben, finden Sie in der Beispieldatenbank ein Formular namens <b>frmSQLAktionsabfragen<\/b>. Dort k&ouml;nnen Sie Aktionsabfragen zum Ausprobieren eingeben und auf Ausf&uuml;hren klicken &#8211; dies ist erstens etwas einfacher als der Weg &uuml;ber das Direktfenster und zweitens erhalten Sie auch noch Feedback, wieviele Datens&auml;tze von der &auml;nderung betroffen sind (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_178_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_178_002.png\" alt=\"Hilfsformular zum Ausf&uuml;hren von SQL-Aktionsabfragen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Hilfsformular zum Ausf&uuml;hren von SQL-Aktionsabfragen<\/p>\n<p>Das Formular ist au&szlig;erdem an eine Tabelle namens <b>tblAktionsabfragen <\/b>gebunden, die alle Beispielaufrufe dieses Artikels speichert &#8211; Sie k&ouml;nnen diese also im Formular durchlaufen und ausprobieren. Der notwendige Code hinter der Schaltfl&auml;che ist einfach:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdAusfuehren_Click()\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 Me!txtAktionsabfrage, dbFailOnError\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Anzahl betroffener Datens&auml;tze: \" _\r\n         & db.RecordsAffected\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Er f&uuml;hrt lediglich die Aktionsabfrage aus und fragt nachher mit der Eigenschaft <b>RecordsAffected <\/b>ab, wieviele Datens&auml;tze von der &auml;nderung betroffen sind.<\/p>\n<p>Die tats&auml;chlich f&uuml;r die Schaltfl&auml;che hinterlegte Prozedur ist etwas komplizierter, weil diese es erlaubt, die durchgef&uuml;hrten &auml;nderungen wieder zu verwerfen &#8211; dieses Thema werden wir jedoch in einem anderen Artikel behanden, aktuell dient dies nur Ihrer Bequemlichkeit.<\/p>\n<h2>Syntax ermitteln<\/h2>\n<p>In den folgenden Abschnitten erhalten Sie grundlegende Informationen zu den vier m&ouml;glichen Aktionsabfragen. Damit k&ouml;nnen Sie wahrscheinlich die meisten Konstellationen abbilden. Allerdings kann es auch sein, dass Sie doch einen kleinen Denkansto&szlig; ben&ouml;tigen &#8211; in diesem Falle ziehen Sie dann doch die Entwurfsansicht f&uuml;r Abfragen zuhilfe und erstellen damit die gew&uuml;nschte Aktionsabfrage. Anschlie&szlig;end k&ouml;nnen Sie den SQL-Code f&uuml;r diese Abfrage ganz einfach ermitteln.<\/p>\n<p>Die Abfrage aus Bild 3 etwa soll die Einzelpreise aller Datens&auml;tze um 10% erh&ouml;hen, von denen im November 2011 mehr als 100 verkauft wurden. Nachdem Sie diese Abfrage eingegeben haben, k&ouml;nnen Sie mit einem Rechtsklick auf die Titelleiste des Abfrageentwurfs und dem anschlie&szlig;enden Ausw&auml;hlen des Eintrags <b>SQL-Ansicht <\/b>des Kontextmen&uuml;s die SQL-Ansicht betrachten. Einen solchen Ausdruck werden Sie erst nach einiger &uuml;bung aus dem Kopf entwerfen k&ouml;nnen &#8230; (siehe Bild 4). Dennoch: Auch diese Ausdruck k&ouml;nnen Sie kopieren und mit dem oben vorgestellten Formular ausf&uuml;hren lassen. Sie d&uuml;rfen die SQL-Ansicht nat&uuml;rlich auch f&uuml;r die Ermittlung der SQL-Ausdr&uuml;cke einfacherer Aktionsabfragen heranziehen. In den folgenden Abschnitten lernen Sie nun die SQL-Syntax der vier verschiedenen SQL-Aktionsabfragen kennen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_178_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_178_003.png\" alt=\"Komplizierte Abfrage im Entwurf\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Komplizierte Abfrage im Entwurf<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_178_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_178_004.png\" alt=\"Komplizierte Abfrage - unter SQL noch verwirrender\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Komplizierte Abfrage &#8211; unter SQL noch verwirrender<\/p>\n<h2>Daten l&ouml;schen<\/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\/55000178\/\">\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\/55000178?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\/55000178\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"e303140d5d\"\/>\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>Wer schon etwas l&auml;nger mit Access arbeitet, kennt das: Sie m&ouml;chten mal eben den Wert eines Feldes f&uuml;r alle Datens&auml;tze &auml;ndern oder auch eine bestimmte Gruppe von Datens&auml;tzen l&ouml;schen. Manuell in der Datenblattansicht ist das aber nicht zu erledigen, weil die Anzahl der Datens&auml;tze daf&uuml;r zu gro&szlig; ist. Daf&uuml;r extra eine Aktionsabfrage erstellen und ausf&uuml;hren Nein, das ist auch zuviel Aufwand. Also bleibt nur eine M&ouml;glichkeit: Sie schaffen sich einige Grundlagen zum Thema Aktionsabfragen unter SQL drauf und erledigen die genannten Aufgaben schnell vom Direktfenster aus.<\/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":[66122012,662012,44000019],"tags":[],"class_list":["post-55000178","post","type-post","status-publish","format-standard","hentry","category-66122012","category-662012","category-SQLGrundlagen"],"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>SQL-Grundlagen: Aktionsabfragen - Access [basics]<\/title>\n<meta name=\"description\" content=\"Wer schon etwas l\u00e4nger mit Access arbeitet, kennt das: Sie m\u00f6chten mal eben den Wert eines Feldes f\u00fcr alle Datens\u00e4tze \u00e4ndern oder auch eine bestimmte Gruppe von Datens\u00e4tzen l\u00f6schen. Manuell in der Datenblattansicht ist das aber nicht zu erledigen, weil die Anzahl der Datens\u00e4tze daf\u00fcr zu gro\u00df ist. Daf\u00fcr extra eine Aktionsabfrage erstellen und ausf\u00fchren? Nein, das ist auch zuviel Aufwand. Also bleibt nur eine M\u00f6glichkeit: Sie schaffen sich einige Grundlagen zum Thema Aktionsabfragen unter SQL drauf und erledigen die genannten Aufgaben schnell vom Direktfenster aus.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL-Grundlagen: Aktionsabfragen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Wer schon etwas l\u00e4nger mit Access arbeitet, kennt das: Sie m\u00f6chten mal eben den Wert eines Feldes f\u00fcr alle Datens\u00e4tze \u00e4ndern oder auch eine bestimmte Gruppe von Datens\u00e4tzen l\u00f6schen. Manuell in der Datenblattansicht ist das aber nicht zu erledigen, weil die Anzahl der Datens\u00e4tze daf\u00fcr zu gro\u00df ist. Daf\u00fcr extra eine Aktionsabfrage erstellen und ausf\u00fchren? Nein, das ist auch zuviel Aufwand. Also bleibt nur eine M\u00f6glichkeit: Sie schaffen sich einige Grundlagen zum Thema Aktionsabfragen unter SQL drauf und erledigen die genannten Aufgaben schnell vom Direktfenster aus.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:44+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_178_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\/SQLGrundlagen_Aktionsabfragen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_178_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html\",\"name\":\"SQL-Grundlagen: Aktionsabfragen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:44+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Wer schon etwas l\\u00e4nger mit Access arbeitet, kennt das: Sie m\\u00f6chten mal eben den Wert eines Feldes f\\u00fcr alle Datens\\u00e4tze \\u00e4ndern oder auch eine bestimmte Gruppe von Datens\\u00e4tzen l\\u00f6schen. Manuell in der Datenblattansicht ist das aber nicht zu erledigen, weil die Anzahl der Datens\\u00e4tze daf\\u00fcr zu gro\\u00df ist. Daf\\u00fcr extra eine Aktionsabfrage erstellen und ausf\\u00fchren? Nein, das ist auch zuviel Aufwand. Also bleibt nur eine M\\u00f6glichkeit: Sie schaffen sich einige Grundlagen zum Thema Aktionsabfragen unter SQL drauf und erledigen die genannten Aufgaben schnell vom Direktfenster aus.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.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\/SQLGrundlagen_Aktionsabfragen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/SQLGrundlagen_Aktionsabfragen.html\",\"name\":\"SQL-Grundlagen: Aktionsabfragen\"}}]},{\"@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\/55000178","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=55000178"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000178\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}