Access Formular aus ArcMap heraus starten

Wie in einem früheren Beitrag bereits erwähnt, lassen sich Datenbanken sehr einfach mit ArcGIS verknüpfen. Die eine Möglichkeit besteht durch joins, wobei Datensätze zu bestehenden Attributwerten angehängt werden. Desweiteren können Daten unabhängig vom GIS editiert werden um sie später erst räumlich darzustellen. Letzteres Vorgehen ist dann sinnvoll, wenn größere Datenmengen pro GIS-feature eingegeben werden und Formulare zum Einsatz kommen müssen.

Ein in meinen Augen sehr elegantes Vorgehen von kristina callahan möchte ich hier vorstellen. Mit wenig Programmieraufwand lassen sich dabei Access-Formulare per Klick auf ein Feature öffnen, um die dazugehörigen Datensätze zu ändern. Dies geschieht mit Hilfe eines kleinen Macros, welches den Attributwert eines festgelegten Feldes aus ArcGIS beim klick ausliest und es nach Access übermittelt, sodaß zu genau der richtigen Stelle im Formular gesprungen werden kann.

Voraussetzungen:

  • ein ArcMap-Projekt (mxd) mit einem Feature, welches über ein Feld verfügt, das dem in der Datenbank entspricht.
  • eine Access-Datenbank mit einem Formular
  • ein kleines Script - Bitte hier herunterladen

Vorgehensweise:

  • den Visual Basic Editor starten: in ArcMap → Tools → Macros → Visual Basic Editor starten
  • Datei → Import File → die Datei "AccessHyperlink.bas" auswählen
  • Tools → References und 'Microsoft Access 12.0 Object Library' aktiv schalten
  • Den Eintrag "E:\bird.mdb" mit dem Pfad zu deiner Datenbank ersetzen
  • Den Eintrag "e:" mit dem Laufwersbuchstaben der Datenbank ersetzen
  • Den Eintrag "frmLocation" mit dem Namen des Formulars in der Access-Datenbank ersetzen
  • Den Eintrag ("[LocationID]=" & Chr(34) & thestring & Chr(34)) ändern, und zwar: [LocationID] mit dem Feldnamen ersetzen, der dem im GIS entspricht - z.B. [Waldort_ID] oder [Werk_ID] Wenn der Wert eine Zahl ist, kann auf Chr(34) verzichtet werden - Dann würde die Zeile ungefähr so lauten:

    Accapp.DoCmd.OpenForm "Waldort_Daten", acNormal, , ("[Waldort_ID]=" & thestring)

    danach den VBE wieder schließen

  • Die Layer-Eigenschaften des gewünschten Layers öffnen → Display → Hyperlink
  • Support Hyperlinks using Field" aktivieren und ein Feld auswählen, das genau die gleichen Felder enthält wie das oben angegebene Feld - z.B. Waldort_ID oder Werk_ID</li>
  • Macro auswählen und folgenden Code rechts daneben per Copy&amp;Paste einfügen:

    Project.AccessHyperlink.Hyperlink nicht auf "Create" klicken!!!

  • OK - und jetzt den Blitz ausprobieren und auf die Features klicken.