Access per URL starten

Ein interessanter Anwendungsfall ist das Starten einer Access-Anwendung über den Aufruf einer URL etwa im Browser – zum Beispiel von einer Internetanwendung aus, die einen speziell vorbereiteten Link enthält. Die Betätigung dieses Links soll dann Access starten, die gewünschte Datenbank öffnen und gegebenenfalls sogar noch einen oder mehrere Parameter an die Anwendung übergeben. Wie das gelingt, schauen wir uns im vorliegenden Beitrag an.

Im konkreten Fall schickte uns ein Leser die Anforderung, bei der eine Internetanwendung eine Möglichkeit bietet, über eine Schaltfläche beziehungsweise einen Link eine eigene URL anzugeben, die bei Betätigung geöffnet wird.

Lässt sich dies realisieren, und wenn ja, wie Die Lösung ist nicht besonders nahe liegend, denn wir können die Anwendung ja nicht über einen herkömmlichen Batch-Befehl starten, wie es etwa über eine Dateiverknüpfung erfolgt.

Der Trick ist, dass wir einen eigenen Datei-Handler definieren, wie er normalerweise in die URL-Leiste des Browsers eingegeben wird, also beispielsweise http: oder ftp:. Dem lassen wir dann die Daten folgen, die als Parameter an die aufzurufende Access-Datenbank übergeben werden sollen. Aber wie definieren, dass etwa bei übergabe des Handlers accessdb: auch wirklichen eine Access-Datenbank geöffnet wird, und welche dies ist Dies legen wir in der Registry fest, und zwar etwa wie in Bild 1. Wir fügen also dem Zweig HKEY_CLASSES_ROOT ein neues Element namens accessdb hinzu. Dafür legen wir als Standardwert URL:accessdb Protocol fest und ein weiteres Element namens URL Protocol, das aber leer bleibt. Darunter folgen drei weitere verschachtelte Elemente, nämlich shell, open und command. Letzteres erhält die auszuführende Batch-Anweisung, in diesem Fall den Aufruf der Anwendung MSACCESS.EXE und die Angabe der zu öffnenden Datenbankdatei mit Pfad. Danach folgt noch der Ausdruck /cmd %1, den wir später erläutern:

Einstellungen in der Registry

Bild 1: Einstellungen in der Registry

"C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\MSACCESS.EXE" 
"C:\\Users\\User\\Dropbox\\Daten\\URLTest.accdb" /cmd %1

Um diese Einträge automatisch per Doppelklick auf eine Datei namens accessdb.reg zur Registry hinzuzufügen, füllen Sie diese Datei mit dem Code aus Listing 1.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\accessdb]
@="URL:accessdb Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\accessdb\shell]
[HKEY_CLASSES_ROOT\accessdb\shell\open]
[HKEY_CLASSES_ROOT\accessdb\shell\open\command]
@="\"C:Program Files (x86)Microsoft OfficerootOffice16MSACCESS.EXE\" 
\"C:UsersUserDropboxDatenURLTest.accdb\" /cmd %1"

Listing 1: Inhalt der Datei accessdb.reg zum Anlegen der benötigten Registrierungswerte

Wenn Sie nun im Browser die Adresse accessdb: gefolgt von einem beliebigen Ausdruck eingeben (oder auch nur accessdb:), wird die Access-Datenbank geöffnet und in Access angezeigt. Beim ersten Aufruf kann es vorkommen, dass die Meldung aus Bild 2 erscheint und Sie diese zunächst noch bestätigen müssen. Wenn Sie hier die Option Auswahl für accessdb-Links speichern aktivieren, erscheint diese Meldung anschließend nicht mehr.

Warnmeldung beim Ausführen von Access via Browser

Bild 2: Warnmeldung beim Ausführen von Access via Browser

Dies funktionert wie beschrieben mit Firefox. Unter Microsoft Edge muss die Meldung jedes Mal erneut bestätigt werden, Chrome will Access gar nicht öffnen. Der Internet Explorer bietet auch die Möglichkeit, die Einstellung zu speichern. Wer die Registry bearbeitet, um vom Browser aus eine Access-Datenbank zu starten, wird sich aber vermutlich auch mit der Auswahl eines der funktionierenden Browser anfreunden können.

Parameter übergeben

Nun kommen wir zum interessanten Teil, denn wir wollen ja nicht nur einfach irgendeine Access-Datenbank öffnen, sondern gegebenenfalls auch noch Parameter übergeben.

Die Vorbereitungen, um diese Parameter zu übergeben, haben wir in der Registry bereits getroffen. Dort haben wir nämlich den Ausdruck /cmd %1 an den Batch-Aufruf angehängt. %1 entspricht dabei der kompletten URL. Wenn Sie die Datenbank also mit dem Link accessdb:test öffnen, wird accessdb:test auch als cmd-Parameter übergeben.

Den cmd-Parameter können Sie in der geöffneten Anwendung dann mit der Funktion Command() auslesen. Wenn Sie die Anwendung also mit dem Link geöffnet haben, wechseln Sie testweise zum Direktbereich des VBA-Editors (Strg + G) und geben dort den folgenden Befehl ein:

Debug.Print Command()
   accessdb:test

Den Parameter wollen Sie natürlich nun noch professioneller auswerten – beispielsweise, wenn der Aufruf die Angabe etwa einer Datensatznummer enthält und die Access-Anwendung den entsprechenden Datensatz beim öffnen anzeigen soll.

Dazu geben wir hinter dem URL-Handler nun direkt den Parameter mit Name und Wert an – etwa wie folgt, um einen Kunden mit dem Wert 3 für das Feld KundeID zu öffnen:

accessdb:KundeID=3

Damit die Datenbank nun gleich das Formular mit dem entsprechenden Wert anzeigt, benötigen wir drei Dinge:

  • ein AutoExec-Makro, das beim Start der Anwendung geöffnet wird,
  • eine VBA-Funktion, die durch das Makro aufgerufen wird und die URL auswertet sowie
  • ein Formular, das schließlich den gewünschten Kunden anzeigt.

Startmakro

Das Makro namens AutoExec sieht wie in Bild 3 aus und soll nur eine einzige Anweisung enthalten. Diese heißt AusführenCode und erhält als Parameter den Namen der aufzurufenden VBA-Funktion, in diesem Fall ParameterAuswerten().

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