{"id":55000271,"date":"2015-02-01T00:00:00","date_gmt":"2020-01-24T15:59:19","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=271"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Tabellen_und_Abfragen_ueber_DAO_verwalten","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html","title":{"rendered":"Tabellen und Abfragen &uuml;ber DAO verwalten"},"content":{"rendered":"<p class='introduction'>Der Umgang mit den Datens&auml;tzen einer Tabelle &uuml;ber das Recordset-Objekt der DAO-Bibliothek ist das A und O der Programmierung unter Access und d&uuml;rfte Ihnen deshalb wahrscheinlich gel&auml;ufig sein. Nicht selten aber wird auch der Zugriff auf die Eigenschaften der Tabellen und Abfragen selbst ben&ouml;tigt &#8211; und hier kommt abermals DAO mit seinen TableDef- und QueryDef-Objekten ins Spiel.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1501_DAO.mdb<\/b>.<\/p>\n<h2>Tabellen und Abfragen im Objektmodell von DAO<\/h2>\n<p>Access legt beim Erstellen einer Datenbankdatei automatisch einen Verweis auf die <b>DAO-Bibliothek<\/b> im VBA-Projekt an, weil ohne sie keine M&ouml;glichkeit besteht, an die Datenobjekte heranzukommen. Zwar gibt es auch eine weitere Bibliothek namens <b>ADODB<\/b>, die ersatzweise verwendet werden kann, doch diese wird inzwischen von Microsoft weder weiterentwickelt, noch empfohlen. Sie war einst in erster Linie f&uuml;r den erweiterten Zugriff auf den SQL-Server gedacht, als Access 2000 mit den Access-Projekten (<b>ADP<\/b>) aufwartete. Doch da diese etwa von Access 2013 gar nicht mehr unterst&uuml;tzt werden, gibt es auch keinen triftigen Grund mehr, diese Bibliothek einzusetzen.<\/p>\n<p><b>DAO<\/b> als Abk&uuml;rzung f&uuml;r <b>Data Access Objects<\/b> ist nur der Modellname der Bibliothek. In der Liste der Verweise finden Sie sie jedoch unter der monstr&ouml;sen Bezeichnung <b>Microsoft Office 14.0 Access database engine Object Library<\/b>, wobei sich das je nach Version von Access geringf&uuml;gig unterscheidet. Vor Access 2007 lautete die Bezeichnung allerdings tats&auml;chlich <b>Microsoft DAO 3.6 Object Library<\/b>.<\/p>\n<p>&ouml;ffnen Sie im VBA-Editor &uuml;ber das Men&uuml; <b>Ansicht<\/b> den Objektkatalog und w&auml;hlen aus dem Kombinationsfeld oben links den Eintrag <b>DAO<\/b> aus, wie in Bild 1. Der Katalog f&uuml;llt sich dann mit allen Objektklassen, die die Datenzugriffsbibliothek aufweist, bei denen die Klasse <b>Database<\/b> von zentraler Bedeutung ist und quasi das Ebenbild der Datenbank ausmacht. Beim Klicken auf diese Klasse zeigen sich im rechten Abteil die Methoden und Eigenschaften des Database-Objekts. Da uns f&uuml;r das Thema dieses Beitrags nun besonders die Tabellen und Abfragen interessieren, die in einer Datenbank enthalten sind, m&uuml;sste das <b>Database<\/b>-Objekt wohl irgendwelche Methoden aufweisen, um auf diese zugreifen zu k&ouml;nnen. Tats&auml;chlich ist das mit den beiden Auflistungseigenschaften <b>TableDefs<\/b> und <b>QueryDefs<\/b> gegeben, die in Bild 1 markiert wurden. Sie sind beide Container f&uuml;r die einzelnen Tabellen- und Abfragen-Objekte. Dabei steht <b>TableDef<\/b> f&uuml;r &#8222;Tabellendefinition&#8220; und <b>QueryDef<\/b> f&uuml;r &#8222;Abfragedefinition&#8220;.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/OB_Database.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/OB_Database.png\" alt=\"DIe DAO-Bibliothek im VBA-Objektkatalog\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: DIe DAO-Bibliothek im VBA-Objektkatalog<\/p>\n<p>Nehmen wir uns zun&auml;chst die Aufgabe vor, &uuml;ber diese DAO-Klassen alle Tabellen aufzulisten, die die aktuelle Datenbank enth&auml;lt. Als Erstes braucht es daf&uuml;r ein <b>Database<\/b>-Objekt, von dem sich dann die T<b>ableDefs<\/b>-Auflistung ableitet. Allerdings ist <b>Database <\/b>ja nur eine Modellklasse und noch kein Objekt &#8211; eine Klasse muss erst in Form einer Objektvariablen instanziiert werden. Und da die DAO-Bibliothek eine externe Komponente ist, die lediglich als Modell in das VBA-Projekt eingeklinkt ist, wei&szlig; sie eigentlich auch gar nichts von der Access-Datenbank, in der sie untergebracht wurde. Es muss also ein Bezug zu einem <b>Database<\/b>-Objekt hergestellt werden, das Access bereitstellt. Das tut es auch mit der Eigenschaft <b>CurrentDb<\/b> des Access-Application-Objekts:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>dbs<span style=\"color:blue;\"> As <\/span>Database\r\n<span style=\"color:blue;\">Set<\/span> dbs = Application.CurrentDb<\/pre>\n<p>Das <b>Application<\/b> kann auch weggelassen werden, da es sich um eine globale Eigenschaft von Access handelt.<\/p>\n<p>Auch das &uuml;bertragen auf eine Objektvariable <b>dbs<\/b> ist nicht zwingend notwendig, da <b>CurrentDb<\/b> jederzeit erneut abgefragt werden kann. Neben <b>CurrentDb <\/b>gibt es noch eine weitere Variante der Zuweisung:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> dbs = Application.DbEngine(0)(0)<\/pre>\n<p>Die Nullen in Klammern sind eine zul&auml;ssig abgek&uuml;rzte Form von<\/p>\n<pre>Dbengine.Workspaces(0).Databases(0)<\/pre>\n<p>Nachdem nun ein g&uuml;ltiges <b>Database<\/b>-Objekt vorliegt, kann es auch an die Liste der Tabellen gehen:<\/p>\n<pre> CurrentDb.TableDefs.Count<\/pre>\n<p>Das gibt die Anzahl der in der Datenbank enthaltenen Tabellen im Direktfenster aus. Analog geht das f&uuml;r die Abfragen mit<\/p>\n<pre> CurrentDb.QueryDefs.Count<\/pre>\n<p>Damit Sie nicht spekulieren m&uuml;ssen, wie mit diesen Auflistungen weiter verfahren wird, sind in Bild 2 deren Methoden aus dem Objektkatalog dargestellt. <\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/OB_TDFs.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/OB_TDFs.png\" alt=\"Methoden der TableDefs- und QueryDefs-Auflistungsklassen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Methoden der TableDefs- und QueryDefs-Auflistungsklassen<\/p>\n<p><b>Count<\/b> ermittelt die Anzahl der jeweiligen Objekte. <b>Delete<\/b> l&ouml;scht ein Element. Da ein <b>TableDef<\/b>-Objekt direkt an die zugeh&ouml;rige Tabelle gekoppelt ist, bedeutet L&ouml;schen hier, dass auch die Tabelle aus der Datenbank entfernt wird:<\/p>\n<pre>Currentdb.TablesDefs.Delete \"Tabelle1\"<\/pre>\n<p><b>Tabelle1<\/b> wandert damit ins Nirwana. <b>Append<\/b> w&uuml;rde eine Tabelle zur Datenbank hinzuf&uuml;gen. Das Vorgehen ist hier allerdings nicht so einfach, wie beim L&ouml;schen, denn <b>Append<\/b> erwartet ein fertiges <b>TableDef<\/b>-Objekt, das erst &uuml;ber die <b>Database<\/b>-Methode <b>CreateTableDef<\/b> erzeugt und mit allerlei weiteren Eigenschaften, wie Feldern, versehen sein muss. Tabellen &uuml;ber VBA anlegen zu m&uuml;ssen, d&uuml;rfte jedoch ziemlich selten vorkommen, so dass dies hier nicht weiter besprochen wird.<\/p>\n<p><b>Refresh<\/b> ist eine Methode, die die Auflistung auf den neuesten Stand bringt. L&ouml;schen Sie etwa eine Tabelle per <b>Delete<\/b>, so findet sie sich zun&auml;chst trotzdem noch in der Auflistung. Erst ein <b>Refresh<\/b> aktualisiert die Liste wieder.<\/p>\n<p><b>Item<\/b> schlie&szlig;lich ist der Bezug zu einem einzelnen <b>TableDef<\/b>-Objekt, das &uuml;ber den Index der Auflistung angesprochen wird:<\/p>\n<pre>CurrentDb.TablesDefs.Item(0)<\/pre>\n<p>Hier erh&auml;lt man das <b>TableDef<\/b>-Objekt, welches auf die erste Tabelle der Datenbank verweist. Weil <b>Item <\/b>die sogenannte <b>Default<\/b>-Eigenschaft der Klasse ist, erkennbar am blauen Punkt im Objektkatalog, kann der Methodenname auch weggelassen werden:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>tdf<span style=\"color:blue;\"> As <\/span>TableDef\r\n<span style=\"color:blue;\">Set<\/span> tdf = CurrentDb.TableDefs(0)<\/pre>\n<p>Au&szlig;erdem kann auch direkt der Name des Objekts als Index statt der Ordinalzahl verwendet werden:<\/p>\n<pre>CurrentDb.TableDefs(\"Tabelle1\")<\/pre>\n<p>Mit diesem Wissen k&ouml;nnten Sie bereits die Routine zum Ausgeben aller Tabellen der Datenbank anfertigen. Es muss nur die Zahl der <b>TableDefs<\/b> mit <b>Count<\/b> ermittelt und dann in einer Schleife &uuml;ber eine Z&auml;hlervariable <b>n<\/b> jedes Objekt mit <b>Item(n<\/b>) angesprochen werden. Name ist die Eigenschaft des <b>TableDef<\/b>-Objekts, welches auch dem Namen der Tabelle entspricht.<\/p>\n<p>Es geht aber noch einfacher. Weil die Auflistungen COM-Enumeration unterst&uuml;tzen, kann man auf das Ansprechen per Index verzichten und eine <b>For..Each<\/b>-Schleife einsetzen. Der Beispielcode steht in Listing 1. Im VBA-Direktfenster wird erst die Zahl der Tabelle ausgegeben, danach jedes Element der Auflistung durchlaufen und der Name der entsprechenden Tabelle angezeigt. <\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>ListTables()\r\n     <span style=\"color:blue;\">Dim <\/span>tdf<span style=\"color:blue;\"> As <\/span>DAO.TableDef\r\n     \r\n     <span style=\"color:blue;\">Debug.Print<\/span> CurrentDb.TableDefs.Count & \" Tabellen\"\r\n     For Each tdf In CurrentDb.TableDefs\r\n         <span style=\"color:blue;\">Debug.Print<\/span> tdf.Name\r\n     <span style=\"color:blue;\">Next<\/span> tdf\r\n     \r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p class='imagetext'>Listing 1: Ausgeben aller Tabellen der Datenbank &uuml;ber die TableDefs-Auflistung<\/p>\n<p>Wie aus Bild 2 hervorgeht, gleichen sich die Auflistungen f&uuml;r <b>TableDefs<\/b> und <b>QueryDefs<\/b> vollst&auml;ndig. Deshalb ist der Code zur Ausgabe aller Abfragen ebenfalls identisch (Listing 2).<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>ListQueries()\r\n     <span style=\"color:blue;\">Dim <\/span>qdf<span style=\"color:blue;\"> As <\/span>DAO.QueryDef\r\n     \r\n     <span style=\"color:blue;\">Debug.Print<\/span> CurrentDb.QueryDefs.Count & \" Abfragen\"\r\n     For Each qdf In CurrentDb.QueryDefs\r\n         <span style=\"color:blue;\">Debug.Print<\/span> qdf.Name\r\n     <span style=\"color:blue;\">Next<\/span> qdf\r\n     \r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p class='imagetext'>Listing 2: Ausgeben aller Abfragen der Datenbank &uuml;ber die QueryDefs-Auflistung<\/p>\n<h2>Das TableDef-Objekt<\/h2>\n<p>Hat man erst einmal ein <b>TableDef<\/b>-Objekt, so l&auml;sst sich damit nat&uuml;rlich noch mehr anstellen, als nur die Ausgabe des Tabellennamens. Eine &uuml;bersicht aller Methoden sowohl der <b>TableDef<\/b>&#8211; als auch der <b>QueryDef<\/b>-Klassen zeigt der kombinierte Screenshot des Objektkatalogs in Bild 3. Einige davon sind nur f&uuml;r sehr spezielle Aufgaben von Belang, etwa f&uuml;r Tabellen, die &uuml;ber <b>ODBC<\/b> in die Datenbank verkn&uuml;pft sind, oder <b>PassThrough-Abfragen<\/b>, die ebenfalls auf einen SQL-Server aufsetzen. Gleiches gilt f&uuml;r Tabellen, die in Datenbanken mit <b>Replikation<\/b> vorkommen &#8211; teilweise Features, die die aktuellen Versionen von Access gar nicht mehr unterst&uuml;tzen! Diese Methoden sind der Kompatibilit&auml;t wegen noch im Objektmodell vorhanden, geben meist aber gar keine Werte mehr zur&uuml;ck. In Bild 3 sind alle Methoden, die Sie kaum interessieren d&uuml;rften, grau hinterlegt.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/OB_QDF_TDF.PNG\"><img decoding=\"async\" src=\"..\/tl_files\/images\/OB_QDF_TDF.PNG\" alt=\"TableDef- und QueryDef-Methoden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: TableDef- und QueryDef-Methoden<\/p>\n<p>Im Folgenden werden die relevantesten Methoden der <b>TableDef<\/b>-Klasse angef&uuml;hrt. Alles Weitere erfahren Sie in der Hilfe zu DAO, die allerdings leider nicht automatisch mit den neueren Access-Versionen installiert wird. Es gibt auch keine aktualisierte Hilfedatei zu DAO seit Access 2003. Deshalb gelangen Sie auch nicht zur Hilfe, wenn Sie etwa in Listing 2 den Ausdruck <b>QueryDef<\/b> markieren und <b>F1<\/b> dr&uuml;cken. Denn in das Objektmodell ist nach wie vor ein Bezug zur Hilfedatei <b>DAO360.chm<\/b> gespeichert, der ins Leere f&uuml;hrt, wenn sich diese Datei nicht auf ihrem System befindet.<\/p>\n<p>Wenn Sie die kontextsensitive Hilfe verwenden wollen, so besorgen Sie sich diese Hilfedatei im Internet und speichern sie im Windows-Verzeichnis im Unterordner <b>Help<\/b>. Ansonsten sind Sie darauf angewiesen, die Hilfe zu Access-VBA &uuml;ber das Men&uuml; des VBA-Editors aufzurufen und dann in der <b>Access Entwicklerreferenz<\/b>  den Zweig <b>Microsoft-Datenzugriffsobjekte (DAO)-Referenz<\/b> zu erforschen. Zur&uuml;ck zu den <b>TableDef<\/b>-Methoden:<\/p>\n<p><b>DateCreated<\/b> gibt zur&uuml;ck, wann eine Tabelle erstellt, <b>LastUpdated<\/b> den Zeitpunkt, wann sie zuletzt im Entwurf aktualisiert wurde. <b>Fields<\/b>, <b>Indexes<\/b> und <b>Properties<\/b> sind Auflistungseigenschaften, auf die wir noch gesondert zu sprechen kommen.<\/p>\n<p><b>RecordCount<\/b> ist eine interessante Eigenschaft: Sie zeigt die Zahl der in der Tabelle gespeicherten Datens&auml;tze an, soweit es sich um eine nicht-verkn&uuml;pfte Tabelle handelt.<\/p>\n<p>Im Gegensatz zu den missverst&auml;ndlichen Erl&auml;uterungen der DAO-Hilfe stimmt diese Zahl immer, auch wenn nicht, wie dort angef&uuml;hrt, bereits erst auf alle Datens&auml;tze zugegriffen wurde. Dies gilt nur f&uuml;r ein Recordset-Objekt.<\/p>\n<p><b>Updatable<\/b> kennzeichnet, ob der Inhalt einer Tabelle schreibgesch&uuml;tzt ist, oder aktualisierbar. F&uuml;r die Systemtabellen wird hier in der Regel ein <b>False<\/b> zur&uuml;ckgegeben.<\/p>\n<p><b>ValidationRule<\/b> und <b>ValidationText<\/b> sind Synonyme f&uuml;r die G&uuml;ltigkeitsregel einer Tabelle und die gegebenenfalls ausgegebene Meldung. Das sind Eigenschaften, von denen selten Gebrauch gemacht wird, da G&uuml;ltigkeitsbeschr&auml;nkungen meist auf Feldebene definiert werden.<\/p>\n<p>Die <b>Create<\/b>-Methoden korrelieren mit den entsprechenden Auflistungen zu Fields, Indexes und Properties. Hier&uuml;ber k&ouml;nnen neue Felder in einer Tabelle erzeugt, neue Indizes oder neue benutzerdefinierte Eigenschaften hinzugef&uuml;gt werden.<\/p>\n<p><b>Connect<\/b> und <b>RefreshLink<\/b> haben nur Bedeutung im Zusammenhang mit verkn&uuml;pften Tabellen. In <b>Connect<\/b> wird der Pfad zu einer Backend-Datenbank angegeben und mit <b>RefreshLink<\/b> erst wirklich aktualisiert. Alle anderen Tabellen zeigen f&uuml;r <b>Connect<\/b> einen leeren String.<\/p>\n<p><b>OpenRecordset<\/b> &ouml;ffnet eine Datensatzgruppe auf die Tabelle. Das d&uuml;rfte Ihnen bekannt vorkommen. Hier handelt es sich um eine Alternative zur Syntax mit<\/p>\n<pre>CurrentDb.OpenRecordset(\"tblXY\")<\/pre>\n<p>Dasselbe Ergebnis erhalten Sie mit<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>tdf<span style=\"color:blue;\"> As <\/span>TableDef\r\n<span style=\"color:blue;\">Set<\/span> tdf = CurrentDb.TableDefs(\"tblXY\")\r\ntdf.OpenRecordset<\/pre>\n<p>Beide Varianten sind in Listing 3 aufgef&uuml;hrt. Im ersten Teil kommt die konventionelle Methode zum Einsatz, im zweiten das <b>TableDef<\/b>-Objekt. Eigentlich gibt es keinen Grund, zu dieser Variante zu greifen. Sie ist hier aber aufgef&uuml;hrt, weil sie so sch&ouml;n zwei VBA-Spezialit&auml;ten demonstriert: Einmal die <b>With-Anweisung<\/b> &#8211; in dieser Ausgabe bereits besprochen &#8211; und dann die G&uuml;ltigkeit eines Objekts. Machen Sie den Versuch und schreiben zum Setzen der <b>TableDef<\/b>-Variablen diesen Code:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> tdf = _\r\n     CurrentDb.TableDefs(\"tblLaender\")\r\n<span style=\"color:blue;\">Set<\/span> rs = tdf.OpenRecordset()<\/pre>\n<p>W&auml;hrend die erste Zeile noch anstandslos ausgef&uuml;hrt wird, kommt es bei der zweiten Zeile zu der Fehlermeldung, dass ein Objekt nicht mehr festgelegt sei. Dass die <b>tdf<\/b>-Variable nicht der &uuml;belt&auml;ter sein kann, erfahren Sie &uuml;ber den Test im Direktfenster, nachdem Sie einen Haltepunkt auf die Zeile setzten:<\/p>\n<pre> tdf.Name<\/pre>\n<p>gibt korrekt <b>tblLaender<\/b> zur&uuml;ck. Was aber sollte dann nicht festgelegt sein Es bleibt nur noch das <b>CurrentDb<\/b>-Objekt. Tats&auml;chlich handelt es sich bei diesem um ein nichtpersistentes Objekt, welches nur eine Momentaufnahme der aktuellen Datenbank versinnbildlicht. In der zweiten Code-Zeile ist es sozusagen bereits wieder verschwunden. Die &uuml;bliche L&ouml;sung f&uuml;r diesen Umstand besteht im zus&auml;tzlichen Anlegen einer <b>Database<\/b>-Variablen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>dbs<span style=\"color:blue;\"> As <\/span>Database\r\n<span style=\"color:blue;\">Set<\/span> dbs = CurrentDb\r\n<span style=\"color:blue;\">Set<\/span> tdf = dbs.TableDefs(\"tblLaender\")<\/pre>\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\/55000271\/\">\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\/55000271?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\/55000271\/\"\/>\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>Der Umgang mit den Datens&auml;tzen einer Tabelle &uuml;ber das Recordset-Objekt der DAO-Bibliothek ist das A und O der Programmierung unter Access und d&uuml;rfte Ihnen deshalb wahrscheinlich gel&auml;ufig sein. Nicht selten aber wird auch der Zugriff auf die Eigenschaften der Tabellen und Abfragen selbst ben&ouml;tigt &#8211; und hier kommt abermals DAO mit seinen TableDef- und QueryDef-Objekten ins Spiel.<\/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":[66012015,662015,44000018],"tags":[],"class_list":["post-55000271","post","type-post","status-publish","format-standard","hentry","category-66012015","category-662015","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>Tabellen und Abfragen &uuml;ber DAO verwalten - Access [basics]<\/title>\n<meta name=\"description\" content=\"Der Umgang mit den Datens\u00e4tzen einer Tabelle \u00fcber das Recordset-Objekt der DAO-Bibliothek ist das A und O der Programmierung unter Access und d\u00fcrfte Ihnen deshalb wahrscheinlich gel\u00e4ufig sein. Nicht selten aber wird auch der Zugriff auf die Eigenschaften der Tabellen und Abfragen selbst ben\u00f6tigt \u2013 und hier kommt abermals DAO mit seinen TableDef- und QueryDef-Objekten ins Spiel.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tabellen und Abfragen &uuml;ber DAO verwalten - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Der Umgang mit den Datens\u00e4tzen einer Tabelle \u00fcber das Recordset-Objekt der DAO-Bibliothek ist das A und O der Programmierung unter Access und d\u00fcrfte Ihnen deshalb wahrscheinlich gel\u00e4ufig sein. Nicht selten aber wird auch der Zugriff auf die Eigenschaften der Tabellen und Abfragen selbst ben\u00f6tigt \u2013 und hier kommt abermals DAO mit seinen TableDef- und QueryDef-Objekten ins Spiel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:19+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\/OB_Database.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=\"26\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\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/OB_Database.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html\",\"name\":\"Tabellen und Abfragen &uuml;ber DAO verwalten - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:19+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Der Umgang mit den Datens\\u00e4tzen einer Tabelle \\u00fcber das Recordset-Objekt der DAO-Bibliothek ist das A und O der Programmierung unter Access und d\\u00fcrfte Ihnen deshalb wahrscheinlich gel\\u00e4ufig sein. Nicht selten aber wird auch der Zugriff auf die Eigenschaften der Tabellen und Abfragen selbst ben\\u00f6tigt \\u2013 und hier kommt abermals DAO mit seinen TableDef- und QueryDef-Objekten ins Spiel.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.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\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Tabellen_und_Abfragen_ueber_DAO_verwalten.html\",\"name\":\"Tabellen und Abfragen &uuml;ber DAO verwalten\"}}]},{\"@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\/55000271","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=55000271"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000271\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}