Moskito als Server

Top  Previous  Next

DDEExecute

Zur Veranschaulichung dient hier MS Access als Client. Ausgangssituation sei das folgende Formular, das einer Suche in der Moskito-Auskunft über die Flurstücksnummer entspricht. Im Formular sind die Felder Flurstück, Maßstab, X-und Y-Koordinate und Gemeinde angelegt.

image5_41

Über die Drop-Down Liste Flurstück kann ein beliebiger Datensatz ausgewählt werden. Die Schaltfläche Moskitoansicht enthält die DDE-Anbindung. Durch Anklicken wird Moskito (falls nötig) gestartet, und die Pläne zum ausgewählten Flurstück werden im angegebenen Maßstab im Planfenster dargestellt. Um dies zu erreichen, ist der Schaltfläche die folgende Ereignisprozedur zugeordnet.

 

Private Sub PlanAnzeigen_Click()

 

On Error Resume Next

 

Dim Kanal, Tabellenname, I, TopicList

 

Kanal = DDEInitiate("Moskito", "System")

 

If Err Then

  Err = 0

  I = Shell("C:\Moskito\M4.cmd",1)

  If Err Then Exit Sub

  Kanal = DDEInitiate("Moskito", "System")

End If

 

DDEExecute Kanal, "wsc\n" & Maßstab & "\n#P " & X & " " & Y &

  "\n AuskunftWorkproc RELOAD\n"

 

DDETerminateAll

 

End Sub

 

 

Die erste Zeile des Programms legt fest, daß die Prozedur PlanAnzeigen beim Anklicken der Schaltfläche gestartet wird:

Private Sub PlanAnzeigen_Click()

Eine Fehlerbehandlungsroutine wird eingerichtet:

On Error Resume Next

Die benötigten Variablen werden deklariert:

Dim Kanal, I

Durch DDEInitiate wird ein Kanal geöffnet und eine Verknüpfung zu Moskito als Server hergestellt. Die Syntax der Funktion lautet DDEInitiate(“Serverapplikation”, “Thema”). Das Thema legt fest, auf welche Programmdatei zugegriffen werden soll. Moskito unterstützt das Standardthema “System”.

Kanal = DDEInitiate("Moskito", "System")

(Bei MSWord beispielsweise kann das Thema auch ein geöffnetes Dokument sein oder in Access der Name einer Datenbank.)

Ist Moskito nicht aktiv, wird dies als Fehler registriert (Zeile 5), der Fehlercode wird zurückgesetzt (Zeile 6) und Moskito gestartet (Zeile 7). Bei einem weiterem Fehler wird die Prozedur beendet (Zeile 8). Ansonsten ist Moskito jetzt aktiv und die Verknüpfung wird hergestellt (Zeile 9).

If Err Then

Err = 0

I = Shell("C:\Moskito\M4.cmd",1)

If Err Then Exit Sub

Kanal = DDEInitiate("Moskito", "System")

End If

Mit der Anweisung DDEExecute werden die Moskitofunktionen “Zoom absolut”- wsc - und “Eingeschaltete Layer nachladen ” - AuskunftWorkprocRELOAD - ausgeführt. Innerhalb der Anführungszeichen kann jede beliebige Moskitofunktion ausgeführt werden. Dabei muß die Syntax der Moskitofunktion exakt nachvollzogen werden, insbesondere müssen Leerzeichen (└┘) an den richtigen Stellen eingefügt werden wie hier im Funktionsdialog “#P└┘x-Koordinate└┘y-Koordinate”. Umgekehrt dürfen auch nicht zu viele Leerzeichen eingefügt werden wie beispielsweise nach den öffnenden Anführungszeichen.

DDEExecute Kanal,  "wsc\n" & Maßstab & "\n#P "

& X & " " & Y & "\n AuskunftWorkproc RELOAD\n"

Die Übermittlung einer Befehlszeile in Moskito (Return) wird mit “\n” nachgebildet. Um innerhalb des Moskito-Funktionsdialoges auf die aktuellen Inhalte der Access-Formularfelder Maßstab, X und Y zurückgreifen zu können, werden sie in &-Zeichen eingeschlossen. Dies geschieht außerhalb der Anführungszeichen, so dass hier zusätzliche Leerzeichen ignoriert werden.

Nach der Ausführung der Moskitobefehle werden in Zeile 12 alle Verknüpfungen geschlossen,

DDETerminateAll

und das Programm beendet.

End Sub