Verweise – ActiveX-Steuerelemente

Demo.ActiveX.mdb

In diesem fünften Teil der Beitragsreihe rund um das Thema Verweise geht es um ActiveX-Steuerelemente und die damit verbundenen Probleme. Neben einigen praktischen Hinweisen zeigt Ihnen dieser Beitrag, wann Sie ActiveX-Steuerelemente besser nicht einsetzen und wie Sie der “DLL-Hölle” entfliehen können.

Bevor wir uns mit den Problemen rund um Active-X-Steuerelemente beschäftigen, ist es wichtig, ein Verständnis dafür zu entwickeln, um was es bei ActiveX-Steuerelementen geht.

Was ist ein ActiveX

Bei ActiveX-Steuerelementen handelt es sich um Zusatzsteuerelemente, die nicht in Access eingebaut sind, sondern von Microsoft oder Dritten bereitgestellt werden. Ein Beispiel für ein von Microsoft zur Verfügung gestelltes ActiveX-Steuerelement ist das TreeView-Steuerelement, wohingegen beispielsweise das Adobe PDF Reader-Steuerelement über Dritte bezogen werden muss.

Mit den ActiveX-Steuerelementen hat Microsoft die Möglichkeit geschaffen, die Auswahl der eingebauten Steuerelemente zu erweitern. Ein ActiveX-Steuerelement kann etwa mit Visual Basic 6 erstellt werden. Wegen der Dateiendung .ocx sind ActiveX-Steuerelemente teilweise auch als OCXe bekannt. ActiveX-Steuerelemente werden in einer externen Bibliothek bereitgestellt und müssen, damit sie funktionieren können, im System registriert werden. Nach der Registrierung steht das Steuerelement dann systemweit zur Verfügung.

Ein ActiveX registrieren

Die Registrierung eines ActiveX-Steuerelements kann auf folgenden Wegen geschehen:

  • über ein Setup,
  • manuell aus Access heraus
  • über die Eingabeaufforderung
  • per VBA.

Häufig ist ein ActiveX-Steuerelement Bestandteil eines Softwarepakets. In einem solchen Fall wird die Registrierung im Rahmen des Setups der Software vorgenommen. Es gibt auch ActiveX-Steuerelemente, die über ein gesondertes Setup-Programm verfügen. Sie können ein ActiveX-Steuerelement auch manuell aus Access heraus registrieren. Dazu verwenden Sie den Menüpunkt Extras|ActiveX-Steuerelemente|Registrieren… im Formular- oder Berichtsentwurf (siehe Bild 1).

Abb1.tif

Bild 1: ActiveX-Steuerelemente mit Access registrieren

Sie haben auch die Möglichkeit, die Registrierung manuell über die Eingabeaufforderung vorzunehmen. Dazu verwenden Sie das Programm RegSvr32.exe. Der Aufruf lautet zum Beispiel wie folgt:

Regsvr32.exe C:\DeinPfad\DeinActiveX.ocx

Schlussendlich können Sie die Registrierung auch per VBA vornehmen. Dazu deklarieren Sie einen API-Aufruf. Dieser sieht beispielsweise wie folgt aus:

Declare Function DllRegisterServer Lib " C:\DeinPfad\DeinActiveX.ocx€ () As Long

Dieser Aufruf funktioniert mit jedem OCX, da einjedes die Funktion DllRegisterServer bereitstellt. Sie können die Registrierung per VBA auch durch das Ausführen der CMD-Befehlszeile mittels Shell-Befehl durchführen. Der Vorteil der Registrierung mittels API-Funktion liegt darin, dass Ihnen die API-Funktion über ihren Rückgabewert mitteilt, ob die Registrierung erfolgreich war.

Für Benutzer von Vista ist zu beachten, dass sie bei der Registrierung eines OCX als Administrator angemeldet sein müssen. Weitere Details finden Sie unter [1].

Praktische Hinweise

Bei der Verwendung von ActiveX-Steuerelementen gibt es einige Besonderheiten zu beachten. So wird beim Einfügen eines ActiveX-Steuerelements automatisch der zugehörige Verweis eingefügt. Dieses Verhalten können Sie ganz leicht nachvollziehen. Öffnen Sie dazu eine beliebige Datenbank. Wechseln Sie als Erstes in den VBA-Editor und prüfen Sie dort im Verweise-Dialog die aktiven Verweise.

Als Nächstes wechseln Sie zurück in die Access- Oberfläche. Öffnen Sie dort ein beliebiges Formular in der Entwurfsansicht. Fügen Sie nun ein ActiveX-Steuerelement ein. Dazu wählen Sie zum Beispiel das Adobe PDF Reader-Steuerelement aus. Wenn Sie jetzt im VBA-Editor den Verweis-Dialog erneut öffnen, werden Sie feststellen, dass Access den Verweis auf die Adobe Acrobat Library selbstständig eingefügt hat (siehe Bild 2).

Abb2.tif

Bild 2: Beim Einfügen eines ActiveX-Steuerelements wird automatisch ein Verweis eingefügt.

Sie werden sich jetzt vielleicht fragen, was so schlimm daran ist, dass Access diesen Verweis selbständig eingetragen hat. Schließlich wird Ihnen doch ein Stück Arbeit abgenommen. Das Gefährliche daran ist, dass Access diesen Verweis ohne Ihr Zutun erstellt und dass Sie keine Information darüber erhalten, dass überhaupt ein Verweis eingefügt wurde. Schließlich benötigen Sie den Verweis nicht unbedingt.

Wenn Ihre Datenbank auf einem System ausgeführt wird, auf dem das verwendete ActiveX-Steuerelement nicht registriert ist, treten bei der Verwendung eines Verweises Fehler auf. Diese Fehler wurden in einem früheren Beitrag dieser Reihe ausführlich besprochen (Defekte Verweise: Ursachen und Lösungen, Shortlink 572).

Kommt Ihre Datenbank stattdessen ohne Verweis daher, dann treten die oben genannten Fehler nicht auf. Zum Fehler kommt es erst dann, wenn das Formular mit dem nicht vorhandenen ActiveX-Steuerelement aufgerufen wird, in Form der Meldung: “In diesem Formular befindet sich kein Steuerelement.€

Diese Tatsache, dass Access selbstständig einen Verweis erstellt, wenn Sie ein ActiveX-Steuerelement in ein Formular einfügen, sollten Sie auf keinen Fall aus den Augen verlieren. Entfernen Sie jeden automatisch eingefügten Verweis, wenn Sie ihn nicht unbedingt benötigen.

Ein weiterer Punkt, den Sie beachten sollten, tritt auf, wenn Sie ein Formular mit einem ActiveX-Steuerelement aus einer anderen Datenbank importieren. In diesem Fall kümmert Access sich nicht um die zugehörigen Verweise. Dies ist unabhängig davon, ob der zugehörige Verweis in der Ursprungsdatenbank gesetzt ist oder nicht. Wenn der Verweis im Modul des importierten Formulars benötigt wird, werden Sie beim nächsten Kompilieren der Anwendung mit der Fehlermeldung Fehler beim Kompilieren: Projekt oder Bibliothek nicht gefunden konfrontiert. Sie müssen den Verweis dann manuell ergänzen.

Es geht auch mit IntelliSense

Leider erhalten Sie keine IntelliSense-Unterstützung, wenn Sie ein ActiveX-Steuerelement in ein Formular eingefügt haben und dieses per VBA ansprechen wollen. Im Gegensatz zu den Access-eigenen Steuerelementen müssen Sie Ihren VBA-Code anpassen, wenn Sie die gewünschte Unterstützung erhalten wollen. Sie müssen dazu eine Variable vom Typ des ActiveX-Steuerelements deklarieren. Dieser Variablen weisen Sie dann das Steuerelement-Objekt zu. Der folgende Code-Ausschnitt zeigt ein Beispiel für das Adobe PDF-Steuerelement.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar