DB ausführen
Bei Auslösung des Ereignisses führt die Aktion "DB ausführen" die SQL-Anweisung der Aktion an der in der Auswahlliste Verbindung ausgewählten Datenquelle aus. In dieser Auswahlliste sind alle Datenquellen des Projekts aufgelistet. Sie haben hier auch die Möglichkeit, eine zusätzliche Datenbankverbindung speziell für die Aktion "DB ausführen" zu definieren. Wenn das Kontrollkästchen Ergebnisse speichern in $MT_DBExecute_Result aktiviert ist, werden die Ergebnisse in der Variablen $MT_DBExecute_Result gespeichert. Diese Variable kann anschließend an einer anderen Stelle der Seite in einem XPath-Ausdruck verwendet werden, um das Ergebnis der Aktion "DB ausführen" bereitzustellen.
Fehlerverarbeitung
Mit der Option Bei Fehler können Sie definieren, wie bei Auftreten eines Fehlers vorgegangen wird. Da die Fehlerbehandlung für diese Aktion genau definiert werden kann, werden Fehler in solchen Aktionen (für die eine Fehlerbehandlung vorgesehen ist) als Warnungen und nicht Fehler behandelt. Der Vorteil davon ist, dass Sie Fehler bei Aktionen, für die bereits eine Fehlerbehandlung definiert wurde, nicht überprüfen müssen. Die folgenden Fehlerbehandlungsoptionen stehen zur Verfügung:
•Skript abbrechen: Sobald ein Fehler auftritt, werden alle nach diesem Ereignis durchzuführenden Aktionen beendet. Dies ist das Standardverhalten bei Auftreten eines Fehlers. Wenn Sie möchten, dass auch bei einem Fehler fortgefahren werden soll, wählen Sie entweder die Option Weiter oder Throw aus.
•Weiter: Die Aktionen werden nicht beendet. Sie können stattdessen auswählen, was in jedem der beiden Fälle (kein Fehler (Bei Erfolg) oder Auftreten eines Fehlers (Bei Fehler)) geschehen soll. So kann z.B. ein Meldungsfeld definiert werden, das den Benutzer darüber informiert, ob eine Seite erfolgreich geladen werden konnte oder nicht.
•Throw: Wenn ein Fehler aufgetreten ist, wird mit dieser Option eine Ausnahme ausgelöst, die in der Variablen der Try/Catch-Aktion gespeichert wird. Mit dem Catch-Teil der Try/Catch-Aktion wird definiert, welche Aktion bei Auftreten eines Fehlers durchgeführt werden soll. Wenn kein Fehler auftritt, wird die nächste Aktion verarbeitet. Nähere Informationen dazu finden Sie im Abschnitt zur Aktion "Try/Catch Ausnahme".
Nähere Informationen zur Verwendung der Aktion finden Sie im Abschnitt Seitendesign | Datenbank | Die Aktion "DB ausführen".
Anmerkung: | Die Aktion DB ausführen dient zur Interaktion mit Daten in Datenbank-Seitenquellen. Sie ist nicht die ideale Methode, um Daten anzuzeigen. Wenn Sie Daten aus einer Datenbank-Seitenquelle anzeigen möchten, fügen Sie ein Steuerelement in das Design ein, das mit einer Seitenquelle verbunden ist. Informationen dazu finden Sie in den Abschnitten über Steuerelemente und Seitenquellen. In den Tutorials finden Sie praktische Beispielanleitungen zur Anzeige von Seitenquellendaten. |
Die SQL-Anweisung
Um die SQL-Anweisung einzugeben oder zu bearbeiten, klicken Sie auf die Schaltfläche Zusätzliches Dialogfeld. Daraufhin wird das Dialogfeld "SQL-Anweisung bearbeiten" geöffnet (Abbildung unten). Das Root-Objekt im unteren Bereich des Dialogfelds wird automatisch ausgewählt und basiert auf der in der Auswahlliste "Verbindung" getroffenen Auswahl. Das Feld Root-Objekt kann nicht bearbeitet werden. Vergewissern Sie sich, bevor Sie fortfahren, dass dies das gewünschte Root-Objekt ist.
Festgelegte Anweisung mit optionalen Parametern
Um eine SQL-Anweisung einzugeben, aktivieren Sie die Option Festgelegte Anweisung mit optionalen Parametern und geben Sie die SQL-Anweisung ein. Die Verwendung von Parametern in der SQL-Anweisung ermöglicht mehr Flexibilität. So wird z.B. in der Abbildung oben anstelle eines festgelegten Werts für die WHERE-Klausel ein Parameterwert Maker zur Angabe des Werts eines Node in einer XML-Seitenquelle verwendet. In der ersten Zeile unten wird ein festgelegter Wert verwendet; in der zweiten Zeile wird der Parameter Maker verwendet.
WHERE Manufacturer= 'BMW'
WHERE Manufacturer= :Maker
Um einen Parameter zu verwenden, setzen Sie in der gewünschten SQL-Anweisung einen Doppelpunkt (:) vor den Parameternamen. Sobald Sie den ersten Buchstaben nach dem Doppelpunkt eingeben, wird im Bereich "Parameter" ein Eintrag für den Parameter erstellt. Geben Sie als nächstes im Bereich "Parameter" einen XPath-Ausdruck ein, der den Wert des Parameters liefert. Sie können beliebig viele Parameter eingeben.
Anmerkung: | In der SQL-Anweisung werden Spalten- und Tabellennamen aus der Quelldatenbank verwendet, da die SQL-Anweisung eine direkte Abfrage an der DB durchführt. Im XPath-Ausdruck von Parametern müssen Sie jedoch den Namen von Nodes in der Seitenquellstruktur verwenden (Row, RowSet, usw.), da die für das Design verwendeten Werte in diesen Strukturen gespeichert sind. |
Mit XPath erstellte Anweisung
Sie können eine SQL-Anweisung auch mit Hilfe von XPath erstellen. Wählen Sie die Option Mit XPath erstellte Anweisung aus und geben Sie den XPath-Ausdruck, der die erforderliche SQL-Anweisung generiert, ein. Der Vorteil dabei ist, dass Sie dadurch größere Flexibilität beim Erstellen der SQL-Anweisung haben. So können Sie z.B. Designstruktur-Nodes, andere XPath-Konstrukte und den Input von Endbenutzern integrieren, um Teile der SQL-Anweisung zu berechnen und zu generieren.
Einmal oder für jeden Node ausführen
Die SQL-Anweisung kann einmal an der Datenquelle oder an allen Nodes einer benutzerdefinierten Node-Gruppe ausgeführt werden. Bei Auswahl der zweiten Option müssen Sie einen XPath-Ausdruck eingeben, der die Node-Gruppe generiert. Anschließend wird die SQL-Anweisung für jeden Node in dieser Node-Gruppe ausgeführt. Außerdem können Sie den Wert des aktuellen Node der Node-Gruppe mit Hilfe der Variablen $MT_TargetNode abfragen. Diese Variable kann z.B. in der Definition eines in der SQL-Anweisung verwendeten Parameters verwendet werden (siehe "SQL-Anweisungen mit Parametern" oben).
Die Variable $MT_DBExecute_Result
Die Node-Gruppe bzw. ein anderer von der (SQL-Anweisung der) Aktion "DB ausführen" zurückgegebener Wert wird in der vordefinierten MobileTogether Designer Variablen $MT_DBExecute_Result gespeichert. In dieser Variablen wird das Ergebnis der letzten "DB ausführen"-Aktion des Projekts gespeichert. Diese Variable kann an anderen Stellen im Projekt in XPath-Ausdrücken verwendet werden.
Wenn das Ergebnis der DB ausführen-Aktion ein Nodeset ist, können Sie ein Element konstruieren und das Nodeset als Child des konstruierten Elements einfügen. Alternativ dazu können Sie das Nodeset mit Hilfe der Funktion serialize() folgendermaßen serialisieren: serialize($MT_DBExecute_Result). Die beiden XPath-Ausdrücke sind in der Abbildung unten rot unterstrichen.
Wenn Sie einen bestimmten Node im Nodeset aufrufen möchten, können Sie diesen mit einem XPath-Ausdruck aufrufen. In der DB ausführen-Aktion in der Abbildung oben sehen Sie ein Beispiel dafür. Angenommen, die SELECT-Anweisung gibt das folgende Nodeset zurück:
<DB>
<RowSet>
<Row Model="Z3 COUPE 2014"/>
<Row Model="Z3 COUPE 2015"/>
<Row Model="Z3 COUPE 2016"/>
<Row Model="Z4 3.0 SI COUPE 2014"/>
<Row Model="Z4 COUPE 2015"/>
</RowSet>
</DB>
•Um den Modellnamen des ersten Autos im zurückgegebenen Nodeset aufzurufen, müsste der XPath-Ausdruck folgendermaßen lauten: $MT_DBExecute_Result/DB/RowSet/Row[1]/@Model.
•Um die Zeile des Autos mit dem Jahr 2016 in seinem Modellnamen aufzurufen, müsste der XPath folgendermaßen lauten: $MT_DBExecute_Result/DB/RowSet/Row[@Model[contains(. , '2016')]].
MobileTogether-Erweiterungsfunktionen
MobileTogether enthält eine Reihe von XPath-Erweiterungsfunktionen, die speziell für die Verwendung in MobileTogether-Designs erstellt wurden. Einige davon können bei bestimmten Aktionen sehr nützlich sein. So erhalten Sie etwa mit mt-available-languages() die Sprachen, in denen die Lösung zur Verfügung steht. Diese Funktion könnte z.B. mit der Aktion Meldungsfeld verwendet werden. Wenn eine Funktion für diese Aktion besonders relevant ist, ist sie unten aufgelistet. Eine vollständige Liste aller Erweiterungsfunktionen und mit Beschreibungen finden Sie im Kapitel MobileTogether-Erweiterungsfunktionen.
mt-available-db-connection-names()
mt-db-any-changed-fields()
mt-db-any-changed-rows()
mt-db-deleted-original-fields()
mt-db-deleted-original-rows()
mt-db-file-path()
mt-db-modified-fields()
mt-db-modified-rows()
mt-db-new-fields()
mt-db-new-rows()
mt-db-original row()
mt-external-error-code()
mt-external-error-text()