{"id":55000572,"date":"2008-04-01T00:00:00","date_gmt":"2021-02-11T21:19:46","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=572"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Defekte_Verweise_Ursachen_und_Loesungen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/","title":{"rendered":"Defekte Verweise: Ursachen und L&ouml;sungen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/00f6cd4860e34d4ca12f4b75c5d81bb2\" width=\"1\" height=\"1\" alt=\"\">                                                                                                                        <\/p>\n<p><b>In diesem dritten Teil der Beitrags-Reihe rund um das Thema &#8222;Verweise&#8220; steigen wir tiefer in die Materie ein: Wie l&ouml;st Access beziehungsweise VBA Verweise &uuml;berhaupt auf Was l&auml;uft bei defekten Verweisen schief Und welche manuellen und welche VBA-Techniken gibt es, um solche Probleme zu l&ouml;sen All dies erfahren Sie im vorliegenden Beitrag.<\/b><\/p>\n<p>Um die von Verweisen ausgehenden Probleme zu verstehen, sollten Sie wissen, wie Access, genauer VBA, vorgeht, um die Bibliothek eines Befehls zu finden. <\/p>\n<p><b>Disambiguation<\/b><\/p>\n<p>VBA verwendet Disambiguation, um die passende Bibliothek f&uuml;r ein Objekt oder eine Methode zu finden. Wenn VBA (unbekannte) Objekte im Code findet, erfolgt die Suche in der folgenden Reihenfolge:<\/p>\n<ul>\n<li class=\"aufz-hlung\">im eigenen Modul,<\/li>\n<li class=\"aufz-hlung\">in anderen Standardmodulen des VBA-Projekts,<\/li>\n<li class=\"aufz-hlung\">in den Verweisen in der Reihenfolge ihrer Priorit&auml;t<\/li>\n<li class=\"aufz-hlung\">und in den eingebauten Verweisen (VBA und Access).<\/li>\n<\/ul>\n<p>Woher wei&szlig; VBA beispielsweise, was sich hinter dem Befehl <b>Left$ <\/b>verbirgt VBA pr&uuml;ft als Erstes, ob es in dem Modul, in dem es diese Codezeile findet, eine private oder &ouml;ffentliche Funktion mit dem Namen <b>Left$ <\/b>gibt. Wenn eine Funktion mit dem Namen <b>Left$ <\/b>in diesem Modul vorhanden ist, verwendet es diese Funktion. Wenn das Modul kein passende Funktion enth&auml;lt, pr&uuml;ft Access, ob in den anderen Standardmodulen der Datenbank eine &ouml;ffentliche Funktion mit dem Namen <b>Left$ <\/b>vorhanden ist.<\/p>\n<p>Offenbart das gesamte VBA-Projekt keine Funktion mit dem Namen <b>Left$<\/b>, durchsucht Access als N&auml;chstes alle nicht eingebauten Verweise der Datenbank (also alle au&szlig;er Access und VBA) in der Reihenfolge ihrer Priorit&auml;t. Findet Access auch in diesen Verweisen nichts, untersucht es die eingebauten Verweise <b>VBA <\/b>und <b>Access <\/b>nach diesem Befehl. Im Fall von <b>Left$ <\/b>f&uuml;hrt dies im Modul <b>Strings <\/b>der Bibliothek <b>VBA <\/b>zum Erfolg.<\/p>\n<p>Sie k&ouml;nnen diesen Prozess mit der Beispieldatenbank <b>Demo.Disambiguation.mdb<\/b> nachvollziehen. Sorgen Sie vor dem Start daf&uuml;r, dass die Bibliotheksdatenbank mit dem Namen <b>Lib.Disambiguation.mdb<\/b> im selben Verzeichnis wie die Beispieldatenbank liegt. <\/p>\n<p>In der Beispieldatenbank k&ouml;nnen Sie &uuml;ber eine Schaltfl&auml;che zum VBA-Code wechseln. Setzen Sie dort den Cursor in den Befehl <b>Left$<\/b>. W&auml;hlen Sie den Eintrag <b>Definition <\/b>aus dem Kontextmen&uuml; aus und schauen Sie, wo sich der Befehl befindet.<\/p>\n<p>Kommentieren Sie nun die gefundene Funktion aus und w&auml;hlen Sie erneut Definition. Wiederholen Sie diese Schritte so lange, bis der Objektkatalog am Ende den Befehl <b>Left$ <\/b>anzeigt.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Disambiguation vermeiden<\/p>\n<p>Sie k&ouml;nnen vermeiden, dass VBA auf der Suche nach der passenden Bibliothek den Prozess der Disambiguation durchl&auml;uft. Stellen Sie dazu dem Befehlswort den Namen der zu verwendenden Bibliothek und\/oder des zu verwendenden Moduls voran. Im Fall von <b>Left$ <\/b>w&uuml;rden Sie dann Folgendes schreiben:<\/p>\n<pre>If VBA.Left$(Me!txtName,1)=\"M\" Then<\/pre>\n<p>Wenn Sie einen Befehl aus der Access-Bibliothek verwenden wollen, schreiben Sie beispielsweise:<\/p>\n<pre>    Access.Application.Run<\/pre>\n<p>F&uuml;r den Aufruf einer Funktion mit dem Namen <b>MyFunction <\/b>aus dem Modul <b>basMyModul <\/b>schreiben Sie:<\/p>\n<pre>    basMyModul.MyFunction<\/pre>\n<p>Wenn sich das Modul in einer als Verweis eingebundenen Bibliothek befindet, stellen Sie den Namen der Bibliothek zus&auml;tzlich voran. Bezogen auf das vorherige Beispiel haben Sie nun folgende M&ouml;glichkeiten:<\/p>\n<pre>    MyLib.MyFunction<\/pre>\n<pre>    MyLib.basMyModul.MyFunction<\/pre>\n<p>Sie k&ouml;nnen VBA die Arbeit abnehmen und die Befehle vollst&auml;ndig qualifiziert ausschreiben, Sie m&uuml;ssen es aber nicht. Wenn Sie es tun, nehmen Sie VBA nicht nur die Suche nach der richtigen Bibliothek ab. Sie legen auch definitiv fest, welche Bibliothek verwendet wird. Das ist insbesondere dann von Bedeutung, wenn ein Objekt oder eine Methode in mehreren Bibliotheken zugleich vorhanden ist.<\/p>\n<p>Ein Beispiel hierf&uuml;r ist das <b>Recordset<\/b>-Objekt. Das <b>Recordset<\/b>-Objekt ist in den Bibliotheken <b>ADODB <\/b>und <b>DAO <\/b>zu finden. Wenn Sie bei der Deklaration des Recordset-Objekts keine spezielle Bibliothek angeben und nur eine der beiden Bibliotheken per Verweis eingebunden ist, verwendet Access diese, sonst die mit der h&ouml;heren Priorit&auml;t.<\/p>\n<p>Geben Sie hingegen bei der Deklaration des Recordset-Objekts bereits die zu verwendende Bibliothek an, verwendet VBA die &#8222;richtige&#8220; Bibliothek. Wenn der zugeh&ouml;rige Verweis fehlt, erhalten Sie bereits beim Kompilieren eine Fehlermeldung.<\/p>\n<pre>    'Deklaration ohne Bibliothek<\/pre>\n<pre>    Dim rst As RecordSet<\/pre>\n<pre>    'Deklaration mit Bibliothek<\/pre>\n<pre>    Dim rst As DAO.RecordSet<\/pre>\n<p><b>Pr&uuml;fen der Verweise<\/b><\/p>\n<p>Wenn VBA pr&uuml;fen will, ob ein Objekt in der Type Library eines Verweises enthalten ist, ermittelt es den intern gespeicherten GUID zu diesem Verweis. Mit dieser Information fragt VBA die Registry ab. Als Ergebnis erh&auml;lt VBA letztlich den Pfad zur Datei mit der Type Library zur&uuml;ck.<\/p>\n<p>Wenn sich diese Datei am erwarteten Ort befindet, l&auml;dt VBA sie in den Speicher und pr&uuml;ft, ob diese Type Library Informationen zu dem gesuchten Objekt enth&auml;lt. Enth&auml;lt die Type Library das Objekt nicht, sucht VBA in den anderen Verweisen in der Reihenfolge ihrer Priorit&auml;t weiter. Als Letztes kommen dabei die eingebauten Verweise Access und VBA zum Zuge. <\/p>\n<p>Wenn VBA den gesuchten Befehl nicht finden konnte, quittiert VBA dies beim Kompilieren mit der Fehlermeldung <b>Sub oder Function nicht definiert<\/b>.<\/p>\n<p>Den gesamten Prozess k&ouml;nnen Sie Bild 1 und Abb. 2 nachvollziehen. Aus diesen Schaubildern lassen sich folgende Erkenntnisse ableiten: Aus der Tatsache, dass Access Befehle zuerst im VBA-Projekt der Anwendung sucht, wird deutlich, dass Sie die Befehle, die VBA bereitstellt, durch eine eigene Version ersetzen k&ouml;nnen. Welche M&ouml;glichkeiten sich daraus ergeben und worauf Sie dabei achten sollten, wird in einem gesonderten Beitrag beschrieben. <\/p>\n<p> <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VerweiseIII-web-images\/Bild377_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Vom Befehl im VBA-Code &#8230;<\/span><\/b><\/p>\n<p> <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VerweiseIII-web-images\/Bild384_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: &#8230; zur passenden Bibliothek<\/span><\/b><\/p>\n<p>Wenn VBA beim Versuch, eine Type Library zu laden, auf ein Problem st&ouml;&szlig;t, bricht der Prozess der Disambiguation ab. VBA l&auml;sst dann nicht etwa die fehlerhafte Bibliothek aus und sucht in den anderen Bibliotheken weiter, sondern bricht den Prozess komplett ab.<\/p>\n<p>Wenn Sie sich nochmals in Erinnerung rufen, dass VBA die eingebauten Verweise erst am Ende durchsucht, wird deutlich, warum VBA so oft behauptet, der Befehl <b>Left$ <\/b>k&ouml;nne nicht gefunden werden. Dies liegt wohl ganz einfach daran, dass VBA auf der Suche nach der richtigen Bibliothek auf einen anderen, fehlerhaften Verweis gesto&szlig;en ist.<\/p>\n<p><b>Fehlerhafte Verweise<\/b><\/p>\n<p>Nachdem jetzt klar ist, was bei einem defekten Verweis passiert, ist es an der Zeit zu &uuml;berlegen, wie es zu defekten Verweisen kommen kann.<\/p>\n<p>Ein Verweis ist fehlerhaft, wenn auf dem ausf&uuml;hrenden Rechner nicht dieselbe Version einer Bibliothek registriert ist, sie gar nicht registriert ist oder wenn die registrierte Datei nicht gefunden werden kann. Die Gr&uuml;nde daf&uuml;r sind vielf&auml;ltig. So kann es zum Beispiel sein, dass auf dem ausf&uuml;hrenden Rechner eine &auml;ltere oder eine neuere Version einer Bibliothek registriert ist.<\/p>\n<p>Es kann aber auch passieren, dass ein Verweis komplett fehlt. Dies kann dann der Fall sein, wenn die Type Library auf diesem Rechner (noch) nicht registriert worden ist oder wenn die Registrierung aufgehoben wurde, weil beispielsweise eine Komponente vom System entfernt wurde. Zu einem fehlerhaften Verweis kommt es auch, wenn die registrierte Datei umbenannt, verschoben oder gel&ouml;scht wurde.<\/p>\n<p>Auch das Durchbrechen der so genannten bin&auml;ren Kompatibilit&auml;t f&uuml;hrt zu einem fehlerhaften Verweis. Daf&uuml;r, dass dies nicht passiert, ist der Programmierer der Komponente verantwortlich. Leider passieren hier hin und wieder Fehler, auf die Sie keinen Einfluss haben.<\/p>\n<p><b>Wo erfolgt Disambiguation<\/b><\/p>\n<p>Als N&auml;chstes ist zu &uuml;berlegen, wann und wo VBA es &uuml;berall mit Verweisen zu tun haben kann. Daraus ergibt sich dann, wann und wo sich ein Fehler in den Verweisen auswirken kann. Der Prozess der Disambiguation erfolgt zum einen in VBA, zum anderen wird dieser Prozess aber auch vom (Jet) Expression Service genutzt. Der Expression Service ist daf&uuml;r verantwortlich, dass Ausdr&uuml;cke ausgewertet werden. Solche Ausdr&uuml;cke k&ouml;nnen an folgenden Stellen verwendet werden:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Abfragen<\/li>\n<li class=\"aufz-hlung\">Steuerelemente<\/li>\n<li class=\"aufz-hlung\">Feldeigenschaften<\/li>\n<\/ul>\n<p>Auch in diesen Ausdr&uuml;cken k&ouml;nnen Sie VBA-Befehle verwenden. Der Expression-Service sorgt dann daf&uuml;r, dass das richtige Ergebnis ermittelt wird, und gibt dieses zur&uuml;ck an die Abfrage oder an das Steuerelement.<\/p>\n<p><b>Unterschiede in MDB und MDE ()<\/b><\/p>\n<p>Lassen Sie uns kurz die Frage betrachten, ob es Unterschiede zwischen einer <b>.mdb<\/b>-Datei und einer <b>.mde<\/b>-Datei gibt, wenn es um Verweise geht. In einer nicht kompilierten <b>.mdb<\/b>-Datei wird der Code modulweise geladen. Das gesamte Modul wird interpretiert. Dabei werden die passenden Klassen gesucht. Wenn dabei ein fehlerhafter Verweis gefunden wird, kommt es zur Fehlermeldung.<\/p>\n<p>In einer kompilierten <b>.mdb<\/b>-Datei und in einer <b>.mde<\/b>-Datei ist der Ablauf etwas anders. Dort ist der Code bereits kompiliert. Es erfolgt also keine Suche mehr nach der passenden Klasse. Dies ist bereits bei der Kompilierung erfolgt. Wenn jetzt aber ein fehlerhafter Verweis geladen werden soll, gibt es auch in diesem Fall eine Fehlermeldung. Im Ergebnis unterscheiden sich <b>.mdb<\/b>-Datei und <b>.mde<\/b>-Datei also nicht. Wenn fehlerhafte Verweise vorhanden sind, f&uuml;hrt dies zu einem Fehler.<\/p>\n<p><!--30percent--><\/p>\n<p><b>Wie l&ouml;st Access Verweise auf<\/b><\/p>\n<p>Als N&auml;chstes sollten Sie sich anschauen, wie Access Verweise aufl&ouml;st. Dies ist verk&uuml;rzt etwa bei Microsoft in [1] dokumentiert. Wenn Sie wissen, wie und wo VBA nach Verweisen sucht, k&ouml;nnen Sie diese M&ouml;glichkeiten auch f&uuml;r Ihre Bibliotheksdatenbanken nutzen. Access geht in folgenden drei Schritten vor:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Ist der Verweis bereits geladen<\/li>\n<li class=\"aufz-hlung\">Verweis in <b>RefLibPaths <\/b>gefunden<\/li>\n<li class=\"aufz-hlung\">Suche gem&auml;&szlig; <b>SearchPath API<\/b>.<\/li>\n<\/ul>\n<p>Als Erstes wird gepr&uuml;ft, ob der ben&ouml;tigte Verweis bereits geladen ist. Dies ist f&uuml;r Access die beste Situation, weil dann keine Fehler mehr auftreten k&ouml;nnen. Als Zweites wird gepr&uuml;ft, ob in der Registry ein Schl&uuml;ssel mit dem Namen <b>RefLibPaths <\/b>existiert. Dieser Schl&uuml;ssel wird in folgendem Pfad gesucht:<\/p>\n<pre>    HKLM\\Software\\Microsoft\\Office\\x.0\\Access<\/pre>\n<p>Dabei gibt <b>x.0 <\/b>die Version von Access an. Ein Eintrag im Schl&uuml;ssel <b>RefLibPaths <\/b>funktioniert zwar prinzipiell f&uuml;r jede auf einem System registrierte Komponente. Ein solcher Eintrag ist aber generell nur f&uuml;r den Verweis auf andere Datenbanken vorgesehen. Wenn dieser Schl&uuml;ssel vorhanden ist &#8211; er muss vom Entwickler angelegt werden -, wird gepr&uuml;ft, ob dort ein Eintrag mit dem Namen der gesuchten Datenbank vorhanden ist. Wenn dies der Fall ist, wird der Pfad zur Datenbank aus dem Wert des Registry-Keys ausgelesen.<\/p>\n<p>Als Drittes wird bei der Suche nach der zu ladenden Datei die <b>SearchPath API <\/b>verwendet. Die <b>SearchPath API <\/b>sucht nacheinander an folgenden Stellen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Anwendungsverzeichnis<\/li>\n<li class=\"aufz-hlung\">Aktuelles Verzeichnis<\/li>\n<li class=\"aufz-hlung\">Windows System-Verzeichnis<\/li>\n<li class=\"aufz-hlung\">Windows-Verzeichnis<\/li>\n<li class=\"aufz-hlung\">Umgebungsvariable PATH<\/li>\n<li class=\"aufz-hlung\">Datenbankverzeichnis<\/li>\n<\/ul>\n<p>Das Anwendungsverzeichnis ist das Verzeichnis, in dem die <b>msaccess.exe <\/b>gespeichert ist. Da dieses Verzeichnis in der Regel im Ordner <b>C:\\Programme <\/b>liegt, kommt es f&uuml;r eine eigene Bibliothek als Speicherort nicht in Frage. Das aktuelle Verzeichnis ist das Verzeichnis, das man erh&auml;lt, wenn man auf <b>Datei|&ouml;ffnen <\/b>klickt. Da Sie nie genau wissen, welches das aktuelle Verzeichnis ist, kommt dieses Verzeichnis als Speicherort f&uuml;r eine eigene Bibliothek ebenfalls nicht in Betracht.<\/p>\n<p>Mit dem System-Verzeichnis sind die Ordner <b>C:\\Windows\\System <\/b>und <b>C:\\Windows\\System32 <\/b>gemeint. Das Windows-Verzeichnis bezieht sich auf die Ordner <b>C:\\Windows <\/b>beziehungsweise<b> C:\\WinNT<\/b>. Dateien, die nicht das Betriebssystem betreffen, haben in diesen Ordnern generell nichts zu suchen. Hinzu kommt, dass bei neueren Betriebssystemen der angemeldete Benutzer nicht unbedingt berechtigt ist, in diesen Ordnern Ver&auml;nderungen vorzunehmen. Die Dateien in diesen Ordnern werden teilweise ausgeblendet, um die Systemstabilit&auml;t nicht zu gef&auml;hrden. Als Speicherort f&uuml;r eine eigene Bibliothek sind diese Ordner daher eher ungeeignet.<\/p>\n<p>Bei der Suche mit der Umgebungsvariablen <b>PATH <\/b>werden alle dort eingetragenen Pfade durchsucht. Um den Pfad zu einer Bibliotheksdatenbank in dieser Umgebungsvariablen einzutragen, m&uuml;ssen Sie f&uuml;r die Weitergabe ein Installationsprogramm verwenden. Dieser zus&auml;tzliche Aufwand macht die Umgebungsvariable <b>PATH <\/b>f&uuml;r eigene Bibliotheken unattraktiv.<\/p>\n<p>Als Letztes wird das Datenbankverzeichnis durchsucht. Das Datenbankverzeichnis ist das Verzeichnis, in dem die Datenbank, die Sie gerade ausf&uuml;hren, gespeichert ist. Bei der Suche werden auch alle Unterordner des Datenbankverzeichnisses ber&uuml;cksichtigt.<\/p>\n<p>Das Datenbankverzeichnis oder eines seiner Unterverzeichnisse bietet sich als Speicherort f&uuml;r eine eigene Bibliothek geradezu an. Der angemeldete User hat auf diesen Ordner auf jeden Fall die notwendigen Berechtigungen. Zus&auml;tzlich ist sichergestellt, dass der Ordner im Windows-Explorer sichtbar ist. Wenn Sie den Ordner mit der Anwendung an einen anderen Ort verschieben oder kopieren, wird auch die Bibliothek mit verschoben. Die Wahrscheinlichkeit, dass die Bibliothek an dieser Stelle gefunden wird, ist also sehr hoch.<\/p>\n<p>Es kann Ihnen passieren, dass Sie eine neue Version Ihrer Bibliothek im Datenbankverzeichnis gespeichert haben und trotzdem eine alte Version Ihrer Bibliothek verwendet wird. Pr&uuml;fen Sie dann alle hier vorgestellten Speicherorte darauf hin, ob dort eine alte Version Ihrer Bibliothek gespeichert ist. Es wird n&auml;mlich die Version Ihrer Bibliothek verwendet, die Access zuerst findet.<\/p>\n<p><b>Fehlermeldungen und Symptome<\/b><\/p>\n<p>Als N&auml;chstes werden Fehlermeldungen und Symptome aufgezeigt, die bei Fehlern in den Verweisen auftreten. Wenn Sie die auftretenden Fehler nachvollziehen wollen, starten Sie die Beispieldatenbank mit dem Namen <b>Demo.Fehlermeldungen.mdb<\/b>.<\/p>\n<p>&ouml;ffnen Sie als Erstes das Formular <b>frm_Personen<\/b>. Sie erhalten in Access 2003 einen Hinweis mit dem Text: &#8222;Ihr Projekt enth&auml;lt einen fehlenden oder inkorrekten Verweis auf die Datei &#8222;xxx&#8220;. Sie haben die M&ouml;glichkeit, sich zus&auml;tzliche Hilfe zu diesem Fehler anzeigen zu lassen.&#8220; Dieses Hinweisformular zeigt Ihnen deutlich, dass es ein Problem mit den Verweisen gibt, und informiert Sie, was Sie zur Bereinigung dieses Problems tun k&ouml;nnen. Wenn Sie das Formular &ouml;ffnen, sehen Sie im Feld Initialen statt des erwarteten Feldinhalts den Text <b>#Name <\/b>wie in Bild 3. In diesem Feld werden die Initialen mittels der Funktion <b>Links <\/b>aus den Feldern <b>Vorname <\/b>und <b>Nachname <\/b>ermittelt.<\/p>\n<p> <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VerweiseIII-web-images\/Bild404_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Der Eintrag #Name in einem Steuerelement deutet auf ein Problem mit den Verweisen hin.<\/span><\/b><\/p>\n<p>Die Funktion <b>Links <\/b>beziehungsweise<b> Left <\/b>ist eine Funktion aus der Bibliothek <b>VBA<\/b>. Diese Bibliothek wird als Letztes durchsucht. Da vorher eine andere Bibliothek nicht gefunden werden kann, bricht der Prozess der Disambiguation ab und Access reagiert mit einem Fehler.<\/p>\n<p>Wenn Sie als N&auml;chstes eine der beiden Schaltfl&auml;chen anklicken, wechselt Access in den VBA-Editor. Dort erscheint eine Fehlermeldung mit dem Text <b>Fehler beim Kompilieren: Projekt oder Bibliothek nicht gefunden<\/b>. Der Befehl <b>Left <\/b>ist im VBA-Editor gelb markiert.<\/p>\n<p>W&auml;hlen Sie nun im VBA-Editor den Befehl <b>Debuggen|Kompilieren von&#8230; <\/b>aus. Sie erhalten dieselbe Fehlermeldung wie vorher. Wieder ist das Schl&uuml;sselwort <b>Left <\/b>gelb markiert. Wenn Sie die Meldung mit <b>OK <\/b>best&auml;tigen, &ouml;ffnet sich zus&auml;tzlich der Verweis-Dialog.<\/p>\n<p>&ouml;ffnen Sie als N&auml;chstes das Formular mit dem Namen <b>frm_Recordset <\/b>und klicken Sie dort auf die Schaltfl&auml;che <b>Test<\/b>. Sie erhalten die Fehlermeldung mit dem Text <b>Laufzeitfehler 13: Typen unvertr&auml;glich<\/b>. Klicken Sie jetzt auf <b>Debuggen <\/b>und Sie landen im VBA-Editor. Dort ist die problematische Codezeile markiert. Das Problem hier liegt darin, dass ein Objekt vom Typ <b>Recordset <\/b>deklariert wurde. In den Verweisen hat die Bibliothek <b>ADO <\/b>Priorit&auml;t vor der Bibliothek <b>DAO<\/b>. Im Code wird dann eine Methode aus der <b>DAO<\/b>-Bibliothek verwendet. <\/p>\n<p>Die n&auml;chsten beiden Fehlermeldungen k&ouml;nnen ihre Ursache in fehlenden OCX-Steuerelementen haben:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>In diesem Steuerelement befindet sich kein Objekt<\/b><\/li>\n<li class=\"aufz-hlung\"><b>Objekt unterst&uuml;tzt die Eigenschaft oder Methode nicht<\/b><\/li>\n<\/ul>\n<p><b>Manuelle L&ouml;sungen<\/b><\/p>\n<p>Nachdem jetzt klar ist, wie sich Fehler in den Verweisen auswirken, sollen Wege aufgezeigt werden, um diese Probleme zu l&ouml;sen.<\/p>\n<p>Wenn Sie einen Fehler in den Verweisen vermuten, gehen Sie wie folgt vor:<\/p>\n<p>&ouml;ffnen Sie den VBA-Editor (<b>ALT + F11<\/b>). &ouml;ffnen Sie dort den Verweis-Dialog (<b>Extras|Verweise<\/b>). Pr&uuml;fen Sie, ob Sie einen Verweis finden, vor dessen Namen <b>NICHT VORHANDEN <\/b>steht (siehe Bild 4). Entfernen Sie den defekten Verweis, indem Sie ihn abw&auml;hlen. Pr&uuml;fen Sie als N&auml;chstes, ob der Verweis &uuml;berhaupt ben&ouml;tigt wird. W&auml;hlen Sie dazu im VBA-Editor <b>Extras|Debuggen von&#8230; <\/b>aus.<\/p>\n<p> <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VerweiseIII-web-images\/Bild416_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Einen defekten Verweis erkennen Sie an dem Hinweis NICHT VORHANDEN vor seinem Namen.<\/span><\/b><\/p>\n<p>Gibt es keine Fehlermeldung, wird der Verweis nicht ben&ouml;tigt und das Problem sollte gel&ouml;st sein. Wenn beim Debuggen eine Fehlermeldung erscheint, wechseln Sie erneut in den Verweis-Dialog und f&uuml;gen den soeben entfernten Verweis wieder hinzu. Wenn Sie jetzt den VBA-Code erneut kompilieren, sollte keine Fehlermeldung mehr auftreten.<\/p>\n<p>Es kann vorkommen, dass Sie ein Problem mit den Verweisen haben und dennoch keinen Verweis mit dem Hinweis <b>NICHT VORHANDEN: <\/b>vor seinem Namen finden. In diesem Fall f&uuml;gen Sie einen beliebigen Verweis ein und verlassen dann den Verweis-Dialog. &ouml;ffnen Sie direkt danach den Verweis-Dialog wieder und entfernen Sie den soeben eingef&uuml;gten Verweis.<\/p>\n<p>Durch dieses Prozedere wird die interne Auflistung der Verweise von Access aktualisiert. H&auml;ufig kann das Problem dadurch behoben werden.<\/p>\n<p>Sollte auch das Hinzuf&uuml;gen und L&ouml;schen eines Verweises nicht zum Ziel f&uuml;hren, bleibt Ihnen noch folgender Weg: Sie entfernen alle Verweise (bis auf VBA und Access). Jetzt schlie&szlig;en Sie den Verweis-Dialog. Danach &ouml;ffnen Sie den Verweis-Dialog und f&uuml;gen alle soeben gel&ouml;schten Verweise in der gleichen Reihenfolge wieder ein. <\/p>\n<p>Auch durch dieses Prozedere soll die interne Auflistung der Verweise von Access aktualisiert werden.<\/p>\n<p>Manchmal kommt es vor, dass alle bisher vorgeschlagenen Wege nicht zum Ziel f&uuml;hren. Dann bleibt Ihnen als letzte M&ouml;glichkeit nur noch, alle Objekte in eine neue, leere Datenbank zu importieren und dort die notwendigen Verweise einzuf&uuml;gen.<\/p>\n<p>Alle diese manuellen L&ouml;sungen erfordern, dass Sie den Verweis-Dialog &ouml;ffnen k&ouml;nnen. Den Verweis-Dialog k&ouml;nnen Sie aber nur in einer <b>.mdb<\/b>-Datei &ouml;ffnen. In einer <b>.mde<\/b>-Datei oder in der Runtime-Version k&ouml;nnen Sie Probleme mit den Verweisen nicht auf den hier geschilderten Wegen l&ouml;sen.<\/p>\n<p><b>L&ouml;sungen mit VBA (I)<\/b><\/p>\n<p>Es gibt verschiedene M&ouml;glichkeiten, auf Probleme mit den Verweisen per VBA zu reagieren. In der Beispieldatenbank mit dem Namen <b>Demo.L&ouml;sungen.mdb <\/b>k&ouml;nnen Sie die hier vorgestellten Code-Beispiele unter Access 2002 und h&ouml;her nachvollziehen und ausprobieren.<\/p>\n<p>Die einfachste L&ouml;sung besteht darin, zu ermitteln, ob es defekte Verweise gibt. Wenn defekte Verweise gefunden werden, wird der Benutzer dar&uuml;ber informiert.<\/p>\n<pre>    Dim ref As Access.Reference<\/pre>\n<pre>    Dim strHinweis As String<\/pre>\n<pre>    If Application.BrokenReference = True Then<\/pre>\n<pre>        For Each ref In Application.References<\/pre>\n<pre>            If ref.IsBroken Then<\/pre>\n<pre>                strHinweis = &quot;Verweis &quot; &amp; ref.Name _\r\n                &amp; &quot; defekt!&quot;<\/pre>\n<pre>                VBA.MsgBox strHinweis, _<\/pre>\n<pre>                vbCritical, &quot;Achtung:&quot;<\/pre>\n<pre>            End If<\/pre>\n<pre>        Next<\/pre>\n<pre>    End If<\/pre>\n<p>Als Erstes wird die Eigenschaft <b>BrokenReference <\/b>gepr&uuml;ft. Wenn diese Eigenschaft <b>True <\/b>zur&uuml;ckliefert, werden alle Verweise in einer <b>For Each<\/b>-Schleife durchlaufen. F&uuml;r jeden Verweis wird die Eigenschaft <b>IsBroken <\/b>gepr&uuml;ft.<\/p>\n<p>Im Fall eines defekten Verweises wird eine <b>MsgBox <\/b>mit dem Namen des defekten Verweises ausgegeben.<\/p>\n<p>Der Vorteil dieser L&ouml;sung besteht darin, dass dieser Code nicht nur in einer <b>.mdb<\/b>-Datei, sondern auch in einer <b>.mde<\/b>-Datei und in der Runtime-Version funktioniert. <\/p>\n<p>Der Nachteil dieser L&ouml;sung liegt darin, dass nur auf das Problem mit einem defekten Verweis hingewiesen wird. Eine echte L&ouml;sung des Problems erfolgt nicht.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">L&ouml;sungen mit VBA (II)<\/p>\n<p>Die n&auml;chste L&ouml;sung stammt aus dem deutschsprachigen KB-Artikel 194374 [2]. Die L&ouml;sung besteht darin, den ersten Verweis zu l&ouml;schen und ihn danach wieder einzuf&uuml;gen.<\/p>\n<pre>    Dim r As Reference<\/pre>\n<pre>    Dim r1 As Reference<\/pre>\n<pre>    Dim s As String<\/pre>\n<pre>    For Each r In Application.References<\/pre>\n<pre>        If r.Name &lt;&gt; \"Access\" And _<\/pre>\n<pre>        r.Name &lt;&gt; \"VBA\" Then<\/pre>\n<pre>        Set r1 = r<\/pre>\n<pre>        Exit For<\/pre>\n<pre>    End If<\/pre>\n<pre>Next<\/pre>\n<pre>s = r1.FullPath<\/pre>\n<pre>References.Remove r1<\/pre>\n<pre>References.AddFromFile s<\/pre>\n<pre>Call SysCmd(504, 16483)<\/pre>\n<p>Es wird der erste Verweis ermittelt, der nicht VBA oder Access ist. Der Pfad zu diesem Verweis wird in einer Variablen zwischengespeichert.<\/p>\n<p>Danach wird der Verweis gel&ouml;scht und mit der Methode <b>AddFromFile <\/b>wieder eingef&uuml;gt. Am Ende wird mit der undokumentierten Anweisung <b>SysCmd(504, 16483) <\/b>der VBA-Code kompiliert.<\/p>\n<p>Mit diesem Code soll erreicht werden, dass VBA die interne Auflistung der Verweise aktualisiert. Der wesentliche Nachteil dieser L&ouml;sung besteht darin, dass diese L&ouml;sung nur in einer <b>.mdb<\/b>-Datei funktioniert. In einer <b>.mde<\/b>-Datei und in der Runtime k&ouml;nnen die Verweise nicht bearbeitet werden.<\/p>\n<p>Ein weiterer Nachteil ist, dass die Reihenfolge der Verweise ge&auml;ndert wird. Der Verweis, der entfernt wird, hat nach dem Einf&uuml;gen die niedrigste Priorit&auml;t. Und schlie&szlig;lich muss sich die verwiesene Datei auch an dem Ort befinden, wo sie urspr&uuml;nglich lag.<\/p>\n<p><b>L&ouml;sungen mit VBA (III)<\/b><\/p>\n<p>Die folgende L&ouml;sung stammt aus dem englischsprachigen KB-Artikel 194374 [3]. Dort wird vorgeschlagen, alle defekten Verweise zu l&ouml;schen und diese anschlie&szlig;end wieder einzuf&uuml;gen.<\/p>\n<pre>Dim loRef As Access.Reference<\/pre>\n<pre>Dim intCount As Integer<\/pre>\n<pre>Dim intX As Integer<\/pre>\n<pre>Dim blnBroke As Boolean<\/pre>\n<pre>Dim strPath As String<\/pre>\n<pre>intCount = Access.References.Count<\/pre>\n<pre>For intX = intCount To 1 Step -1<\/pre>\n<pre>    Set loRef = Acess.References(intX)<\/pre>\n<pre>    With loRef<\/pre>\n<pre>    blnBroke = .IsBroken<\/pre>\n<pre>    If blnBroke = True Or Err &lt;&gt; 0 Then<\/pre>\n<pre>        strPath = .FullPath<\/pre>\n<pre>        With Access.References<\/pre>\n<pre>        .Remove loRef<\/pre>\n<pre>        .AddFromFile strPath<\/pre>\n<pre>        End With<\/pre>\n<pre>    End If<\/pre>\n<pre>    End With<\/pre>\n<pre>Next<\/pre>\n<pre>Set loRef = Nothing<\/pre>\n<pre>Call SysCmd(504, 16483)<\/pre>\n<p>In einer Schleife werden alle Verweise durchlaufen. Wenn ein defekter Verweis gefunden wird, wird der Pfad zum Verweis in einer Variablen zwischengespeichert. Der Verweis wird dann gel&ouml;scht und mit der Methode <b>AddFromFile <\/b>wieder eingef&uuml;gt.<\/p>\n<p>Die Nachteile dieser L&ouml;sung sind die gleichen wie beim vorhergehenden Vorschlag. Diese L&ouml;sung funktioniert nur in einer <b>.mdb<\/b>-Datei. Au&szlig;erdem wird die Reihenfolge der Verweise ge&auml;ndert. <\/p>\n<p><b>L&ouml;sungen mit VBA (IV)<\/b><\/p>\n<p>Die n&auml;chste L&ouml;sung versucht einige Nachteile der vorherigen L&ouml;sungen zu beseitigen.<\/p>\n<pre>Dim ref As Access.Reference<\/pre>\n<pre>Dim strGUID As String<\/pre>\n<pre>Dim strPfad As String<\/pre>\n<pre>Const cTpyeLib As Long = 0<\/pre>\n<pre>For Each ref In References<\/pre>\n<pre>    If ref.BuiltIn = False Then<\/pre>\n<pre>        If ref.Kind = cTpyeLib Then<\/pre>\n<pre>            strGUID = ref.Guid<\/pre>\n<pre>            References.Remove _<\/pre>\n<pre>            References(ref.Name)<\/pre>\n<pre>            References.AddFromGuid _<\/pre>\n<pre>            strGUID, 0, 0<\/pre>\n<pre>        Else<\/pre>\n<pre>            strPfad = ref.FullPath<\/pre>\n<pre>            References.Remove _\r\n            References(ref.Name)<\/pre>\n<pre>            References.AddFromFile strPfad<\/pre>\n<pre>        End If<\/pre>\n<pre>    End If<\/pre>\n<pre>Next ref<\/pre>\n<pre>Call SysCmd(504, 16483)<\/pre>\n<p>In einer Schleife werden alle Verweise durchlaufen. F&uuml;r alle nicht eingebauten Verweise wird gepr&uuml;ft, um welche Art von Verweis es sich handelt. Bei einer Type Library wird deren Guid ermittelt. Bei einer Bibliotheksdatenbank wird der Pfad ermittelt. Als N&auml;chstes wird der jeweilige Verweis gel&ouml;scht und mit der passenden Methode wieder eingef&uuml;gt.<\/p>\n<p>Dadurch, dass alle Verweise gel&ouml;scht und wieder eingef&uuml;gt werden, wird die urspr&uuml;ngliche Reihenfolge der Verweise nicht ver&auml;ndert.<\/p>\n<p>Bei der Methode <b>AddFromGuid <\/b>wird f&uuml;r die Version der Type Libraries jeweils <b>0, 0 <\/b>als Parameter verwendet. Dadurch wird erreicht, dass die jeweils aktuellste Version auf dem Rechner eingesetzt wird. Auch diese L&ouml;sung hat den Nachteil, dass sie nur in einer <b>.mdb<\/b>-Datei funktioniert.<\/p>\n<p><b>Weitere L&ouml;sungsans&auml;tze<\/b><\/p>\n<p>Die vorgestellten Code-Beispiele haben gezeigt, dass es keinen (einfachen) Weg gibt, um Probleme mit den Verweisen per VBA zu bereinigen.<\/p>\n<p>Um das Thema defekte Verweise haben sich bereits viele clevere Leute Gedanken gemacht. So finden Sie unter [4] einen Artikel von Michael &#8222;MichKa&#8220; Kaplan. Er beschreibt dort in zehn Punkten, wie er vorgehen w&uuml;rde, um sicherzustellen, dass Verweise in einer Anwendung funktionieren. Sein Plan wurde zwar bei Microsoft wegen der zu erwartenden Performanceeinbu&szlig;en nicht umgesetzt. Es lohnt sich aber auf jeden Fall, diesen Artikel zu lesen. Man kann dort viel &uuml;ber Verweise lernen.<\/p>\n<p>Die ehemaligen Access MVPs Terry Kreft und Dev Ashish haben mit ihrem <b>References Wizard <\/b>ein kleines, aber feines Tool f&uuml;r defekte Verweise ver&ouml;ffentlicht. Sie finden dieses Tool unter [5]. <\/p>\n<p>Sie k&ouml;nnen den <b>References Wizard <\/b>als Add-In installieren. Sie k&ouml;nnen aber auch daf&uuml;r sorgen, dass das Fenster des Wizards bei defekten Verweisen direkt beim Start Ihrer Anwendung ge&ouml;ffnet wird. Sie finden im <b>References Wizard <\/b>eine Liste der in Ihre Anwendung eingebundenen Verweise (siehe Bild 5). Zum jeweils markierten Verweis k&ouml;nnen Sie diverse Details im unteren Teil des Fensters finden.<\/p>\n<p> <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VerweiseIII-web-images\/Bild422_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Der References Wizard gibt einen detaillierten &uuml;berblick &uuml;ber die eingebundenen Verweise<\/span><\/b><\/p>\n<p>Au&szlig;erdem erlaubt es der <b>References Wizard<\/b>, defekte Verweise zu reparieren oder zu entfernen. Zus&auml;tzlich haben Sie Zugriff auf den Pfad <b>RefLibPaths <\/b>in der Registry. Leider funktioniert der Wizard in einer <b>.mde<\/b>-Datei nur teilweise.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Dieser Beitrag hat Ihnen gezeigt, wie Access und VBA vorgehen, um die richtige Bibliothek f&uuml;r einen Befehl zu finden. Sie wissen jetzt auch, wie Sie Access bei diesem Prozess unterst&uuml;tzen k&ouml;nnen. Au&szlig;erdem haben Sie erfahren, wie es zu defekten Verweisen kommt und wie sie sich auswirken. Schlie&szlig;lich wurden manuelle L&ouml;sungen und L&ouml;sungen per VBA aufgezeigt.<\/p>\n<p>An dieser Stelle ist es Zeit f&uuml;r ein kleines Fazit: Verweise erleichtern die Arbeit beim Programmieren. Das hat Ihnen der erste Beitrag dieser Reihe gezeigt. Verweise schaffen aber im Gegenzug auch eine gewisse Abh&auml;ngigkeit von dem Rechner, auf dem Ihre Access-Anwendung ausgef&uuml;hrt wird. Je mehr Verweise Sie verwenden, desto gr&ouml;&szlig;er wird diese Abh&auml;ngigkeit.<\/p>\n<p>Dieser Beitrag hat deutlich gemacht, dass Sie Probleme mit den Verweisen mit VBA nur bedingt beseitigen k&ouml;nnen. Aus den oben dargestellten Gr&uuml;nden ist der Schluss zu ziehen, dass Sie am Besten auf Verweise verzichten sollten. Sie vermeiden damit m&ouml;gliche Probleme.<\/p>\n<p>Welche M&ouml;glichkeiten Sie haben, ohne einen Verweis auf eine externe Bibliothek zuzugreifen, erfahren Sie im n&auml;chsten Beitrag. Dort wird es um Early- und Late-Binding gehen.<\/p>\n<p class=\"zwischen-berschriftquellen\">Quellen:<\/p>\n<p class=\"quellen\">[1] KB 824255: So l&ouml;st Access VBA-Verweise auf: http:\/\/support.microsoft.com\/kb\/824255\/de<\/p>\n<p class=\"quellen\">[2] KB 194374 (de): http:\/\/support.microsoft.com\/kb\/194374\/de<\/p>\n<p class=\"quellen\">[3] KB 194374 (en): http:\/\/support.microsoft.com\/kb\/194374\/en-us<\/p>\n<p class=\"quellen\">[4] Gedanken von M. Kaplan: http:\/\/www.trigeminal.com\/usenet\/usenet026.asp1033<\/p>\n<p class=\"quellen\">[5] Verweis-Checker von D. Ashsih und T. Kreft: http:\/\/www.mvps.org\/access\/modules\/mdl0022.htm<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Verweise.zip<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/694E1935-2884-4AFC-94AD-FECD9D85FBBB\/aiu_572.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem dritten Teil der Beitrags-Reihe rund um das Thema &#8222;Verweise&#8220; steigen wir tiefer in die Materie ein: Wie l&ouml;st Access beziehungsweise VBA Verweise &uuml;berhaupt auf Was l&auml;uft bei defekten Verweisen schief Und welche manuellen und welche VBA-Techniken gibt es, um solche Probleme zu l&ouml;sen All dies erfahren Sie im vorliegenden Beitrag.<\/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":[66022008,662008,44000025],"tags":[],"class_list":["post-55000572","post","type-post","status-publish","format-standard","hentry","category-66022008","category-662008","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Defekte Verweise: Ursachen und L&ouml;sungen - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Defekte Verweise: Ursachen und L&ouml;sungen\" \/>\n<meta property=\"og:description\" content=\"In diesem dritten Teil der Beitrags-Reihe rund um das Thema &quot;Verweise&quot; steigen wir tiefer in die Materie ein: Wie l&ouml;st Access beziehungsweise VBA Verweise &uuml;berhaupt auf Was l&auml;uft bei defekten Verweisen schief Und welche manuellen und welche VBA-Techniken gibt es, um solche Probleme zu l&ouml;sen All dies erfahren Sie im vorliegenden Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:19:46+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/00f6cd4860e34d4ca12f4b75c5d81bb2\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"22\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Defekte Verweise: Ursachen und L&ouml;sungen\",\"datePublished\":\"2021-02-11T21:19:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/\"},\"wordCount\":4104,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/00f6cd4860e34d4ca12f4b75c5d81bb2\",\"articleSection\":[\"2\\\/2008\",\"2008\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/\",\"name\":\"Defekte Verweise: Ursachen und L&ouml;sungen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/00f6cd4860e34d4ca12f4b75c5d81bb2\",\"datePublished\":\"2021-02-11T21:19:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/00f6cd4860e34d4ca12f4b75c5d81bb2\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/00f6cd4860e34d4ca12f4b75c5d81bb2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Defekte_Verweise_Ursachen_und_Loesungen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Defekte Verweise: Ursachen und L&ouml;sungen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Defekte Verweise: Ursachen und L&ouml;sungen - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/","og_locale":"de_DE","og_type":"article","og_title":"Defekte Verweise: Ursachen und L&ouml;sungen","og_description":"In diesem dritten Teil der Beitrags-Reihe rund um das Thema \"Verweise\" steigen wir tiefer in die Materie ein: Wie l&ouml;st Access beziehungsweise VBA Verweise &uuml;berhaupt auf Was l&auml;uft bei defekten Verweisen schief Und welche manuellen und welche VBA-Techniken gibt es, um solche Probleme zu l&ouml;sen All dies erfahren Sie im vorliegenden Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:19:46+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/00f6cd4860e34d4ca12f4b75c5d81bb2","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"22\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Defekte Verweise: Ursachen und L&ouml;sungen","datePublished":"2021-02-11T21:19:46+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/"},"wordCount":4104,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/00f6cd4860e34d4ca12f4b75c5d81bb2","articleSection":["2\/2008","2008","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/","url":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/","name":"Defekte Verweise: Ursachen und L&ouml;sungen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/00f6cd4860e34d4ca12f4b75c5d81bb2","datePublished":"2021-02-11T21:19:46+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/00f6cd4860e34d4ca12f4b75c5d81bb2","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/00f6cd4860e34d4ca12f4b75c5d81bb2"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Defekte_Verweise_Ursachen_und_Loesungen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Defekte Verweise: Ursachen und L&ouml;sungen"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000572"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000572\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}