{"id":55000110,"date":"2003-06-01T00:00:00","date_gmt":"2020-05-06T15:17:26","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=110"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Referenzen_und_Bibliotheken","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/","title":{"rendered":"Referenzen und Bibliotheken"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/5a66019cdfbe4b91b188bca8bf98cf6f\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Microsoft Access bietet eigentlich alles, was das Datenbankentwicklerherz begehrt &#8211; zumindest solange, bis der Access-Entwickler einen Blick &uuml;ber den Tellerrand wagt und sieht, was mit Access noch  alles m&ouml;glich ist. Denn Access kann so ziemlich alle Anwendungen, auf deren Objektmodell es per VBA zugreifen kann, steuern und mit ihnen kommunizieren &#8211; ob mit Word, Excel, Outlook oder anderen Produkten. Und auch die Funktionalit&auml;t anderer bestehender Datenbanken l&auml;sst sich unter Access durch das Setzen eines einfachen Verweises auf eine so genannte Bibliothek wieder verwenden. Im vorliegenden Beitrag erfahren Sie, was es mit diesen Bibliotheken auf sich hat, welche M&ouml;glichkeiten es zum Setzen von Verweisen gibt und wie Sie dabei entstehende Probleme elegant umschiffen k&ouml;nnen.<\/b><\/p>\n<p>Access, Word, Excel, Outlook und viele andere Anwendungen, die &uuml;brigens nicht zwangsl&auml;ufig aus Redmond stammen m&uuml;ssen, haben eines gemeinsam: Die Funktionalit&auml;t dieser Anwendungen befindet sich in der Regel in einer oder mehreren Dynamic Link Libraries (DLLs), Objekt Libraries (OLBs), ActiveX Controls (OCX) oder Dateien &auml;hnlichen Dateityps. Dabei beinhaltet jede dieser Dateien Funktionen zu einem bestimmten Anwendungsgebiet.<\/p>\n<p>So hat z. B. Microsoft Word eine umfangreiche Bibliothek mit allen m&ouml;glichen Funktionen zum Bearbeiten von Texten (MSWORD.OLB).<\/p>\n<h3>Hinweis<\/h3>\n<p>Auch Windows enth&auml;lt einige DLLs, die Funktionen f&uuml;r Bereiche wie Benutzeroberfl&auml;che, Dateioperationen, Textausgaben etc. beinhalten. Der Begriff f&uuml;r die Gesamtheit dieser Bibliotheken lautet Application Programming Interface (API). <\/p>\n<p>Sie k&ouml;nnen sowohl die Bibliotheken mit den Systemfunktionen von Windows als auch die Objektbibliotheken der unterschiedlichen Anwendungen mit Hilfe von VBA in Access verwenden.<\/p>\n<p>Die Einbindung der beiden Bibliotheksarten unterscheidet sich jedoch grundlegend: W&auml;hrend Sie die Windows-Funktionen im Code zun&auml;chst deklarieren und anschlie&szlig;end per Funktionsaufruf verwenden k&ouml;nnen, bieten die Objektbibliotheken von Anwendungen wesentlich mehr Komfort:<\/p>\n<p>Nach dem Einbinden der gew&uuml;nschten Bibliothek durch Setzen eines entsprechenden Verweises k&ouml;nnen Sie die Objekte, Eigenschaften und Methoden des jeweiligen Objektmodells genauso verwenden wie die Objekte, die Sie bisher in Access verwendet haben.<\/p>\n<p>Dabei basieren die Funktionen, die Sie tagt&auml;glich bei der Entwicklung von Access-Datenbanken verwenden, genauso auf per Verweis eingebundene Objektbibliotheken. Unter Access sind standardm&auml;&szlig;ig die Bibliotheken Visual Basic For Applications, Microsoft Access x.0 Objekt Library und Microsoft DAO x.xx Object Library (Access 97) oder Microsoft ActiveX Data Objects 2.1 Library und OLE Automation (beide Access 2000 und h&ouml;her) eingebunden.<\/p>\n<p>Mit einem Verweis auf eine der Objektbibliotheken wie z. B. von Word (Microsoft Word x.0 Object Library) k&ouml;nnen Sie diese Anwendung komplett steuern.<\/p>\n<h3>Bibliothek f&uuml;r eigene Funktionen<\/h3>\n<p>Auch Access-Datenbanken k&ouml;nnen Sie als Bibliothek einsetzen: Wenn im Laufe Ihrer Arbeit mit Access z. B. eine umfangreiche Sammlung von Prozeduren oder Funktionen entstanden ist, haben Sie entweder bereits eine Datenbank mit den gesammelten Werken &#8211; oder Sie w&uuml;nschen, dass Sie eine h&auml;tten.<\/p>\n<p>Eine solche Sammlung h&auml;tte den Vorteil, dass Sie die Datenbank einfach in andere Datenbanken einbinden k&ouml;nnten und auf ihre Funktionen und Prozeduren zugreifen k&ouml;nnten, als wenn sie sich in der gleichen Datenbank befinden.<\/p>\n<p>Mit einem kleinen Trick ist es sogar m&ouml;glich, auch andere Objekte wie Formulare oder Berichte auf diese Weise verf&uuml;gbar zu machen.<\/p>\n<p>Der wesentliche Schritt f&uuml;r Access auf dem Weg vom Einzelk&auml;mpfer zum Teamplayer besteht im Anlegen eines geeigneten Verweises.<\/p>\n<h2>Verweis auf Objektbibliotheken<\/h2>\n<p>Sie verf&uuml;gen &uuml;ber Microsoft Access und mindestens eine weitere Anwendung, die Sie gerne von Access aus steuern oder deren Funktion Sie in Access verwenden m&ouml;chten<\/p>\n<p>Dann fehlt nur noch ein Verweis auf die gew&uuml;nschte Anwendung. Zum Setzen eines Verweises gehen Sie folgenderma&szlig;en vor:<\/p>\n<li>Wechseln Sie in den VBA-Modus von Access. Dazu verwenden Sie beispielsweise die Tastenkombination Strg + G.<\/li>\n<li>W&auml;hlen Sie im Men&uuml; Extras den Eintrag Verweise aus, um den gleichnamigen Dialog zu &ouml;ffnen (siehe Bild 1).<\/li>\n<li>W&auml;hlen Sie aus der Liste Verf&uuml;gbare Verweise den gew&uuml;nschten Verweis durch Setzen eines H&auml;kchens aus.<\/li>\n<li>Klicken Sie auf die Schaltfl&auml;che OK, um die Eingabe zu beenden. (<\/li>\n<p><IMG height=\"365\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic001.png\" width=\"467\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Dialog zum Setzen von Verweisen<\/span><\/b><\/p>\n<p>Wenn Sie hier beispielsweise den Eintrag Microsoft x.0 Object Library aktivieren, k&ouml;nnen Sie im VBA-Editor leicht auf die Objekte von Word zugreifen.<\/p>\n<p>Wie das funktioniert, sehen Sie, wenn Sie die Beispielprozedur aus Bild 2 eingeben. Der Editor bietet die Elemente der Objektbibliothek nach der Eingabe des Hauptobjekts Word zur Auswahl an.<\/p>\n<p><IMG height=\"299\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Das Word-Objektmodell im Einsatz<\/span><\/b><\/p>\n<h2>Verweis auf andere Datenbanken<\/h2>\n<p>Wenn Sie eine Datenbank mit einer Sammlung oft verwendeter Funktionen und Prozeduren Ihr Eigen nennen, k&ouml;nnen Sie diese auch in anderen Access-Datenbanken verf&uuml;gbar machen.<\/p>\n<p>Dazu gehen Sie &auml;hnlich wie beim Setzen eines herk&ouml;mmlichen Verweises vor. Die Auswahl des Verweises selbst ist allerdings etwas aufw&auml;ndiger: Da die Datenbank nicht als Objektbibliothek, DLL o. &auml;. registriert ist, m&uuml;ssen Sie die Datenbank selbst ausw&auml;hlen.<\/p>\n<p>Dazu klicken Sie im Dialog Verweise auf die Schaltfl&auml;che Durchsuchen&#8230; und w&auml;hlen dort die entsprechende Bibliotheksdatenbank aus.<\/p>\n<p>Wenn eine Datenbankanwendung einen Verweis auf eine Bibliothek enth&auml;lt und die referenzierte Datei aus irgendeinem Grund nicht an dem angegebenen Ort gefunden wird, versucht Access zun&auml;chst selbst, die Bibliothek an einem anderen Ort zu finden.<\/p>\n<p>Dabei bezieht Access die folgenden Verzeichnisse in die Suche ein:<\/p>\n<li>das Verzeichnis, in dem Access installiert ist<\/li>\n<li>die Verzeichnisse Windows und Windows\\System<\/li>\n<li>die in der Umgebungsvariablen Path angegebenen Verzeichnisse<\/li>\n<li>benutzerdefinierte Verweispfade (s. Abschnitt 0)<\/li>\n<p>Wenn Access die gesuchte Bibliothek dort immer noch nicht findet, erscheint eine entsprechende Fehlermeldung.<\/p>\n<p><!--30percent--><\/p>\n<p>Die Fehlermeldung kann zwei Auspr&auml;gungen annehmen: entweder es erscheint die Fehlermeldung aus Bild 4 oder eine Fehlermeldung mit dem Text Funktion steht in Ausdr&uuml;cken nicht zur Verf&uuml;gung. Letztere tritt oft in Zusammenhang mit eingebauten Access-Funktionen wie Links(), Rechts() oder Format() auf.<\/p>\n<h2>Gr&uuml;nde f&uuml;r fehlerhafte Verweise<\/h2>\n<p>Besonders h&auml;ufig treten Probleme mit Verweisen auf, wenn Sie Access-Datenbanken in irgendeiner Weise &#8211; z. B. durch Weitergabe an Kunden etc. &#8211; auf einem anderen als dem Entwicklungsrechner verwenden. Dort k&ouml;nnen aus verschiedenen Gr&uuml;nden Probleme auftreten:<\/p>\n<li>die Datei, auf die verwiesen wird, ist nicht vorhanden<\/li>\n<li>die Datei liegt nicht in der ben&ouml;tigten Version vor<\/li>\n<h2>Erzeugen eines fehlerhaftenVerweises<\/h2>\n<p>Sie k&ouml;nnen das Auftreten eines fehlerhaften Verweises folgenderma&szlig;en reproduzieren:<\/p>\n<li>Legen Sie eine neue, leere Datenbank namens Bibliothek.mdb an.<\/li>\n<li>Erstellen Sie ein neues Modul und legen Sie dort die Funktion aus Quellcode 1 an.<\/li>\n<li>Speichern und schlie&szlig;en Sie die Datenbank.<\/li>\n<li>&ouml;ffnen Sie eine beliebige andere Datenbank und erstellen Sie einen Verweis auf die soeben angelegte Datenbank mit der Testfunktion. (<\/li>\n<pre>Function Test()\r\n    MsgBox \"Dies ist eine Funktion aus einer Bibliotheksdatenbank.\"\r\nEnd Function<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<p><IMG height=\"355\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic003.png\" width=\"435\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Die eingebundene Bibliotheksdatenbank<\/span><\/b><\/p>\n<p>Abgesehen davon, dass die eingebundene Datenbank nun in der Liste der Verweise auftaucht (siehe Bild 3), macht sie sich nicht bemerkbar. Erst die Eingabe der Anweisung Test im Testfenster (zu aktivieren mit der Tastenkombination Strg + G) und das anschlie&szlig;end erscheinende Meldungsfenster beweisen die Funktionst&uuml;chtigkeit der eingebundenen Datei.<\/p>\n<p>Nun &#8222;st&ouml;ren&#8220; Sie den Verweis, indem Sie den Dateinamen der Datenbank Bibliothek.mdb &auml;ndern oder die Datei in ein anderes Verzeichnis kopieren.<\/p>\n<h3>Hinweis<\/h3>\n<p>Sie k&ouml;nnen den Speicherort oder den Dateinamen der eingebundenen Datenbank nicht ver&auml;ndern, wenn der Verweis aktiv ist. Das ist der Fall, wenn die verweisende Datenbank bereits irgendeine Funktion der Bibliotheksdatenbank aufgerufen hat. <\/p>\n<p>Wenn Sie nun die gew&uuml;nschte Funktion aufrufen, erscheint eine entsprechende Fehlermeldung (siehe Bild 4).<\/p>\n<p><IMG height=\"148\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic004.png\" width=\"288\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Diese Meldung kann auf einen ung&uuml;ltigen Verweis hinweisen.<\/span><\/b><\/p>\n<p><IMG height=\"355\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic005.png\" width=\"435\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Hinweis auf einen fehlenden Verweis<\/span><\/b><\/p>\n<p>Im Anschluss an diese Meldung &ouml;ffnet Access den Dialog Verweise und zeigt dort den fehlenden Verweis an.<\/p>\n<h2>Standardspeicherort f&uuml;r Verweise festlegen<\/h2>\n<p>Wie bereits weiter oben erw&auml;hnt, durchsucht Access bei der Suche nach einem Verweis automatisch einige Standardverzeichnisse. Sie k&ouml;nnen auch selbst ein Verzeichnis zum Speichern von Bibliotheksdatenbanken festlegen.<\/p>\n<p>Dazu m&uuml;ssen Sie einen entsprechenden Eintrag in der Registry von Windows hinterlegen. Gehen Sie dazu folgenderma&szlig;en vor:<\/p>\n<li>W&auml;hlen Sie im Startmen&uuml; den Eintrag Ausf&uuml;hren&#8230; aus und geben Sie dort regedit.exe ein, um den Registrierungseditor zu starten.<\/li>\n<li>Navigieren Sie zu dem Schl&uuml;ssel HKEYLOCALMACHINE\/Software\/Microsoft\/Office\/x.0\/Access.<\/li>\n<li>Klicken Sie mit der rechten Maustaste auf den Eintrag Access und w&auml;hlen Sie aus dem Kontextmen&uuml; die Anweisung Neu\/Schl&uuml;ssel aus.<\/li>\n<li>Geben Sie RefLibPaths als Namen des neuen Schl&uuml;ssels ein.<\/li>\n<li>Legen Sie f&uuml;r diesen Schl&uuml;ssel eine neue Zeichenfolge mit dem Dateinamen der Bibliotheksdatei als Namen an und weisen Sie als Wert den Namen des gew&uuml;nschten Verzeichnisses zu (z. B. wie in Bild 6). (<\/li>\n<p>Falls Sie das Experiment zum Erzeugen eines fehlerhaften Verweises weiter oben mitgemacht und den Fehler noch nicht repariert haben, k&ouml;nnen Sie diesem noch ein weiteres Experiment anschlie&szlig;en:<\/p>\n<p>Wenn Sie den Registry-Schl&uuml;ssel erstellt und die Datenbank dort untergebracht haben, rufen Sie einfach noch einmal die Funktion Test() von der verweisenden Datenbank auf.<\/p>\n<p><IMG height=\"326\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Registry-Eintrag zum Festlegen eines Verzeichnisses f&uuml;r Bibliotheksdatenbanken<\/span><\/b><\/p>\n<p><IMG height=\"148\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic007.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Anzeige einer Funktion aus einer eingebundenen Datenbank<\/span><\/b><\/p>\n<p>Es erscheint zwar erneut die erwartete Fehlermeldung &#8211; im anschlie&szlig;end erscheinenden Dialog Verweise findet sich aber kein Hinweis auf einen kaputten Verweis mehr.<\/p>\n<p>Der Hintergrund ist, dass Access erst nach dem Auftreten eines Fehlers durch einen fehlenden Verweis die Standardverzeichnisse durchsucht.<\/p>\n<p>Wenn die gesuchte Datei dort vorhanden ist, repariert Access den Verweis, indem es den neuen Speicherort einsetzt.<\/p>\n<h2>Bearbeiten von Code aus externen Datenbanken<\/h2>\n<p>Ab Access 2000 k&ouml;nnen Sie die Module von eingebundenen Datenbanken auch in der aufrufenden Datenbank leicht bearbeiten.<\/p>\n<p>Grund ist der gegen&uuml;ber Access 97 deutlich verbesserte VBA-Editor, der nun eine &uuml;bersicht der Module der aktuellen und aller eingebundenen Datenbanken enth&auml;lt (siehe Bild 7).<\/p>\n<p>Gerade wenn Sie eine Datenbank an einen Kunden oder andere Mitarbeiter weitergeben, werden Sie ungern eine der in Kapitel 3 beschriebenen Fehlermeldungen als Reaktion auf die erste Verwendung der Datenbank erhalten.<\/p>\n<p>Daher erfahren Sie, wie Sie fehlerhafte Verweise m&ouml;glichst umgehen oder &#8211; im schlimmsten Fall &#8211; aber zumindest mit einer aussagekr&auml;ftigeren Fehlermeldung aufdecken k&ouml;nnen.<\/p>\n<h2>Verweise anzeigen<\/h2>\n<p>Die Verweise werden in einer Auflistung namens References gespeichert. Diese Auflistung enth&auml;lt f&uuml;r jede im Dialog Verweise markierte Bibliothek einen Eintrag. Mit der folgenden Prozedur k&ouml;nnen Sie einige Eigenschaften dieser Verweise im Testfenster ausgeben:<\/p>\n<pre>Public Sub VerweiseAnzeigen()\r\n    Dim Verweis As Reference\r\n    For Each Verweis In References\r\n        Debug.Print Verweis.Name & \" \" _            & Verweis.FullPath & \" \"             & Verweis.BuiltIn & \" \" _            & Verweis.IsBroken\r\n    Next Verweis\r\nEnd Sub<\/pre>\n<h3>Praxis-Tipp<\/h3>\n<p>Wenn Sie das Vorhandensein einer eingebundenen Datei &uuml;berpr&uuml;fen wollen, scheitern Sie gelegentlich an dem geringen Platz zur Anzeige der Dateiherkunft: Der Dateiname ist dann schlicht nicht zu sehen. Mit obiger Prozedur k&ouml;nnen Sie sich den Pfad in voller Breite im Testfenster ausgeben lassen. <\/p>\n<pre>Public Function VerweisePruefen1()\r\n    Dim Verweis As Reference\r\n    For Each Verweis In References\r\n        If Verweis.IsBroken = True Then\r\n            MsgBox \"Die Anwendung hat einen fehlerhaften Verweis auf die Bibliothek\" _\r\n                & Verweis.Name & \" (Version \" & Verweis.Major & \".\" & Verweis.Minor _                & \") gefunden.\" & vbCrLf & \"Bitte geben Sie den Inhalt diese \" _                & \"Meldung an den Datenbankadministrator weiter.\"\r\n        End If\r\n    Next Verweis\r\nEnd Function<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<h2>Verweise ohne Ziel auffinden<\/h2>\n<p>Es macht sich sicher gut, wenn Sie dem Anwender Ihrer Datenbank eine genaue Fehlermeldung pr&auml;sentieren, falls es mal mit den Verweisen nicht klappt. Er kann Ihnen dann direkt konkrete Hinweise auf eventuelle Fehlfunktionen aufgrund fehlender Verweise geben.<\/p>\n<p>Die folgende Funktion k&ouml;nnen Sie in Datenbankanwendungen integrieren, die von anderen Benutzern au&szlig;er Ihnen verwendet werden. Sie liefert direkt beim Start einen Hinweis auf eventuell fehlende Verweise.<\/p>\n<p>Damit die Prozedur beim Starten der Datenbankanwendung aufgerufen wird, legen Sie ein Makro an, das beim Start automatisch ausgef&uuml;hrt wird:<\/p>\n<li>Wechseln Sie im Datenbankfenster in das Register Makros und klicken Sie dort auf die Schaltfl&auml;che Neu.<\/li>\n<li>W&auml;hlen Sie in der ersten Spalte der ersten Zeile die Aktion Ausf&uuml;hrenCode aus.<\/li>\n<li>Geben Sie f&uuml;r den Parameter Funktionsname im unteren Bereich des Makrofensters den Namen der auszuf&uuml;hrenden Funktion ein, also VerweiseChecken1().<\/li>\n<li>Speichern Sie das Makro unter dem Namen autoexec. Das Makro mit diesem Namen wird beim Start automatisch aufgerufen. (<\/li>\n<p>Wenn Sie das Makro testen m&ouml;chten, k&ouml;nnen Sie die Datenbank verwenden, in der Sie den Verweis auf die Bibliotheksdatenbank angelegt haben. Benennen Sie die Bibliotheksdatenbank um und starten Sie die Datenbank mit dem Verweis auf diese Datenbank. Daraufhin erscheint das Meldungsfenster aus Bild 8.<\/p>\n<p><IMG height=\"148\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic008.png\" width=\"436\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Hinweis auf einen fehlenden Verweis<\/span><\/b><\/p>\n<h2>Fehlerhafte Verweise auffinden<\/h2>\n<p>Wenn Sie beim Aufruf einer Funktion wie z. B. Links(), Rechts() oder Format() eine Fehlermeldung mit dem Text Funktion steht in Ausdr&uuml;cken nicht zur Verf&uuml;gung erhalten, verweist die Datenbank m&ouml;glicherweise auf die falsche Version der Zieldatei. Diesen Fehler k&ouml;nnen Sie ebenfalls beim Start der Anwendung abfangen.<\/p>\n<p>Dazu ben&ouml;tigen Sie eine beliebige Tabelle und eine Abfrage, die eine der genannten Funktionen auf den Inhalt eines Feldes der Tabelle anwendet (siehe Bild 9). Mit einer Funktion greifen Sie auf den entsprechenden Wert dieser Abfrage zu und fangen den eventuell auftretenden Fehler mit einer entsprechenden Fehlerbehandlung ab. Die Funktion zum Testen der in dieser Abfrage verwendeten VBA-Funktion erstellt ein Recordset mit der Abfrage als Datenherkunft (s. Quellcode 3).<\/p>\n<pre>Function VerweisePruefen2()\r\n    Dim db As Database\r\n    Dim rst As Recordset\r\n    Dim Wert As String\r\n    Set db = CurrentDb\r\n    On Error Resume Next\r\n    Set rst = db.OpenRecordset(\"qryTest\", dbOpenDynaset)\r\n    Wert = rst!Test\r\n    If Err.Number = 3075 Then\r\n        MsgBox \"Die Anwendung hat einen fehlerhaften\" _            & \" Verweis entdeckt. Dieser Fehler wird \" _            & \"nun behoben.\"\r\n        VerweiseAktualisieren\r\n    End If\r\nEnd Function<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<pre>Sub VerweiseAktualisieren()\r\n    Dim VerweisAlt, VerweisNeu As Reference\r\n    Dim VerweisPfad As String\r\n    For Each VerweisAlt In References\r\n        If VerweisAlt.Name &lt;&gt; \"Access\" And _            VerweisAlt.Name &lt;&gt; \"VBA\" Then\r\n            Set VerweisNeu = VerweisAlt\r\n            Exit For\r\n        End If\r\n    Next VerweisAlt\r\n    VerweisPfad = VerweisNeu.FullPath\r\n    References.Remove VerweisNeu\r\n    References.AddFromFile VerweisPfad\r\n    Call SysCmd(504, 16384)\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<p><IMG height=\"260\" src=\"..\/fileadmin\/_temp_\/{77744487-2377-451B-83F6-AE49DCDAB0DC}\/pic009.png\" width=\"440\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Abfrage zum Testen von Verweisen<\/span><\/b><\/p>\n<p>Anschlie&szlig;end liest sie den Wert des Feldes mit der Funktion in eine Variable ein. Wenn der Verweis fehlerhaft ist, tritt ein Fehler auf, der im n&auml;chsten Schritt direkt abgefangen wird und eine Prozedur zum Aktualisieren des Verweises aufruft.<\/p>\n<h2>Verweise reparieren<\/h2>\n<p>Falls die Funktion aus dem vorherigen Abschnitt einen fehlerhaften Verweis findet, ruft sie die Prozedur aus Quellcode 4 auf.<\/p>\n<p>Diese Prozedur testet alle Verweise au&szlig;er denjenigen, die auf die Bibliotheken Access und VBA zeigen, bis sie einen Fehler findet.<\/p>\n<h2>Unn&ouml;tige Verweise entfernen<\/h2>\n<p>Bei der Entwicklung einer Datenbankanwendung kommt es vor, dass Bibliotheken unn&ouml;tig referenziert sind, weil deren Funktionen w&auml;hrend des Entwicklungsprozesses verwendet, aber sp&auml;ter doch wieder herausgenommen wurden.<\/p>\n<p>Darunter leidet die Performance, au&szlig;erdem k&ouml;nnen auch bei nicht verwendeten Verweisen Fehler auftreten. Sie sollten daher als letzten Test vor dem Verteilen einer Anwendung unbedingt &uuml;berpr&uuml;fen, ob auch alle Verweise ben&ouml;tigt werden, die Sie angelegt haben.<\/p>\n<p>Gehen Sie dazu folgenderma&szlig;en vor:<\/p>\n<li>Deaktivieren Sie einen aktiven Verweis im Dialog Verweise.<\/li>\n<li>Kompilieren Sie alle Module der Datenbank. Wenn ein Fehler auftritt, wird das Objekt, auf das der Verweis zeigt, noch ben&ouml;tigt.<\/li>\n<li>Wiederholen Sie die Schritte 1 und 2, bis Sie alle Verweise getestet haben. (<\/li>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft Access bietet eigentlich alles, was das Datenbankentwicklerherz begehrt &#8211; zumindest solan-ge, bis der Access-Entwickler einen Blick &uuml;ber den Tellerrand wagt und sieht, was mit Access noch  alles m&ouml;glich ist. Denn Access kann so ziemlich alle Anwendungen, auf deren Objektmodell es per VBA zugreifen kann, steuern und mit ihnen kommunizieren &#8211; ob mit Word, Excel, Outlook oder anderen Produkten. Und auch die Funktionalit&auml;t anderer bestehender Datenbanken l&auml;sst sich unter Access durch das Setzen eines einfachen Verweises auf eine so genannte Bibliothek wieder verwenden. Im vorliegenden Beitrag erfahren Sie, was es mit diesen Bibliotheken auf sich hat, welche M&ouml;glichkeiten es zum Setzen von Verweisen gibt und wie Sie dabei entstehende Probleme elegant umschiffen k&ouml;nnen.<\/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":[662003,66032003,44000025],"tags":[],"class_list":["post-55000110","post","type-post","status-publish","format-standard","hentry","category-662003","category-66032003","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>Referenzen und Bibliotheken - 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\/Referenzen_und_Bibliotheken\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Referenzen und Bibliotheken\" \/>\n<meta property=\"og:description\" content=\"Microsoft Access bietet eigentlich alles, was das Datenbankentwicklerherz begehrt - zumindest solan-ge, bis der Access-Entwickler einen Blick &uuml;ber den Tellerrand wagt und sieht, was mit Access noch alles m&ouml;glich ist. Denn Access kann so ziemlich alle Anwendungen, auf deren Objektmodell es per VBA zugreifen kann, steuern und mit ihnen kommunizieren - ob mit Word, Excel, Outlook oder anderen Produkten. Und auch die Funktionalit&auml;t anderer bestehender Datenbanken l&auml;sst sich unter Access durch das Setzen eines einfachen Verweises auf eine so genannte Bibliothek wieder verwenden. Im vorliegenden Beitrag erfahren Sie, was es mit diesen Bibliotheken auf sich hat, welche M&ouml;glichkeiten es zum Setzen von Verweisen gibt und wie Sie dabei entstehende Probleme elegant umschiffen k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:26+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/5a66019cdfbe4b91b188bca8bf98cf6f\" \/>\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=\"13\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Referenzen und Bibliotheken\",\"datePublished\":\"2020-05-06T15:17:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/\"},\"wordCount\":2392,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5a66019cdfbe4b91b188bca8bf98cf6f\",\"articleSection\":[\"2003\",\"3\\\/2003\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/\",\"name\":\"Referenzen und Bibliotheken - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5a66019cdfbe4b91b188bca8bf98cf6f\",\"datePublished\":\"2020-05-06T15:17:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5a66019cdfbe4b91b188bca8bf98cf6f\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5a66019cdfbe4b91b188bca8bf98cf6f\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Referenzen_und_Bibliotheken\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Referenzen und Bibliotheken\"}]},{\"@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":"Referenzen und Bibliotheken - 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\/Referenzen_und_Bibliotheken\/","og_locale":"de_DE","og_type":"article","og_title":"Referenzen und Bibliotheken","og_description":"Microsoft Access bietet eigentlich alles, was das Datenbankentwicklerherz begehrt - zumindest solan-ge, bis der Access-Entwickler einen Blick &uuml;ber den Tellerrand wagt und sieht, was mit Access noch alles m&ouml;glich ist. Denn Access kann so ziemlich alle Anwendungen, auf deren Objektmodell es per VBA zugreifen kann, steuern und mit ihnen kommunizieren - ob mit Word, Excel, Outlook oder anderen Produkten. Und auch die Funktionalit&auml;t anderer bestehender Datenbanken l&auml;sst sich unter Access durch das Setzen eines einfachen Verweises auf eine so genannte Bibliothek wieder verwenden. Im vorliegenden Beitrag erfahren Sie, was es mit diesen Bibliotheken auf sich hat, welche M&ouml;glichkeiten es zum Setzen von Verweisen gibt und wie Sie dabei entstehende Probleme elegant umschiffen k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:26+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/5a66019cdfbe4b91b188bca8bf98cf6f","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Referenzen und Bibliotheken","datePublished":"2020-05-06T15:17:26+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/"},"wordCount":2392,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/5a66019cdfbe4b91b188bca8bf98cf6f","articleSection":["2003","3\/2003","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/","url":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/","name":"Referenzen und Bibliotheken - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/5a66019cdfbe4b91b188bca8bf98cf6f","datePublished":"2020-05-06T15:17:26+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/5a66019cdfbe4b91b188bca8bf98cf6f","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/5a66019cdfbe4b91b188bca8bf98cf6f"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Referenzen_und_Bibliotheken\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Referenzen und Bibliotheken"}]},{"@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\/55000110","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=55000110"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000110\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}