{"id":55000615,"date":"2022-12-01T00:00:00","date_gmt":"2022-12-01T00:00:00","guid":{"rendered":"http:\/\/access-basics.de\/615"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Tabellen_basics_Verknuepfungen_per_Makro_pruefen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html","title":{"rendered":"Tabellen [basics]: Verkn&uuml;pfungen per Makro pr&uuml;fen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/e435be3fcf144447808e1af299c76082\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class='introduction'>Im Artikel <b>Tabellen [basics]: Verkn&uuml;pfung aktualisieren <\/b>(<b>www.access-basics.de\/612<\/b>) haben  wir uns angeschaut, wie wir die Verkn&uuml;pfungen zu den Tabellen in einer Backenddatenbank in einem Frontend wiederherstellen, wenn diese einmal nicht mehr stimmen. Dort ist die Frage aufgetaucht, ob man nicht per Makro beim &Ouml;ffnen einer Datenbank pr&uuml;fen kann, ob die Verkn&uuml;pfungen aktuell sind und, falls dies nicht der Fall ist, automatisch den Benutzer informiert und den Tabellenverkn&uuml;pfungs-Assistenten aufruft, um die Verkn&uuml;pfungen zu aktualisieren. Ob und wie das gelingt, schauen wir uns im aktuellen Artikel an.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels findest Du in der Datenbank <b>2206_TabellenBasics_Verknuepfung.zip<\/b>.<\/p>\n<p>Seit der Version 2010 bietet Access einen deutlich erweiterten Umfang an Makro-Funktionen an. Warum ich das erw&auml;hne, obwohl diese Version nun auch schon mindestens 12 Jahre auf dem Buckel hat Weil es sicher Leser unter Euch gibt, die den Makros seit langer Zeit den R&uuml;cken zugewendet haben und einfach nicht mitverfolgt haben, was in der Zwischenzeit geschehen ist. Und weil es nach meiner Erfahrung auch Entwickler gibt, die immer noch mit Access 2003 oder Access 2007 arbeiten und vielleicht einen Anreiz brauchen, um ein Upgrade durchzuf&uuml;hren &#8230;<\/p>\n<p>Wichtig ist eigentlich nur: Wir k&ouml;nnen ohne Einsatz von VBA eine Menge mehr erreichen, als es fr&uuml;her der Fall war. Also schauen wir uns an, ob wir die oben gestellte Aufgabe mit Access-Makros erledigen k&ouml;nnen.<\/p>\n<h2>Aufgabenstellung<\/h2>\n<p>Die Aufgabe ist einfach: Wir wollen daf&uuml;r sorgen, dass eine Access-Datenbank beim Starten automatisch pr&uuml;ft, ob die enthaltenen Tabellenverkn&uuml;pfungen aktuell sind, das hei&szlig;t, dass der Pfad zu der Datenbankdatei, welche die verkn&uuml;pften Tabellen enth&auml;lt, korrekt ist.<\/p>\n<p>Ist das nicht der Fall, soll einfach der Tabellenverkn&uuml;pfungs-Manager erscheinen und dem Benutzer die M&ouml;glichkeit geben, die Verkn&uuml;pfung zu aktualisieren, sodass er wieder mit der Datenbank arbeiten kann.<\/p>\n<p>Zuvor wollen wir dem Benutzer jedoch noch in einer kleinen Meldung mitteilen, was &uuml;berhaupt los ist und welche Schritte n&ouml;tig sind, um das Problem zu beheben.<\/p>\n<h2>Automatisches Ausf&uuml;hren beim Start<\/h2>\n<p>Ein wichtiger Aspekt ist, dass unser Mechanismus, den wir per Access-Makro definieren wollen, automatisch ausgel&ouml;st wird. Das erledigen wir im Falle eines Makros ganz einfach: Wir speichern es einfach unter dem Namen <b>Autoexec<\/b><\/p>\n<p>Das Makro mit diesem Namen wird beim Start der Anwendung automatisch aufgerufen.<\/p>\n<h2>Erkennen des Problems: Verkn&uuml;pfung zu einer Tabelle funktioniert nicht<\/h2>\n<p>Die erste Aufgabe f&uuml;r unser kleines Projekt ist, zu erkennen, dass die Verkn&uuml;pfungen nicht funktionieren, also das die f&uuml;r die Verkn&uuml;pfung angegebene Tabelle nicht gefunden werden kann.<\/p>\n<p>Das kann sowohl daran liegen, dass der Pfad zur Backenddatenbank, in der die Tabelle liegt, ge&auml;ndert wurde oder dass sich der Name der Tabelle ge&auml;ndert hat &#8211; dann erscheint beispielsweise die Meldung aus Bild 1.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/001.png\" alt=\"Fehler, wenn eine verkn&uuml;pfte Tabelle nicht in der angegebenen Datenbank gefunden werden kann \" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Fehler, wenn eine verkn&uuml;pfte Tabelle nicht in der angegebenen Datenbank gefunden werden kann <\/p>\n<p>Wie aber k&ouml;nnen wir das per Makro herausfinden Es gibt dort nicht so genaue M&ouml;glichkeiten wie unter VBA, wo wir beispielsweise genau pr&uuml;fen k&ouml;nnen, ob die f&uuml;r die Verkn&uuml;pfung angegebene Datei existiert und auch noch die betroffene Tabelle enth&auml;lt.<\/p>\n<p>Aber wir k&ouml;nnen ersatzweise etwas anderes ausprobieren: n&auml;mlich die Tabelle einfach einmal zu &ouml;ffnen. <\/p>\n<p>In einem neuen, leeren Makro, das wir mit dem Ribbon-Befehl <b>Erstellen|Makros und Code|Makro <\/b>anlegen, f&uuml;gen wir dazu einfach einmal den Befehl <b>&Ouml;ffnenTabelle <\/b>hinzu und geben als zu &ouml;ffnende Tabelle die Tabelle <b>tblAnreden <\/b>an (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/002.png\" alt=\"Makro mit einer Aktion zum &Ouml;ffnen einer Tabelle\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Makro mit einer Aktion zum &Ouml;ffnen einer Tabelle<\/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\/55000615\/\">\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\/55000615?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\/55000615\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"e5d0bba7c3\"\/>\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>Im Artikel <b>Tabellen [basics]: Verkn&uuml;pfung aktualisieren <\/b>(<b>www.access-basics.de\/612<\/b>) haben  wir uns angeschaut, wie wir die Verkn&uuml;pfungen zu den Tabellen in einer Backenddatenbank in einem Frontend wiederherstellen, wenn diese einmal nicht mehr stimmen. Dort ist die Frage aufgetaucht, ob man nicht per Makro beim &Ouml;ffnen einer Datenbank pr&uuml;fen kann, ob die Verkn&uuml;pfungen aktuell sind und, falls dies nicht der Fall ist, automatisch den Benutzer informiert und den Tabellenverkn&uuml;pfungs-Assistenten aufruft, um die Verkn&uuml;pfungen zu aktualisieren. Ob und wie das gelingt, schauen wir uns im aktuellen Artikel an.<\/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":[662022,66062022,44000003],"tags":[],"class_list":["post-55000615","post","type-post","status-publish","format-standard","hentry","category-662022","category-66062022","category-Tabellen_entwerfen"],"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 [basics]: Verkn&uuml;pfungen per Makro pr&uuml;fen - Access [basics]<\/title>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tabellen [basics]: Verkn&uuml;pfungen per Makro pr&uuml;fen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Im Artikel Tabellen [basics]: Verkn&uuml;pfung aktualisieren (www.access-basics.de\/612) haben wir uns angeschaut, wie wir die Verkn&uuml;pfungen zu den Tabellen in einer Backenddatenbank in einem Frontend wiederherstellen, wenn diese einmal nicht mehr stimmen. Dort ist die Frage aufgetaucht, ob man nicht per Makro beim &Ouml;ffnen einer Datenbank pr&uuml;fen kann, ob die Verkn&uuml;pfungen aktuell sind und, falls dies nicht der Fall ist, automatisch den Benutzer informiert und den Tabellenverkn&uuml;pfungs-Assistenten aufruft, um die Verkn&uuml;pfungen zu aktualisieren. Ob und wie das gelingt, schauen wir uns im aktuellen Artikel an.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-01T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/e435be3fcf144447808e1af299c76082\" \/>\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=\"8\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_basics_Verknuepfungen_per_Makro_pruefen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"http:\/\/vg07.met.vgwort.de\/na\/e435be3fcf144447808e1af299c76082\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html\",\"name\":\"Tabellen [basics]: Verkn&uuml;pfungen per Makro pr&uuml;fen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html#primaryimage\"},\"datePublished\":\"2022-12-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.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_basics_Verknuepfungen_per_Makro_pruefen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Tabellen_basics_Verknuepfungen_per_Makro_pruefen.html\",\"name\":\"Tabellen [basics]: Verkn&uuml;pfungen per Makro pr&uuml;fen\"}}]},{\"@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\/55000615","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=55000615"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000615\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}