Access macht Installationsarbeit

Customizing mit Tücken

Leider reicht nicht bei allen Dateien das einfache Speichern im Dateisystem aus. Wenn Sie beispielsweise ein ActiveX-Steuerelement auf diese Weise weitergeben möchten, müssen Sie zusätzlich für dessen Registrierung sorgen.

Ein gutes Beispiel ist das RTF2-Steuerelement von Stephen Lebans, das Sie in anderen Artikeln bereits kennen gelernt haben. Man muss die passende DLL oder .ocx-Datei zunächst mit der Anwendung RegSvr32.exe registrieren. Das ist allerdings auch nicht besonders schwierig: Wenn Sie eine Prozedur wie aus Listing 3 verwenden, um die benötigten Dateien im Dateisystem zu speichern, können Sie dort mit wenigen weiteren Befehlen den für DLLs notwendigen Registriervorgang durchführen.

Ganz so trivial ist das allerdings nicht, denn die Weitergabe, Registrierung und Verwendung von ActiveX-Steuerelementen ist selten ohne Probleme möglich. So führten Experimente beispielsweise dazu, dass beim Speichern der RTF2.ocx-Datei im gleichen Verzeichnis wie die Datenbank und anschließendes Registrieren nicht zur erwarteten Funktion: Die Formulare mit dem RTF2-Steuerelement versagten mit der Meldung „In diesem Steuerelement befindet sich kein Objekt“ den Dienst

Behoben werden konnte dieses Problem durch Installation der RTF2.ocx-Datei genau in dem gleichen Verzeichnis, in dem es sich auch bei der Erstellung der Originaldatenbank und damit beim Hinzufügen des RTF2-Steuerelements zu den Formularen befand (in diesem Fall c:\Programmeebans holdings 1999 ltd\rtf2\ rtf2.ocx).

Die Routine aus Listing 4 versucht, die gleiche Verzeichnisstruktur auf laufwerk c:\ herzustellen und die Datei rtf2.ocx dort zu speichern. Gelingt dies, funktionieren die Formulare mit dem Steuerelement; andernfalls erhält man eine Fehlermeldung beim öffnen der Formulare.

private sub form_open(cancel as integer)
dim strdatenbankpfad as string
dim strdatei as string
dim strdateibezeichnung as string
strdatenbankpfad = "c:\programmeebans holdings 1999 ltd\rtf2"
strdatei = "rtf2.ocx"
strdateibezeichnung = "rtf2.ocx"
mkdir "c:\programmeebans holdings 1999 ltd"
mkdir "c:\programmeebans holdings 1999 ltd\rtf2"
if dir(strdatenbankpfad & "\" & strdatei) = "" then
tabelleindatei strdateibezeichnung, strdatenbankpfad & "\" & strdatei
shell "regsvr32.exe /s " & """" & strdatenbankpfad & "\" & strdatei & """"
end if
end sub

Probleme könnte es etwa geben, wenn der Zugriff auf laufwerk c:\ und die enthaltenen Verzeichnisse versagt wird. Hundertprozentig sicher ist dieses Verfahren also nicht; man sollte die Routine zur Sicherheit noch mit einer umfassenden Fehlerbehandlung ausstatten und dem Benutzer gegebenenfalls mitteilen, wie er das Steuerelement installieren muss.

Die genannten Probleme beschränken sich übrigens nicht auf das RTF2-Steuerelement, bei anderen ActiveX-Steuerelementen dürften sie ebenfalls auftreten.