{"id":55000327,"date":"2017-04-01T00:00:00","date_gmt":"2020-01-24T15:59:40","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=327"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Zugriff_auf_Server_ueber_ODBC_Teil_II","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html","title":{"rendered":"Zugriff auf Server &uuml;ber ODBC, Teil II"},"content":{"rendered":"<p class='introduction'>Das manuelle Verkn&uuml;pfen einer SQL-Server-Tabelle in eine Access-Datenbank &uuml;ber den ODBC-Administrator von Windows ist die eine Sache, das programmgesteuerte Beleben der Verbindung und das Neuverkn&uuml;pfen &uuml;ber VBA eine andere! Zeigte die Juli-Ausgabe von ACCESS BASICS die Grundlagen zum Umgang mit ODBC-Backends, so erfahren Sie hier mehr &uuml;ber die Ansprache von ODBC-Verbindungen durch VBA-Programmierung.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1608_ODBC2.zip<\/b>.<\/p>\n<h2>ODBC-Tabellen neu verkn&uuml;pfen<\/h2>\n<p>Die Aufteilung einer Datenbank in Logik und Daten kennen Sie bereits von reinen Access-Datenbanken: Das <b>Frontend<\/b> enth&auml;lt nur die Oberfl&auml;che, also Formulare und Berichte, sowie den VBA-Code, und au&szlig;erdem Abfragen. Das <b>Backend<\/b> ist eine separate Access-Datei, welche ausschlie&szlig;lich Tabellen beherbergt, welche in das Frontend verkn&uuml;pft werden. Ebenso verh&auml;lt es sich mit dem Gespann Access und <b>SQL-Server<\/b>, nur dass sich hier die Daten aus einem <b>DBMS-Server<\/b> speisen und die Tabellen &uuml;ber <b>ODBC-Verkn&uuml;pfungen<\/b> in das Frontend gelangen.<\/p>\n<p>Beim Verschieben eines Access-Backends etwa auf eine andere Maschine stimmen dann die Tabellenverkn&uuml;pfung nicht mehr und m&uuml;ssen beim Start des Frontends angepasst werden, da Access in der Verkn&uuml;pfung grunds&auml;tzlich absolute statische Pfade abspeichert. &auml;hnlich sieht es bei<b> ODBC-Verkn&uuml;pfungen<\/b> aus. Der Ort des SQL-Servers oder der Tabellen auf ihm kann sich &auml;ndern, was eine Anpassung der Verkn&uuml;pfungen im Frontend nach sich ziehen muss. <\/p>\n<p>Egal, ob beim Access- oder ODBC-Backend, das Neuverkn&uuml;pfen der Tabellen sollte ein Vorgang sein, der weitgehend automatisiert und m&ouml;glichst ohne manuelle Interaktion vonstattengeht. Hier kommen Sie um VBA-Routinen nicht herum, die Sie etwa in Ausgabe <b>06\/2011<\/b> T<b>abellenverkn&uuml;pfungen pflegen<\/b> finden.<\/p>\n<p>Bei ODBC-Verkn&uuml;pfungen verwenden Sie Code, der ganz &auml;hnlich gestaltet ist. Eine Tabelle wird &uuml;ber ein <b>DAO-TableDef<\/b>-Objekt repr&auml;sentiert und dessen Eigenschaft <b>Connect<\/b> enth&auml;lt die relevanten Informationen zum Backend-Ort. Verwenden Sie etwa diese VBA-Zeilen, um die <b>Connect<\/b>-Eigenschaft f&uuml;r die Tabelle <b>tblAdressen<\/b> auszulesen:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> dbs = CurrentDb\r\n dbs.TableDefs(\"tblAdressen\").Connect<\/pre>\n<p>Bef&auml;nde sich die Tabelle in einem Access-Backend, dann k&ouml;nnte das Ergebnis so aussehen:<\/p>\n<pre>;DATABASE=c:\\users\\fritz\\test.accdb<\/pre>\n<p>Das erste Zeichen des <b>Connect<\/b>-Strings ist ein Semikolon, was darauf hinweist, dass vor ihm noch Anderes stehen k&ouml;nnte. Der Leer-String aber sagt Access, dass es sich hier um eine Access-Datei handeln muss, deren Pfad schlie&szlig;lich im Parameter <b>DATABASE<\/b> folgt.<\/p>\n<p>Greift die Verkn&uuml;pfung hingegen auf eine <b>ODBC-Tabelle<\/b> zu, so sieht das Ergebnis anders aus:<\/p>\n<pre>ODBC;DSN=Access Basics Demo;Driver={SQLite3 ODBC Driver};Database=c:\\users\\fritz\\adressen.sqlite;FKSupport=1; usw...<\/pre>\n<p>Hier steht an erster Stelle der Ausdruck <b>ODBC<\/b>, was Access darauf hinweist, die Tabelle &uuml;ber einen <b>ODBC-Treiber<\/b> zu finden. Die weiteren Angaben hierzu folgen im Anschluss.<\/p>\n<p>Die eine M&ouml;glichkeit besteht dabei im Zugriff auf eine <b>DSN<\/b>, wie sie im ersten Teil des Beitrags manuell &uuml;ber den <b>ODBC-Administrator<\/b> angelegt wurde. Hinter dem Parameternamen <b>DSN<\/b> folgt dann der Name der angelegten <b>DSN<\/b> &#8211; hier: <b>Access Basics Demo<\/b>. Das w&uuml;rde an sich bereits ausreichen, denn in der <b>Benutzer-DSN<\/b>, welche ihrerseits alle Informationen in der Registry ablegt, stehen schon alle Angaben zu Treiber, Datenbankort und Zugriffsoptionen. <\/p>\n<p>Die Alternative w&auml;re der Verzicht auf eine zuvor angelegte <b>DSN<\/b>. Dann entf&auml;llt der <b>DSN-Parameter<\/b> im <b>Connect<\/b>-String und alle Angaben zur ODBC-Verbindung m&uuml;ssen stattdessen in ihm angegeben werden. Das w&auml;re der Teil ab <b>Driver<\/b>&#8230;:<\/p>\n<pre>ODBC;Driver={SQLite3 ODBC Driver}; Database=c:\\users\\fritz\\adressen.sqlite; FKSupport=1;...usw.<\/pre>\n<p>Die aufeinanderfolgenden Parameternamen, wie <b>Database<\/b>, <b>FKSupport<\/b>, et cetera, sind keine, die Access selbst kennt! Sie unterscheiden sich je nach gew&auml;hltem <b>ODBC-Treiber<\/b>, der sie seinerseits kennt. Nur der <b>SQLite<\/b>-Treiber etwa wei&szlig;, dass <b>Database<\/b> der Ort der <b>SQLite<\/b>-Datei ist, die er laden soll, und dass <b>FKSupport<\/b> die Option zur Unterst&uuml;tzung von Fremdschl&uuml;sseln ist.<\/p>\n<p>Wie kommen Sie an diese Parameternamen und deren Bedeutung Hier bleibt Ihnen nur die Dokumentation zum Treiber auf dessen Herstellerseite oder die Recherche etwa auf <b>connectionstrings.com<\/b>, einer Seite, die zu allen g&auml;ngigen <b>DBMS<\/b> die <b>ODBC-Connect-Strings<\/b> mehr oder weniger kommentiert auflistet.<\/p>\n<p>Stimmen Parameternamen oder -werte nicht, so ignorieren ODBC-Treiber diese in der Regel. Soweit m&ouml;glich, kommt dennoch eine Verbindung zustande und der Treiber setzt <b>Default-Werte<\/b> ein.<\/p>\n<p>Fehlen relevante Angaben, so &ouml;ffnet sich der jeweilige Treiber-Dialog des <b>ODBC-Administrators<\/b> und verlangt nach manueller Eingabe. Unter Umst&auml;nden meldet Access aber auch einfach: <b>Kann keine ODBC-Verbindung herstellen<\/b>, oder &auml;hnlich. <\/p>\n<p>Im Falle des <b>SQLite-Treibers<\/b> und dem nebenstehenden <b>Connect<\/b>-String kommt es zur Fehlermeldung <b>-7778<\/b> mit dem Text: <b>Reservierter Fehler; es gibt keine Beschreibung f&uuml;r diesen Fehler<\/b>. Microsoft macht wenig erhellende Angaben zu diesem Fehler. Er kann verschiedene Ursachen haben, die in Authentifizierungsproblemen begr&uuml;ndet scheinen. Wie auch immer, ohne Angabe einer DSN funktioniert ein SQLite-Connect-String nicht.<\/p>\n<p>Gl&uuml;cklicherweise legt der ODBC-Treiber f&uuml;r <b>SQLite<\/b> bei Installation automatisch eine <b>System-DSN<\/b> an, die immer den Namen <b>SQLIte3 Datasource<\/b> aufweist. Diese <b>DSN<\/b> enth&auml;lt lediglich Angaben zum Treiber, nicht aber zum Ort einer <b>SQLite<\/b>-Datenbankdatei. Tats&auml;chlich kann man nun im <b>Connect-String<\/b> beides kombinieren: den <b>DSN-Namen<\/b> und die <b>Optionsparameter<\/b> im Anschluss! Demgem&auml;&szlig; hat der <b>Connect-String<\/b> f&uuml;r <b>SQLite<\/b> immer diesen Anfang:<\/p>\n<pre>ODBC;DSN=SQLite3 Datasource; Driver={SQLite3 ODBC Driver};...<\/pre>\n<p>Im Folgenden erg&auml;nzen Sie die weiteren Angaben, wovon der Ort der Datenbank mit <b>Database<\/b> die wichtigste ist.<\/p>\n<p>Mit diesem Wissen im Gep&auml;ck k&ouml;nnen Sie eine ODBC-Tabellenverkn&uuml;pfung nun per VBA &auml;ndern, indem Sie die Connect-Eigenschaft des zugeh&ouml;rigen TableDef-Objekts neu einstellen. Listing 1 zeigt eine Routine aus der Beispieldatenbank, die das demonstriert. In der String-Variablen <b>sConnect<\/b> wird der <b>Connect-String <\/b>zusammengebaut. Er besteht aus dem erw&auml;hnten Beginn f&uuml;r den SQLite-Treiber und allerlei Optionsparametern, auf deren Bedeutung wir hier nicht weiter eingehen. Zwischendrin wird der Pfad zur SQLite-Datei &uuml;ber den Parameter <b>Database<\/b> eingebracht, wobei sich dieser aus dem Verzeichnis des Frontends (<b>CurrentProject.Path<\/b>) und der SQLite-Datei <b>adressenneu.sqlite<\/b> bildet.<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>ChangeConnectTable(<span style=\"color:blue;\">Optional<\/span> ViaConnect<span style=\"color:blue;\"> As Boolean<\/span> = <span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>sConnect<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>dbs<span style=\"color:blue;\"> As <\/span>Database\r\n     <span style=\"color:blue;\">Dim <\/span>tdf<span style=\"color:blue;\"> As <\/span>TableDef\r\n     <span style=\"color:blue;\">Dim <\/span>prp<span style=\"color:blue;\"> As <\/span>DAO.Property\r\n     \r\n     sConnect = \"ODBC;DSN=SQLite3 Datasource;\" & _\r\n                \"Driver={SQLite3 ODBC Driver};\" & _\r\n                \"Database=\" & CurrentProject.Path & \"\\adressenneu.sqlite;\" & _\r\n                \"LongNames=0;ShortNames=0;NoWCHAR=0;PWD=Admin;FKSupport=1;\" & _\r\n                \"Timeout=500;NoTXN=0;OEMCP=1;BigInt=0;JDConv=0;StepAPI=0;\" & _\r\n                \"NoCreat=1;SyncPragma=FULL;\"\r\n     <span style=\"color:blue;\">Debug.Print<\/span> sConnect\r\n     <span style=\"color:blue;\">If <\/span>ViaConnect<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> dbs = CurrentDb\r\n         <span style=\"color:blue;\">Set<\/span> tdf = dbs.TableDefs(\"tblAdressen\")\r\n         tdf.Connect = sConnect\r\n         tdf.RefreshLink\r\n         dbs.TableDefs.Refresh\r\n         <span style=\"color:blue;\">Set<\/span> tdf = Nothing\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         DoCmd.TransferDatabase acLink, \"ODBC Database\", sConnect, acTable, _\r\n             \"tblAdressen\", \"tblAdressen\"\r\n         DoCmd.DeleteObject acTable, \"tblAdressen\"\r\n         DoCmd.Rename \"tblAdressen\", acTable, \"tblAdressen1\"\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: Neuverkn&uuml;pfen einer ODBC-Tabelle &uuml;ber eine VBA-Prozedur<\/p>\n<p>Im weiteren Verlauf &#8211; der Zweig nach <b>If ViaConnect<\/b> &#8211; setzt die Prozedur die Objektvariable <b>tdf<\/b> auf das <b>TableDef<\/b>-Objekt zur Tabelle <b>tblAdressen<\/b>. Deren <b>Connect<\/b>-Eigenschaft wird nun mit dem neu gebildeten String aus <b>sConnect<\/b> best&uuml;ckt. <b>RefreshLink<\/b> ist eine Methode, die Access anweist, die <b>Connect<\/b>-Eigenschaft auszuwerten und die Verbindung zum Backend neu herzustellen. <b>TableDefs.Refresh<\/b> f&uuml;hrt sicherheitshalber dazu, dass die Tabelle auch im Navigationsbereich korrekt dargestellt wird. Nach Durchlaufen des Codes ohne Fehlermeldung k&ouml;nnen Sie die Tabelle als Datenblatt &ouml;ffnen und haben damit die Daten aus <b>adressenneu.sqlite<\/b> vor sich.<\/p>\n<p><b>ViaConnect<\/b> als optionaler Parameter ist in der Routine standardm&auml;&szlig;ig auf <b>True<\/b> gesetzt. Er bedeutet, dass zum Neuverkn&uuml;pfen das <b>TableDef<\/b>-Objekt und seine <b>Connect<\/b>-Eigenschaft zum Einsatz kommen sollen. Es gibt jedoch noch eine alternative Methode.<\/p>\n<h2>TransferDatabase<\/h2>\n<p>Diese Methode des <b>DoCmd<\/b>-Objekts vollbringt das gleiche, wie die &auml;nderung von <b>TableDef.Connect<\/b>. Ist in der Routine aus Listing 1 der Parameter <b>ViaConnect<\/b> auf False gesetzt, so wird der zweite Teil des Bedingungszweigs angesprungen. <b>TransferDatabase<\/b> dient entweder zum Importieren oder zum Verkn&uuml;pfen von Fremdtabellen. Die Liste der Parameter und ihrer Bedeutung entnehmen Sie der Access-Hilfe, indem Sie die Methode im Code markieren und <b>F1<\/b> dr&uuml;cken.<\/p>\n<p><b>acLink<\/b> sagt Access, dass die Tabelle verkn&uuml;pft werden soll. Handelt es sich um die &uuml;ber ODBC angesprochene Tabelle eines SQL-Servers, so hat darauf als Typ der Ausdruck <b>ODBC Database<\/b> zu folgen. Anschlie&szlig;end &uuml;bergeben Sie den gleichen <b>Connect-String<\/b> in <b>sConnect<\/b>, wie beim <b>TableDef<\/b>-Objekt. Zus&auml;tzlich definieren Sie mit <b>acTable<\/b>, dass es hier um eine Tabelle handelt, deren Namen auf dem SQL-Server (<b>tblAdressen<\/b>) sie als weiteren Parameter angeben. Schlie&szlig;lich k&ouml;nnen Sie mit dem letzten Parameter bestimmen, wie die Tabelle unter Access hei&szlig;en soll. Dieser dann im Navigationsbereich angezeigte Name kann sich beliebig von dem auf dem SQL-Server unterscheiden!<\/p>\n<p>Der Haken an der Geschichte: <b>TransferDatabase<\/b> modifiziert eine bestehende Tabellenverkn&uuml;pfung nicht, sondern legt eine neue an! Da die Tabelle <b>tblAdressen<\/b> im Frontend bereits existiert, legt Access eigenm&auml;chtig einen anderen Namen an, n&auml;mlich <b>tblAdressen1<\/b>, statt die Verkn&uuml;pfung zu &uuml;berschreiben. Aus diesem Grund l&ouml;scht die folgende Codezeile &uuml;ber die Methode <b>DeleteObject<\/b> von <b>DoCmd<\/b> die alte Tabellenverkn&uuml;pfung und benennt nun die neue per <b>Rename<\/b> wieder in <b>tblAdressen<\/b> um.<\/p>\n<p>Zum &auml;ndern einer ODBC-Verkn&uuml;pfung eignet sich also das <b>TableDef<\/b>-Objekt besser, zum neuen Anlegen einer Verkn&uuml;pfung die Methode <b>TransferDatabase<\/b>.<\/p>\n<h2>ODBC-Tabellen<\/h2>\n<p>Mit den ODBC-verkn&uuml;pften Tabellen k&ouml;nnen Sie im Frontend genauso arbeiten, wie mit normalen Access-Tabellen. Also etwa Formulare, Berichte und Abfragen auf ihnen basieren lassen. Das Anzeigen von Daten gelingt praktisch immer problemlos. Beim &auml;ndern oder Hinzuf&uuml;gen von Datens&auml;tzen kann es hingegen manchmal zu Aktualisierungsfehlern kommen. Ob und wann dies geschieht, h&auml;ngt vom verwendeten SQL-Server und dem Aufbau seiner Tabellen ab. Generell l&auml;sst sich sagen, dass diese Fehler reduziert werden, wenn jede Tabelle einen eindeutigen Prim&auml;rschl&uuml;ssel aufweist. Zus&auml;tzlich macht es sich gut, jeder Tabelle ein sogenanntes <b>Timestamp-Feld<\/b> zu spendieren. Diesen Datentyp kennen Access-Tabellen selbst nicht, jedoch fast alle anderen <b>DBMS<\/b>. Es handelt sich um einen speziellen Datumstyp, den der SQL-Server wie einen <b>Autowert<\/b> immer mit dem augenblicklichen Datum belegt, sobald ein Datensatz abgespeichert wird. Indizieren Sie das Feld auf dem SQL-Server besser auch noch eindeutig. Access interpretiert beim Verkn&uuml;pfen der Tabelle diesen Typ korrekt als Datum. Verwenden Sie das Feld jedoch nicht aktiv in Formularen oder Abfragen!<\/p>\n<h2>PassThrough-Abfragen<\/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\/55000327\/\">\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\/55000327?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\/55000327\/\"\/>\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>Das manuelle Verkn&uuml;pfen einer SQL-Server-Tabelle in eine Access-Datenbank &uuml;ber den ODBC-Administrator von Windows ist die eine Sache, das programmgesteuerte Beleben der Verbindung und das Neuverkn&uuml;pfen &uuml;ber VBA eine andere! Zeigte die Juli-Ausgabe von ACCESS BASICS die Grundlagen zum Umgang mit ODBC-Backends, so erfahren Sie hier mehr &uuml;ber die Ansprache von ODBC-Verbindungen durch VBA-Programmierung.<\/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":[662016,66082016,44000018],"tags":[],"class_list":["post-55000327","post","type-post","status-publish","format-standard","hentry","category-662016","category-66082016","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>Zugriff auf Server &uuml;ber ODBC, Teil II - Access [basics]<\/title>\n<meta name=\"description\" content=\"Das manuelle Verkn\u00fcpfen einer SQL-Server-Tabelle in eine Access-Datenbank \u00fcber den ODBC-Administrator von Windows ist die eine Sache, das programmgesteuerte Beleben der Verbindung und das Neuverkn\u00fcpfen \u00fcber VBA eine andere! Zeigte die Juli-Ausgabe von ACCESS BASICS die Grundlagen zum Umgang mit ODBC-Backends, so erfahren Sie hier mehr \u00fcber die Ansprache von ODBC-Verbindungen durch VBA-Programmierung.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zugriff auf Server &uuml;ber ODBC, Teil II - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Das manuelle Verkn\u00fcpfen einer SQL-Server-Tabelle in eine Access-Datenbank \u00fcber den ODBC-Administrator von Windows ist die eine Sache, das programmgesteuerte Beleben der Verbindung und das Neuverkn\u00fcpfen \u00fcber VBA eine andere! Zeigte die Juli-Ausgabe von ACCESS BASICS die Grundlagen zum Umgang mit ODBC-Backends, so erfahren Sie hier mehr \u00fcber die Ansprache von ODBC-Verbindungen durch VBA-Programmierung.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:40+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\/PTQuery.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=\"22\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\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/PTQuery.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html\",\"name\":\"Zugriff auf Server &uuml;ber ODBC, Teil II - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:40+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Das manuelle Verkn\\u00fcpfen einer SQL-Server-Tabelle in eine Access-Datenbank \\u00fcber den ODBC-Administrator von Windows ist die eine Sache, das programmgesteuerte Beleben der Verbindung und das Neuverkn\\u00fcpfen \\u00fcber VBA eine andere! Zeigte die Juli-Ausgabe von ACCESS BASICS die Grundlagen zum Umgang mit ODBC-Backends, so erfahren Sie hier mehr \\u00fcber die Ansprache von ODBC-Verbindungen durch VBA-Programmierung.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.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\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Server_ueber_ODBC_Teil_II.html\",\"name\":\"Zugriff auf Server &uuml;ber ODBC, Teil II\"}}]},{\"@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\/55000327","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=55000327"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000327\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}