Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Wörterbuch per Webservice

XML und Webservices sind die Zauberwörter der EDV-Branche in den letzten Jahren. Damit auch der geneigte Access-Entwickler von diesem Boom profitieren kann, erfahren Sie in dem vorliegenden Beitrag, wie Sie mit wenigen Zeilen Code einen Webservice benutzen können.

Beispieldatenbank

Die Beispieldatenbank enthält ein Formular zur Eingabe des zu übersetzenden Wortes sowie zur Auswahl des Übersetzungsmodus. Durch die Betätigung der Schaltfläche Übersetzen werden zwei Funktionen aus dem Modul mdlWebservices aufgerufen, die die gewünschte Übersetzung ermitteln.

Vorbereitungen

Um in VBA auf einen Webservice zugreifen zu können, sind prinzipiell keine Vorbereitungen zu treffen. Allerdings erhalten Sie als Antwort auf eine Anfrage an einen Webservice, der nicht per SOAP erfolgt, in der Regel ein XML-Dokument, dass Sie auswerten müssen. Dazu benötigen Sie die entsprechende Bibliothek von Microsoft namens Microsoft XML x.0, die Sie durch Setzen eines entsprechenden Verweises verfügbar machen.

Funktionen zum Aufrufen des Webservice

Die Funktion Uebersetzen erwartet als Parameter den Übersetzungsmodus und das zu übersetzende Wort. Der Übersetzungsmodus ist ein String der Form GermanTOEnglish oder EnglishTOGerman. In der Funktion wird zunächst ein XML-Dokument deklariert. Anschließend wird die Anfrage zusammengesetze, die an den Webservice gesendet werden soll. Eine solche Anfrage ist prinzipiell ein HTTP-Request mit entsprechenden Parametern. Wie der Request für den jeweils verwendeten Dienst aussieht, können Sie der jeweiligen Beschreibung des Dienstes im Internet entnehmen.

Im vorliegenden Fall finden Sie Detailinformationen hier:

http://www.webservicex.com/TranslateService.asmx?op=Translate

Dies ist auch gleichzeitig das Grundgerüst des Requests. Diesem hängen Sie noch den Übersetzungsmodus in Form des Parameters LanguageMode und das zu übersetzende Wort als Text an.

Nach ein paar Einstellungen für das XML-Dokumentobjekt wird die Abfrage mit der Load-Methode abgesetzt. Das Ergebnis wird, soweit vorhanden, in das XML-Dokumentobjekt geschrieben. Nach der Überprüfung, ob ein Ergebnis vorhanden ist, wird in das XML-Dokument in der Funktion UebersetzungAusXML ausgewertet.

Public Function Uebersetzen(strUebersetzungsmodus As String, strText As String)

    Dim MSXML As New MSXML2.DOMDocument

    Dim strAnfrage As String

    strAnfrage = "http://www.webservicex.com/TranslateService.asmx/" _

        & "Translate?LanguageMode=" & strUebersetzungsmodus & "&Text=" & strText

    With MSXML

        .async = False

        .preserveWhiteSpace = False

        .validateOnParse = True

        .resolveExternals = False

    End With

    If MSXML.Load(strAnfrage) = True Then

        Uebersetzen = UebersetzungAusXML(MSXML)

    Else

        Uebersetzen = "#Fehler#"

    End If

End Function

Die Funktion UebersetzungAusXML besteht nur aus einem Befehl. Der Grund ist, dass das zurückgegebene XML-Dokument seinerseits recht klein ist und nur ein Element enthält:

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://www.webservicex.net/">Example</string>

 

Die Funktion liest den Inhalt des einzigen Knoten dieses Dokuments mit der Eigenschaft Text aus und gibt ihn an die aufrufende Funktion zurück.

Public Function UebersetzungAusXML(MSXML As MSXML2.DOMDocument) As String

    UebersetzungAusXML = MSXML.documentElement.Text

End Function

Formular zur komfortablen Übersetzung

Schließlich können Sie sich noch ein kleines Formular basteln, mit dem Sie komfortabel Übersetzungen abfragen können. Wer möchte, erstellt sich noch eine Tabelle dazu, in der die jeweils abgefragten Worte eingetragen werden, damit diese beim nächsten Mal nicht extra über das Web abgerufen werden müssen (siehe Abbildung 1).

Übersetzungen in Access per Webservice

Die Schaltfläche cmdUebersetzen löst beim Klicken die folgende Ereignisprozedur aus:

Private Sub cmdUebersetzen_Click()

    If Nz(Me.txtZuUebersetzendesWort, "") = "" Then

        MsgBox "Bitte geben Sie das zu übersetzende Wort ein."

        Me.txtZuUebersetzendesWort.SetFocus

        Exit Sub

    End If

    If Me.cboUebersetzungsmodi = 0 Then

        MsgBox "Bitte wählen Sie den Übersetzungsmodus aus."

        Me.cboUebersetzungsmodi.SetFocus

        Exit Sub

    End If

    DoCmd.Hourglass True

    Me.txtUebersetztesWort = Uebersetzen(Me.cboUebersetzungsmodi, _

        Me.txtZuUebersetzendesWort)

    DoCmd.Hourglass False

End Sub

© 2003-2015 André Minhorst Alle Rechte vorbehalten.