Datenbankanbindung mit ArcView

Werbung
4. ArcView Anwendertreffen
Datenbankanbindung mit ArcView
Daniel Fuchs
Gliederung
Teil 1:
Teil 2:
Teil 3:
Teil 4:
Grundbegriffe zu Datenbanken
SQL – menügesteuerte Datenabfragen aus ArcView
SQL und Avenue – Einstieg in die Programmierung
DDE – ArcView und Datenbank arbeiten zusammen
Datenbankanbindung mit ArcView
Teil 1: Grundbegriffe Datenbanken
Datenbanken dienen zum Erstellen, Speichern und Verarbeiten von
tabellarisch geordneten Daten. Diese Daten können in den
verschiedensten Formaten vorliegen: zum Beispiel als numerische
Werte (Zahlen), als Text (Zeichenfolge) oder als Datum.
Am Beispiel einer weit verbreiteten Datenbank, MS Access aus der
Microsoft Office-Produktreihe, können die drei wichtigsten
Funktionen einer Datenbank dargestellt werden:
• Datendefintion
• Datenspeicherung
• Datenmanipulation und -abfrage
Datenbankanbindung mit ArcView
Grundbegriffe: Datendefinition - Tabellen
Das grundlegende Format für die Defintion von Daten in Access ist
die Tabelle.
Datenbankanbindung mit ArcView
Grundbegriffe: Datendefinition - Tabellen
Tabellenspalten haben einen Namen. Alle Daten einer Spalte
weisen das selbe Format auf (hier Text oder Zeichenfolge).
Datenbankanbindung mit ArcView
Grundbegriffe: Datendefinition - Tabellen
Tabellenzeilen werden auch als Datensätze bezeichnet. Sie werden
in Access fortlaufend nummeriert.
Datenbankanbindung mit ArcView
Grundbegriffe: Datendefinition - Tabellenbeziehungen
Die verschiedenen in einer Datenbank enthaltenen Tabellen können
in definierten Beziehungen zueinander stehen. Die beiden häufigsten
Beziehungen sind dabei:
Jedem Datensatz in Tabelle 1 entspricht genau ein Datensatz in
Tabelle 2.
Datenbankanbindung mit ArcView
Grundbegriffe: Datendefinition - Tabellenbeziehungen
Die verschiedenen in einer Datenbank enthaltenen Tabellen können
in definierten Beziehungen zueinander stehen. Die beiden häufigsten
Beziehungen sind dabei:
Jedem Datensatz in Tabelle 1 entsprechen mehrere Datensätze in
Tabelle 2.
Datenbankanbindung mit ArcView
Grundbegriffe: Datenmanipulation und -abfragen
Für die meisten Anwendungen liegt die wichtigste Funktion einer
Datenbank in der Auswertung von Daten über Abfragen.
Datenbankanbindung mit ArcView
Grundbegriffe: Datenmanipulation und -abfragen
Durch Abfragen können Daten angezeigt, gefiltert, berechnet,
summiert, gruppiert und verändert werden. Dabei können mehrere
miteinander verbundene Tabellen in ein und der selben Abfrage
verwendet werden.
Datenbankanbindung mit ArcView
Grundbegriffe: Datenmanipulation und -abfragen
Für den sinnvollen Ablauf von Abfragen ist die Angabe von Kriterien
entscheidend. Durch Kriterien wird die angezeigte Datenmenge auf
ein gewünschtes Teilergebnis eingegrenzt.
Datenbankanbindung mit ArcView
Grundbegriffe: SQL
Abfragen innerhalb von Datenbanken und von anderen
Anwendungen heraus auf Datenbankinhalte verwenden häufig eine
spezielle Programmiersprache. Diese Sprache wird SQL genannt,
was für „structured query language“ oder „strukturierte
Abfragesprache“ steht.
Wer mit Access arbeitet, muss sich normalerweise nicht mit SQL
beschäftigen. Abfragen werden in eigenen Abfragenfenstern erstellt
und dann vom Programm selbständig in SQL übersetzt. Für den
Zugriff auf eine Datenbank von anderen Programmen heraus ist
aber oft die Erstellung von SQL-Befehlen notwendig.
Glücklicherweise ist SQL ziemlich leicht zu verstehen.
Datenbankanbindung mit ArcView
Grundbegriffe: SQL
Access bietet die Möglichkeit, den vom Programm erzeugten SQLBefehl als Text anzuzeigen:
Datenbankanbindung mit ArcView
Grundbegriffe: SQL - SELECT
Eine SQL-Abfrage beginnt meist mit dem Schlüsselwort SELECT.
Nach SELECT folgen alle Spalten aus den beteiligten Tabellen oder
Abfragen, die angezeigt werden sollen. Die Felder werden dabei
immer in der Form Tabellenname.Spaltenname angezeigt. Falls der
Tabellenname Sonderzeichen enthält, wird er in eckige Klammern
gesetzt.
SELECT [BK-ID].ID, BKArten.Name, BKArten.Deutsch
Datenbankanbindung mit ArcView
Grundbegriffe: SQL - FROM
Nach der SELECT-Zeile folgt die Anweisung FROM. In dieser Zeile
werden alle Tabellen genannt, die an der Abfrage beteiligt sind.
SELECT [BK-ID].ID, BKArten.Name, BKArten.Deutsch
FROM [BK-ID], BKArten
Datenbankanbindung mit ArcView
Grundbegriffe: SQL - FROM mit JOIN
Nach der SELECT-Zeile folgt die Anweisung FROM. In dieser Zeile
werden alle Tabellen genannt, die an der Abfrage beteiligt sind.
Wenn mehrere Tabellen verknüpft sind, wird dies durch einen JOINAusdruck innerhalb des FROM-Teils definiert.
SELECT [BK-ID].ID, BKArten.Name, BKArten.Deutsch
FROM [BK-ID] JOIN BKArten ON [BK-ID].ID = BKArten.ID
Datenbankanbindung mit ArcView
Grundbegriffe: SQL - WHERE
Mit diesen beiden Zeilen ist eine SQL-Abfrage bereits erstellt. Die
Angabe von Auswahlkriterien erfolgt mit dem Schlüsselwort WHERE.
Zahlenwerte werden ohne, Textwerte mit Anführungszeichen
verwendet. Die Anzahl von Klammern in diesem Ausdruck wird von
MSAccess recht ernst genommen.
SELECT [BK-ID].ID, BKArten.Name, BKArten.Deutsch
FROM [BK-ID] JOIN BKArten ON [BK-ID].ID = BKArten.ID
WHERE ((([BK-ID].ID) = 63232262))
Datenbankanbindung mit ArcView
Grundbegriffe: SQL - WHERE
Abgeschlossen wird eine vollständige SQL-Abfrage immer mit einem
Strichpunkt.
SELECT [BK-ID].ID, BKArten.Name, BKArten.Deutsch
FROM [BK-ID] JOIN BKArten ON [BK-ID].ID = BKArten.ID
WHERE ((([BK-ID].ID) = 63232262));
Datenbankanbindung mit ArcView
Grundbegriffe: SQL - Weitere Schlüsselwörter
Es gibt natürlich noch zahlreiche weitere Schlüsselwörter, mit denen
sich Abfrage detaillierter gestalten lassen. Eine Sortierung der
ausgegebenen Daten erfolgt mit ORDER BY.
SELECT [BK-ID].ID, BKArten.Name, BKArten.Deutsch
FROM [BK-ID] JOIN BKArten ON [BK-ID].ID = BKArten.ID
WHERE ((([BK-ID].ID) = 63232262))
ORDER BY BKArten.Name;
Datenbankanbindung mit ArcView
Grundbegriffe: SQL - Weitere Schlüsselwörter
Es gibt natürlich noch zahlreiche weitere Schlüsselwörter, mit denen
sich Abfrage detaillierter gestalten lassen. Eine Sortierung der
ausgegebenen Daten erfolgt mit ORDER BY. Die Daten können auch
nach einem bestimmten Feld gruppiert ausgegeben werden, dies
erfolgt durch GROUP BY.
SELECT [BK-ID].ID, BKArten.Name, BKArten.Deutsch
FROM [BK-ID] JOIN BKArten ON [BK-ID].ID = BKArten.ID
WHERE ((([BK-ID].ID) = 63232262))
ORDER BY BKArten.Name
GROUP BY [BK-ID].ID;
Datenbankanbindung mit ArcView
Grundbegriffe: SQL
Eine genauere Definition der SQL-Schlüsselwörter findet sich in den
Hilfethemen der verwendeten Programme, z. B. bei MSAccess.
Zum Üben empfiehlt es sich auf jeden Fall, menügesteuert Abfragen
in MSAccess zu erstellen und sich dann den automatisch erzeugten
SQL-Abfragetext genau anzusehen.
Datenbankanbindung mit ArcView
Teil 2: SQL und Arcview
Datenbankanbindung mit ArcView
Teil 2: SQL und Arcview
ArcView bietet die Möglichkeit, Daten aus einer Access-Datenbank
direkt über SQL abzufragen und das Ergebnis tabellarisch
darzustellen. Ab Version 3.2 steht dafür eine kostenlose Erweiterung
zur Verfügung, der Database Access:
Datenbankanbindung mit ArcView
SQL und Arcview: Verwendung von Database Access
Mit Hilfe der Erweiterung
„Database Access“ können
alle Schritte, die zur
Abfrage von DatenbankDaten und ihrer Einbindung
in ArcView notwendig sind,
aus ArcView heraus
durchgeführt werden.
Die Erweiterung wird mit
dem Menüpunkt
„Datenbanktabelle
hinzufügen“ im
Projektmenü gestartet.
Datenbankanbindung mit ArcView
SQL und Arcview: Verbindungsaufbau über ODBC
Das Hauptfenster für den
Datenbankzugriff ist
zunächst leer.
Als erstes muss eine
Verbindung zu einer
bestehenden AccessDatenbank hergestellt
werden.
Datenbankanbindung mit ArcView
SQL und Arcview: Verbindungsaufbau über ODBC
Datenquellen können
entweder neu definiert
werden, oder es wird eine
bereits bestehende
Datenquelle verwendet.
Datenbankanbindung mit ArcView
SQL und Arcview: Verbindungsaufbau über ODBC
Unter Umständen kann es
sinnvoller sein, die
Datenquelle vor dem Start
von ArcView zu definieren.
Dies geschieht in der
Systemsteuerung von
Windows unter
„Datenquellen (ODBC)“
(WIN 9x, WIN NT) bzw.
unter „Verwaltung Datenquellen“ (WIN
2000).
Datenbankanbindung mit ArcView
SQL und Arcview: Verfügbare Spalten mit Daten
Nach Auswahl der
Verbindung zur Datenbank
sind im Fenster die
verfügbaren Tabellen und
Abfragen sichtbar.
Durch Auswahl einer
Tabelle oder Abfrage
werden auch die Spalten
angezeigt, die in eine neue
Tabelle eingebunden
werden können.
Datenbankanbindung mit ArcView
SQL und Arcview: Erzeugen der SQL-Abfrage
Die SQL-Abfrage auf die
Datenbank wird dann
durch Doppelklicken auf
die entsprechenden
Spalten bzw. Tabellen oder
Abfragen erstellt:
„SELECT“ wählt die
Spalte(n) aus, die angezeigt
werden sollen.
Datenbankanbindung mit ArcView
SQL und Arcview: Erzeugen der SQL-Abfrage
Die SQL-Abfrage auf die
Datenbank wird dann
durch Doppelklicken auf
die entsprechenden
Spalten bzw. Tabellen oder
Abfragen erstellt:
„FROM“ gibt den Namen
der Tabellen und/oder
Abfragen an, von der die
Daten stammen.
Datenbankanbindung mit ArcView
SQL und Arcview: Erzeugen der SQL-Abfrage
Die SQL-Abfrage auf die
Datenbank wird dann
durch Doppelklicken auf
die entsprechenden
Spalten bzw. Tabellen oder
Abfragen erstellt:
Unter „WHERE“ können
eigene Kriterien formuliert
werden.
Datenbankanbindung mit ArcView
SQL und Arcview: Starten der Abfrage
Bevor die Abfrage
ausgeführt wird, sollte für
die neu erstellte Tabelle
von ein sinnvoller Name
eingegeben werden.
Gestartet wird dann mit
der Schaltfläche
„Abfragen“.
Datenbankanbindung mit ArcView
SQL und Arcview: dynamische Verbindung
Das Ergebnis der Abfrage wird als neue Tabelle in ArcView
angezeigt. Diese Tabelle ist dynamisch: wenn sich die Daten in der
zugrundeliegenden Tabelle oder Abfrage in Access ändern, wird
auch der Inhalt der Tabelle in ArcView aktualisiert.
Datenbankanbindung mit ArcView
SQL und Arcview: dynamische Verbindung
Das Ergebnis der Abfrage wird als neue Tabelle in ArcView
angezeigt. Diese Tabelle ist dynamisch: wenn sich die Daten in der
zugrundeliegenden Tabelle oder Abfrage in Access ändern, wird
auch der Inhalt der Tabelle in ArcView aktualisiert.
Darin liegt der große Vorteil der Einbindung von Datenbankdaten
über SQL. Große Datenmengen können in Access gehalten werden,
bei Bedarf werden Teilmengen in ArcView angezeigt, aber nicht fest
gespeichert. Das ArcView-Projekt bleibt klein, die Anzahl an
Objekten übersichtlich, die Reaktionszeit des Programms kurz.
Datenbankanbindung mit ArcView
Teil 3: SQL und Avenue-Programmierung
Datenbankanbindung mit ArcView
Teil 3: SQL und Avenue-Programmierung
In ArcView können alle über Menüs zugänglichen Funktionen des
Programms auch mit Hilfe der Programmiersprache Avenue
beeinflusst werden. Meist stehen dabei über die Programmierung
mehr Möglichkeiten zur Verfügung, als es über die Menüs der Falls
ist.
Auch im Falle der Anbindung von Datenbanken über ODBC und
SQL ist die Programmierung über Avenue in vielen Fällen schneller
und sinnvoller als die Verwendung der eben gezeigten Befehle.
Datenbankanbindung mit ArcView
SQL und Avenue: Einstieg in die Programmierung
Einfache Abfragen auf eine Datenbank lassen sich mit sehr wenigen
Programmzeilen umsetzen. Um eine ähnliche Abfrage wie im
gezeigten Beispiel zu erstellen, sind folgende Befehle notwendig:
Datenbankanbindung mit ArcView
SQL und Avenue: Einstieg in die Programmierung
Einfache Abfragen auf eine Datenbank lassen sich mit sehr wenigen
Programmzeilen umsetzen. Um eine ähnliche Abfrage wie im
gezeigten Beispiel zu erstellen, sind folgende Befehle notwendig:
verfügbare ODBC-Datenquellen anzeigen:
ODBCConnection.GetDatasources
Hier werden natürlich nur die ODBC-Verbindungen angezeigt, die
vorher über die Systemsteuerung von Windows definiert wurden.
Datenbankanbindung mit ArcView
SQL und Avenue: Einstieg in die Programmierung
Einfache Abfragen auf eine Datenbank lassen sich mit sehr wenigen
Programmzeilen umsetzen. Um eine ähnliche Abfrage wie im
gezeigten Beispiel zu erstellen, sind folgende Befehle notwendig:
verfügbare ODBC-Datenquellen anzeigen:
ODBCConnection.GetDatasources
ODBC-Verbindung mit Datenbank herstellen:
theCON = ODBCConnection.Make("BK FO", "", "", "")
Für die Verbindung zu Access-Datenbanken ist beim Aufbau nur der
Name der Datenquelle anzugeben (hier „BK FO“). Die restlichen drei
Parameter in der Klammer werden nicht benötigt, hier genügt die
Angabe eines „leeren“ Textes.
Datenbankanbindung mit ArcView
SQL und Avenue: Einstieg in die Programmierung
Einfache Abfragen auf eine Datenbank lassen sich mit sehr wenigen
Programmzeilen umsetzen. Um eine ähnliche Abfrage wie im
gezeigten Beispiel zu erstellen, sind folgende Befehle notwendig:
verfügbare ODBC-Datenquellen anzeigen:
ODBCConnection.GetDatasources
ODBC-Verbindung mit Datenbank herstellen:
theCON = ODBCConnection.Make("BK FO", "", "", "")
SQL-Abfrage als Text erzeugen:
theSQLString = "SELECT Abfrage2.* FROM Abfrage2"
Die Schreibweise der SQL-Abfrage entspricht genau derjenigen, die
im Abfragefenster von Access selbst angezeigt werden kann, nur
wird der Strichpunkt am Ende weggelassen.
Datenbankanbindung mit ArcView
SQL und Avenue: Einstieg in die Programmierung
Einfache Abfragen auf eine Datenbank lassen sich mit sehr wenigen
Programmzeilen umsetzen. Um eine ähnliche Abfrage wie im
gezeigten Beispiel zu erstellen, sind folgende Befehle notwendig:
verfügbare ODBC-Datenquellen anzeigen:
ODBCConnection.GetDatasources
ODBC-Verbindung mit Datenbank herstellen:
theCON = ODBCConnection.Make("BK FO", "", "", "")
SQL-Abfrage als Text erzeugen:
theSQLString = "SELECT Abfrage2.* FROM Abfrage2"
Abfrage aus Abfragetext erstellen:
theQDef = QueryDef.Make(theCON)
theQDef.SetSQL(theSQLString)
Datenbankanbindung mit ArcView
SQL und Avenue: Einstieg in die Programmierung
Einfache Abfragen auf eine Datenbank lassen sich mit sehr wenigen
Programmzeilen umsetzen. Um eine ähnliche Abfrage wie im
gezeigten Beispiel zu erstellen, sind folgende Befehle notwendig:
verfügbare ODBC-Datenquellen anzeigen:
ODBCConnection.GetDatasources
ODBC-Verbindung mit Datenbank herstellen:
theCON = ODBCConnection.Make("BK FO", "", "", "")
SQL-Abfrage als Text erzeugen:
theSQLString = "SELECT Abfrage2.* FROM Abfrage2"
Abfrage aus Abfragetext erstellen:
theQDef = QueryDef.Make(theCON)
theQDef.SetSQL(theSQLString)
Datenbanktabelle durch Senden der Abfrage erstellen:
theDBTabelle = DBTable.Make(theQDef)
Datenbankanbindung mit ArcView
SQL und Avenue: Aktualisierung von Daten
Wenn eine Verbindung zur Datenbank hergestellt ist und Daten in
ArcView eingebunden wurden, können durch Änderung der Abfrage
diese Daten aktualisiert werden, ohne dass eine neue Tabelle erstellt
werden muss:
Datenbankanbindung mit ArcView
SQL und Avenue: Aktualisierung von Daten
Wenn eine Verbindung zur Datenbank hergestellt ist und Daten in
ArcView eingebunden wurden, können durch Änderung der Abfrage
diese Daten aktualisiert werden, ohne dass eine neue Tabelle erstellt
werden muss:
SQL-Abfrage neu definieren:
theSQLString =
"SELECT Abfrage2.* FROM Abfrage2 WHERE Abfrage2.ID = 6232262"
Die Abfrage entspricht dem ersten Beispiel, nur wird über den
„WHERE“-Ausdruck eine Bedingung angegeben. In diesem Fall sollen
alle Datensätze mit der ID 6232 262 ausgegeben werden.
Datenbankanbindung mit ArcView
SQL und Avenue: Aktualisierung von Daten
Wenn eine Verbindung zur Datenbank hergestellt ist und Daten in
ArcView eingebunden wurden, können durch Änderung der Abfrage
diese Daten aktualisiert werden, ohne dass eine neue Tabelle erstellt
werden muss:
SQL-Abfrage neu definieren:
theSQLString =
"SELECT Abfrage2.* FROM Abfrage2 WHERE Abfrage2.ID = 6232262"
bestehende Datenbanktabelle finden:
theDBTabelle = av.FindDoc("Table1")
Falls die bestehende Datenbanktabelle umbenannt wurde, muss hier
natürlich statt „Table1“ der entsprechende Name angegeben
werden.
Datenbankanbindung mit ArcView
SQL und Avenue: Aktualisierung von Daten
Wenn eine Verbindung zur Datenbank hergestellt ist und Daten in
ArcView eingebunden wurden, können durch Änderung der Abfrage
diese Daten aktualisiert werden, ohne dass eine neue Tabelle erstellt
werden muss:
SQL-Abfrage neu definieren:
theSQLString =
"SELECT Abfrage2.* FROM Abfrage2 WHERE Abfrage2.ID = 6232262"
bestehende Datenbanktabelle finden:
theDBTabelle = av.FindDoc("Table1")
neue Abfrage aus Abfragetext erstellen:
theQDef = theDBTabelle.GetQueryDef
theQDef.SetSQL(theSQLString)
Datenbankanbindung mit ArcView
SQL und Avenue: Aktualisierung von Daten
Wenn eine Verbindung zur Datenbank hergestellt ist und Daten in
ArcView eingebunden wurden, können durch Änderung der Abfrage
diese Daten aktualisiert werden, ohne dass eine neue Tabelle erstellt
werden muss:
SQL-Abfrage neu definieren:
theSQLString =
"SELECT Abfrage2.* FROM Abfrage2 WHERE Abfrage2.ID = 6232262"
bestehende Datenbanktabelle finden:
theDBTabelle = av.FindDoc("Table1")
neue Abfrage aus Abfragetext erstellen:
theQDef = theDBTabelle.GetQueryDef
theQDef.SetSQL(theSQLString)
Datenbanktabelle aktualisieren:
theDBTabelle.Refresh
Datenbankanbindung mit ArcView
SQL und Avenue: weitere Schritte
ArcView bietet noch zahlreiche weitere Möglichkeiten, über
Programmierung mit Avenue mit Datenbanken zusammenzuarbeiten.
Insbesondere können über den SQL-Zugriff auch die Daten in der
Datenbank selbst verändert werden.
Wenn als Datenbank allerdings Access verwendet wird, sind diese
Möglichkeiten für die meisten Anwendungen eher uninteressant.
Datenänderungen können nämlich in Access selbst wesentlich
bequemer vorgenommen werden.
Datenbankanbindung mit ArcView
SQL und Avenue: weitere Schritte
Weitere Objekte und
Methoden zur
Programmierung der
Einbindung von
Datenbanken finden
sich in der ArcViewHilfe zum Thema
„Database Access“.
Hier sind auch zahlreiche Beispielskripte
vorhanden.
Datenbankanbindung mit ArcView
Teil 4: DDE – Datenaustausch in beiden Richtungen
Datenbankanbindung mit ArcView
Teil 4: DDE – Datenaustausch in beiden Richtungen
SQL ist eine Abfragesprache, die von fast allen Datenbanksystemen
verstanden wird. Dies gilt nicht nur für Windows, sondern z. B. auch
für Datenbanken unter UNIX.
Diese Allgemeingültigkeit bringt für die Einbindung von Datenbanken
in ArcView zwei wesentliche Nachteile mit sich:
1. Der Datenaustausch kann nur von ArcView aus erfolgen. Eine
Access-Datenbank hat keine Möglichkeit, Daten an ArcView zu
senden.
2. Viele der „komfortablen“ Eigenschaften von WindowsProgrammen wie Access (z. B. Formulare) können nicht
eingebunden werden.
Datenbankanbindung mit ArcView
DDE: Definition und Grundlagen
Für den Datenaustausch zwischen ArcView und WindowsProgrammen stellt das Windows-Betriebssystem einen Mechanismus
zur Verfügung, der DDE genannt wird. Dies steht für „dynamic data
exchange“ oder „dynamischer Datenaustausch“.
Unter DDE kommunizieren zwei Anwendungen, die gleichzeitig auf
dem selben Computer ausgeführt werden. Dabei nimmt eine
Anwendung die Rolle des Datensenders an (server), die andere die
Rolle des Datenempfängers (client). Beide Anwendungen können
wechselseitig jede dieser Rollen annehmen.
Mit DDE können die beiden Anwendungen kontinuierlich Daten
austauschen. Dabei geht es nicht nur um „Daten“ im Sinne von
Zahlen oder Text, sondern auch um Programmierbefehle wie
Avenue-Skripten oder Makros.
Datenbankanbindung mit ArcView
DDE: Grundbegriffe
Unter dem DDE-Mechanismus sind drei Methoden der
Kommunikation möglich, die in den jeweiligen Programmen
verschieden umgesetzt werden:
Execute: die Client-Anwendung fordert die Server-Anwendung auf,
eine Funktion ablaufen zu lassen.
Beispiel: Access (als Client) schickt einen Befehl an ArcView (als
Server), der in ArcView ein Skript ausführt.
Datenbankanbindung mit ArcView
DDE: Grundbegriffe
Unter dem DDE-Mechanismus sind drei Methoden der
Kommunikation möglich, die in den jeweiligen Programmen
verschieden umgesetzt werden:
Execute: die Client-Anwendung fordert die Server-Anwendung auf,
eine Funktion ablaufen zu lassen.
Request: die Client-Anwendung fordert die Server-Anwendung auf,
einen Wert zurückzugeben.
Beispiel: ArcView (als Client) schickt an Access (als Server) die
Aufforderung, einen bestimmten Wert aus einer Tabelle
zurückzugeben, der dann in ArcView weiterverarbeitet wird.
Datenbankanbindung mit ArcView
DDE: Grundbegriffe
Unter dem DDE-Mechanismus sind drei Methoden der
Kommunikation möglich, die in den jeweiligen Programmen
verschieden umgesetzt werden:
Execute: die Client-Anwendung fordert die Server-Anwendung auf,
eine Funktion ablaufen zu lassen.
Request: die Client-Anwendung fordert die Server-Anwendung auf,
einen Wert zurückzugeben.
Poke: die Client-Anwendung sendet Daten an die ServerAnwendung und fordert diese auf, die Daten zu verarbeiten.
Beispiel: ArcView (als Client) sendet die Flächengröße eines Polygons
an Access (als Server) und fordert Access auf, diesen Wert in eine
Tabelle einzutragen.
Datenbankanbindung mit ArcView
DDE: Aufbau der Kommunikation
Damit die beteiligten Programme kommunizieren können, muss
zunächst von der Client-Anwendung aus die Kommunikation
gestartet werden.
In ArcView - Avenue erfolgt dies mit dem Befehl:
DDEClient.Make (ServerName, TopicName)
Dabei ist „ServerName“ der Name des Programms, „TopicName“ das
Thema. Was ein Thema im Sinne von DDE ist, wird von jeder
Anwendung unterschiedlich interpretiert. In Access ist es einfach der
vollständige Pfad zur Datenbank, die verbunden werden soll:
DDEClient.Make("MSAccess", "c:\temp\daten.mdb")
Datenbankanbindung mit ArcView
DDE: Aufbau der Kommunikation
Hier als Beispiel ein vollständiges Avenue-Skript. Falls der Aufbau
fehlschlägt, weil Access noch nicht geöffnet war, wird das Programm
gestartet und die Anweisung dann wiederholt.
theClient = DDEClient.Make("MSAccess", "c:\temp\daten.mdb")
if (theClient.HasError) then
System.Execute("C:\Programme\Microsoft Office\
Office\MSACCESS.EXE "+"c:\temp\daten.mdb")
end
theClient = DDEClient.Make("MSAccess", "c:\temp\daten.mdb")
Datenbankanbindung mit ArcView
DDE: Aufbau der Kommunikation
Analog kann die Kommunikation auch von Access aus gestartet
werden. Hier müssen die Befehle mit der Programmiersprache VBA
erstellt werden. Der entsprechende Befehl lautet:
DDEInitiate(Anwendung, Thema)
Auch hier ist unter „Anwendung“ der Name des angesprochenen
Programms einzusetzen. Bei der Kommunikation mit ArcView gibt es
in jedem Fall nur ein Thema, das als „System“ bezeichnet wird. Die
konkrete Anweisung lautet also:
DDEInitiate("Arcview", "System")
Datenbankanbindung mit ArcView
DDE: von ArcView aus ein Access-Makro starten
Als Beispiel für eine DDE-Kommunikation soll von ArcView aus in
Access ein Formular geöffnet werden. Dazu wird die ExecuteMethode verwendet.
Die Execute-Methode wird in der Avenue-Programmierung
folgendermaßen verwendet:
DDEClient.Execute (aTask)
Was ein Task ist, hängt von der jeweiligen Server-Anwendung ab. In
Access kann jeder Befehl, der als Makro verwendet wird, auch als
Task angenommen werden.
Datenbankanbindung mit ArcView
DDE: von ArcView aus ein Access-Makro starten
Hier das vollständige Beispiel als ein Avenue-Skript. Zunächst wird
die Kommunkation wie schon gezeigt gestartet.
Anschließend wird der Execute-Befehl verwendet, dabei wird in
eckigen Klammern die Makro-Anweisung für das Öffnen des
Formulars und der Formularname an Access gesandt.
Schließlich soll im Formular noch ein bestimmter Datensatz angezeigt
werden. Dazu wird ein Filter gesetzt - wieder über die entsprechende
Makro-Anweisung, und der gewünschte Wert weitergegeben.
theClient = DDEClient.Make("MSAccess", "c:\temp\daten.mdb")
theClient.Execute("[OpenForm , ""Formular1""]")
theClient.Execute("[ApplyFilter , "ID=6232262"]")
Datenbankanbindung mit ArcView
DDE: von Access aus ein Objekt in ArcView auswählen
Als zweites Beispiel - ebenfalls für die Execute-Methode - soll jetzt
von Access aus eine bestimmte Fläche in ArcView ausgewählt
werden.
Die Execute-Methode wird in VBA folgendermaßen verwendet:
DDEExecute Kanalnummer, Befehl
Dabei steht, ganz ähnlich wie in ArcView, die Kanalnummer für die
eben aufgebaute Kommunikation, und „Befehl“ für ein Anweisung,
die die jeweils andere Anwendung versteht. Bezüglich ArcView kann
„Befehl“ jede in Avenue geschriebene Anweisung sein.
Datenbankanbindung mit ArcView
DDE: von Access aus ein Objekt in ArcView auswählen
Hier das vollständige Beispiel als VBA-Funktion. Zunächst wird wieder
die Kommunikation gestartet.
Anschließend wird ein Befehl als Text erstellt - in diesem Fall die
Anweisung, ein bestimmtes Skript auszuführen (in Avenue: „av.run“).
Dabei wird wieder ein Parameter übergeben.
Schließlich wird die Execute-Methode mit dem erstellten Befehl
ausgeführt.
Kanal = DDEInitiate("Arcview", "System")
AvenueBefehl =
"av.run(""DDE.SelectShapes"", ""6232262"")"
DDEExecute Kanal, AvenueBefehl
Datenbankanbindung mit ArcView
4. ArcView Anwendertreffen
Datenbankanbindung mit ArcView
Eine PDF-Fassung dieses Vortrags und zwei ArcViewProjekte mit allen Beispielskripts können von unserer
Homepage heruntergeladen werden:
www.pan-partnerschaft.de
Herunterladen