{"id":55000132,"date":"2013-12-01T00:00:00","date_gmt":"2020-01-24T15:58:14","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=132"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"DAO_Querydefs_und_Parameterabfragen_unter_VBA","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html","title":{"rendered":"DAO: Querydefs und Parameterabfragen unter VBA"},"content":{"rendered":"<p class='introduction'>Mit der QueryDefs-Auflistung greifen Sie per VBA auf die in einer Datenbank gespeicherten Abfragen zu, legen neue Abfragen an oder &ouml;ffnen Abfragen mit Parametern per VBA. Sie k&ouml;nnen damit sogar tempor&auml;re Abfragen erstellen, die Sie nur einmal ben&ouml;tigen, und diese anschlie&szlig;end wieder l&ouml;schen. Dieser Artikel zeigt alle Tricks rund um die Arbeit mit dem QueryDef-Objekt.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1212_QueryDefs.mdb<\/b>.<\/p>\n<h2>Das QueryDef-Objekt<\/h2>\n<p>Ein <b>QueryDef<\/b>-Objekt ist die Repr&auml;sentation einer Abfrage unter VBA beziehungsweise DAO. Sie k&ouml;nnen mit DAO beispielsweise die Namen aller in der Datenbank gespeicherten Abfragen ausgeben, deren SQL-Code ansehen, neue Abfragen anlegen oder bestehende Abfragen l&ouml;schen.<\/p>\n<p>Wenn Sie beispielsweise alle Abfragen der Datenbank im Direktfenster auflisten m&ouml;chten, erstellen Sie eine kleine VBA-Prozedur. Dazu ben&ouml;tigen Sie zun&auml;chst ein Standardmodul. &ouml;ffnen Sie mit <b>Strg + G <\/b>oder <b>Alt + F11 <\/b>den VBA-Editor und w&auml;hlen Sie den Men&uuml;eintrag <b>Einf&uuml;gen|Modul<\/b>. Speichern Sie das Modul mit <b>Strg + S <\/b>unter dem Namen <b>mdlQuerydefs<\/b>.<\/p>\n<p>Nun f&uuml;gen Sie dem Modul die folgende Prozedur hinzu:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AbfragenAuflisten()\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>qdf<span style=\"color:blue;\"> As <\/span>DAO.QueryDef\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     For Each qdf In db.QueryDefs\r\n         <span style=\"color:blue;\">Debug.Print<\/span> qdf.Name\r\n     <span style=\"color:blue;\">Next<\/span> qdf\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Platzieren Sie die Einf&uuml;gemarke innerhalb der Prozedur und bet&auml;tigen Sie die Taste <b>F5<\/b>, um die Prozedur auszuf&uuml;hren. Was geschieht Die Prozedur gibt alle in der Datenbank enthaltenen Abfragen im Direktfenster aus (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_132_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_132_001.png\" alt=\"Ausgabe aller Abfragen der Datenbank\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Ausgabe aller Abfragen der Datenbank<\/p>\n<p>Das Ergebnis ist interessant: Dort finden sich n&auml;mlich nicht nur die im Navigationsbereich beziehungsweise im Datenbankfenster sichtbaren Abfragen, die normalerweise mit dem Pr&auml;fix <b>qry <\/b>versehen werden, sondern auch noch Eintr&auml;ge, die mit dem Tilde-Zeichen beginnen (<b>~<\/b>).<\/p>\n<p>Dabei handelt es sich um solche Abfragen, die als Datenherkunft etwa f&uuml;r Formular, Berichte oder Kombinationsfelder angelegt wurden.<\/p>\n<p>Wenn Sie beispielsweise ein Formular namens <b>frmArtikel <\/b>anlegen und diesem eine Abfrage als Datenherkunft zuweisen, wird diese unter dem Namen <b>~sq_ffrmArtikel <\/b> ausgegeben. Wenn Sie ein Formular namens <b>frmMitCboArtikel <\/b>und einem Kombinationsfeld namens <b>cboArtikel <\/b>anlegen und dem Kombinationsfeld eine Abfrage als Datensatzherkunft zuweisen, finden Sie unter den Abfrage mit obiger Prozedur einen Eintrag namens <b>~sq_cfrmMitCboArtikel~sq_ccboArtikel<\/b> vor. Die Namen dieser versteckt gespeicherten Abfragen werden also aus dem Formularnamen und, wenn ein Kombinationsfeld oder ein Listenfeld im Spiel ist, auch noch aus dem Namen des Steuerelements gebildet &#8211; dieser Exkurs nur als Erl&auml;uterung diese kryptisch anmutenden Abfragenamen.<\/p>\n<p>Was genau erledigt nun die oben vorgestellte Prozedur Sie deklariert zun&auml;chst eine Objektvariable namens <b>db<\/b>, welche einen Verweis auf das <b>Database<\/b>-Objekt zur aktuellen Datenbank aufnimmt. Eine weitere Objektvariable soll sp&auml;ter mit Verweisen auf die <b>QueryDef<\/b>-Objekte der Datenbank gef&uuml;ttert werden, was der gespeicherten Definition einer Abfrage entspricht. Und dies bezieht sich, wie oben angef&uuml;hrt, nicht nur auf die durch den Benutzer gespeicherten Abfragen, sondern auch auf die Datenherk&uuml;nfte und datensatzherk&uuml;nfte von Formularen, Berichten, Kombinationsfeldern und Listenfeldern.<\/p>\n<p>Die Variable <b>db <\/b>wird nun mit einem Verweis auf das <b>Database<\/b>-Objekt gef&uuml;llt. Die Variable <b>qdf <\/b>wird in einer <b>For Each<\/b>-Schleife nacheinander mit Verweisen auf alle in der <b>QueryDefs<\/b>-Auflistung enthaltenen <b>QueryDef<\/b>-Objekte versehen.<\/p>\n<p>Die einzige Anweisung innerhalb der <b>For Each<\/b>-Schleife gibt den Namen des jeweiligen <b>QueryDef<\/b>-Objekts im Direktfenster aus.<\/p>\n<p>Mit der <b>QueryDefs<\/b>-Auflistung k&ouml;nnen Sie noch weitere Dinge tun &#8211; zum Beispiel die Anzahl der <b>QueryDef<\/b>-Objekte der aktuellen Datenbank ermitteln. Das geht ganz schnell &uuml;ber das Direktfenster, wie Bild 2 zeigt. Die <b>QueryDefs<\/b>-Auflistung k&ouml;nnen Sie dabei auch direkt als Elemente der <b>CurrentDB<\/b>-Funktion verwenden, ein vorheriges Referenzieren mit einer <b>Database<\/b>-Variablen wie etwa <b>db <\/b>ist gar nicht n&ouml;tig.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_132_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_132_002.png\" alt=\"Abfrage der Anzahl der QueryDef-Objekte\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Abfrage der Anzahl der QueryDef-Objekte<\/p>\n<h2>SQL-Ansicht anzeigen<\/h2>\n<p>Wenn Sie eine Abfrage bearbeiten, verwenden Sie dazu in der Regel die Entwurfsansicht (siehe Bild 3). Sie k&ouml;nnen dies allerdings auch in der SQL-Ansicht erledigen, die Sie ebenfalls in der Abbildung vorfinden. Den dort dargestellten SQL-Code liefert auch das QueryDef-Objekt.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_132_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_132_003.png\" alt=\"SQL-Ansicht einer Abfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: SQL-Ansicht einer Abfrage<\/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\/55000132\/\">\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\/55000132?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\/55000132\/\"\/>\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>Mit der QueryDefs-Auflistung greifen Sie per VBA auf die in einer Datenbank gespeicherten Abfragen zu, legen neue Abfragen an oder &ouml;ffnen Abfragen mit Parametern per VBA. Sie k&ouml;nnen damit sogar tempor&auml;re Abfragen erstellen, die Sie nur einmal ben&ouml;tigen, und diese anschlie&szlig;end wieder l&ouml;schen. Dieser Artikel zeigt alle Tricks rund um die Arbeit mit dem QueryDef-Objekt.<\/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,44000018],"tags":[],"class_list":["post-55000132","post","type-post","status-publish","format-standard","hentry","category-66122012","category-662012","category-Datenzugriff_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>DAO: Querydefs und Parameterabfragen unter VBA - Access [basics]<\/title>\n<meta name=\"description\" content=\"Mit der QueryDefs-Auflistung greifen Sie per VBA auf die in einer Datenbank gespeicherten Abfragen zu, legen neue Abfragen an oder \u00f6ffnen Abfragen mit Parametern per VBA. Sie k\u00f6nnen damit sogar tempor\u00e4re Abfragen erstellen, die Sie nur einmal ben\u00f6tigen, und diese anschlie\u00dfend wieder l\u00f6schen. Dieser Artikel zeigt alle Tricks rund um die Arbeit mit dem QueryDef-Objekt.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DAO: Querydefs und Parameterabfragen unter VBA - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Mit der QueryDefs-Auflistung greifen Sie per VBA auf die in einer Datenbank gespeicherten Abfragen zu, legen neue Abfragen an oder \u00f6ffnen Abfragen mit Parametern per VBA. Sie k\u00f6nnen damit sogar tempor\u00e4re Abfragen erstellen, die Sie nur einmal ben\u00f6tigen, und diese anschlie\u00dfend wieder l\u00f6schen. Dieser Artikel zeigt alle Tricks rund um die Arbeit mit dem QueryDef-Objekt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:14+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_132_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\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_132_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html\",\"name\":\"DAO: Querydefs und Parameterabfragen unter VBA - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:14+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Mit der QueryDefs-Auflistung greifen Sie per VBA auf die in einer Datenbank gespeicherten Abfragen zu, legen neue Abfragen an oder \\u00f6ffnen Abfragen mit Parametern per VBA. Sie k\\u00f6nnen damit sogar tempor\\u00e4re Abfragen erstellen, die Sie nur einmal ben\\u00f6tigen, und diese anschlie\\u00dfend wieder l\\u00f6schen. Dieser Artikel zeigt alle Tricks rund um die Arbeit mit dem QueryDef-Objekt.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.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\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/DAO_Querydefs_und_Parameterabfragen_unter_VBA.html\",\"name\":\"DAO: Querydefs und Parameterabfragen unter VBA\"}}]},{\"@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\/55000132","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=55000132"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000132\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}