Bearbeiten von DB-Daten
In diesem Abschnitt:
•Informationen zu OriginalRowSet (Originalzeilengruppe)
•Bearbeiten von DB-Daten in Tabellen und anderen Steuerelementen
•Aktualisieren, Einfügen, Anhängen und Löschen von Nodes
•Die Aktion "DB ausführen" und die Variable $MT_DBExecute_Result
•Primärschlüssel in MobileTogether Designer
Informationen zu OriginalRowSet (Originalzeilengruppe)
Damit Daten bearbeitet und gespeichert werden können, muss die Struktur der Seitenquelle auch ein OriginalRowSet-Element enthalten, das eine Kopie des Elements RowSet ist. Die Originaldaten werden im Element OriginalRowSet gespeichert, während bearbeitete Daten im Element RowSet gespeichert werden. Wenn die Seitenquelle gespeichert wird, wird der Unterschied zwischen der OriginalRowSet- und der RowSet-Struktur berechnet und die Seitenquelle wird anhand dieser Unterschiede aktualisiert. Wenn die Änderung erfolgreich durchgeführt werden konnte, so werden die geänderten Daten in OriginalRowSet kopiert, sodass OriginalRowSet die neu gespeicherten DB-Daten enthält und der Vorgang kann wiederholt werden.
Beachten Sie die folgenden Punkte:
•Das Element OriginalRowSet wird in der Struktur der Datenbank-Seitenquelle standardmäßig nicht erstellt. Um es zu erstellen, klicken Sie mit der rechten Maustaste auf den Root Node der Seitenquelle und schalten Sie den Befehl Originalzeilengruppe erstellen ein.
•Der Befehl Originalzeilengruppe erstellen ist für Root Nodes vom Typ "Datenbank" (DB) aktiv. Es handelt sich um einen Ein/Aus-Befehl, der eine OriginalRowSet-Datenstruktur, die die Originaldaten der Seitenquelle enthält, erstellt bzw. entfernt.
•Bis zu dem Zeitpunkt, zu dem die geänderten Daten in der DB gespeichert werden, werden die Originaldaten der DB in der OriginalRowSet-Struktur beibehalten. Auf diese Art wird sichergestellt, dass die Original-Datenbankdaten in der Struktur weiterhin verfügbar sind.
•Um die Originaldaten einer geänderten, aber noch nicht gespeicherten DB-Zeile abzurufen, verwenden Sie die XPath-Funktion mt-db-original-row.
Bearbeiten von DB-Daten in Tabellen und anderen Steuerelementen
Um ein Steuerelement zu erstellen, in dem DB-Daten bearbeitet werden können, gehen Sie folgendermaßen vor:
•Verwenden Sie ein Steuerelement, das vom Endbenutzer bearbeitet werden kann, wie z.B. eine Auswahlliste oder ein Bearbeitungsfeld. Ein Steuerelement "Beschriftung" kann z.B. nicht bearbeitet werden. Wenn eine Tabelle verwendet wird, um sich wiederholende Zeilen zu generieren, fügen Sie die editierbaren Steuerelemente innerhalb der Zellen der Tabelle hinzu. Ein Anleitungsbeispiel dazu finden Sie im Abschnitt Die Tabelle "Edit Offices" im Datenbank und Diagramme-Tutorial. Lesen Sie auch die Beschreibung zum Arbeiten mit Tabellen.
•Erstellen Sie für das Steuerelement einen Seitenquellen-Link zum Seitenquellen-Node, der bearbeitet werden soll. Ziehen Sie dazu den Seitenquellen-Node auf das Steuerelement.
•Wenn Sie eine Tabelle mit sich wiederholenden Zeilen verwenden, verwenden Sie die Option zum automatischen Inkludieren von Anhängen/Löschen-Steuerelementen bei Erstellung der Tabelle (siehe Abbildung unten).
Der Vorteil der Verwendung einer Tabelle mit sich wiederholenden Zeilen, die mit den sich wiederholenden Row-Elementen eine DB-Seitenquelle verknüpft sind, ist, dass automatisch eine DB-Zeile hinzugefügt wird, wenn eine Tabellenzeilen hinzugefügt wird. Nähere Informationen finden Sie unter der Beschreibung zum Arbeiten mit Tabellen. Beispiele dazu finden Sie im Datenbank und Diagramme-Tutorial und in den MobileTogether Designer DB-Beispieldateien.
Aktualisieren, Einfügen, Anhängen und Löschen von Nodes
Mit Hilfe der Daten aktualisieren-Aktionen können Nodes in Datenbanken bearbeitet werden, wenn ein Seiten- oder Steuerelementereignis ausgelöst wird.
•Node(s) aktualisieren: Aktualisiert einen oder mehrere Nodes, wie z.B. eine DB-Spalte mit einem oder mehreren Werten, der bzw. die durch den XPath-Ausdruck der Aktion generiert oder abgerufen wurden.
•Node(s) einfügen: Fügt vor einem durch den XPath-Ausdruck des Node der Aktion ausgewählten Node einen oder mehrere Nodes wie z.B. DB-Zeilen ein. Auch die Struktur und der Inhalt des eingefügten Node können definiert werden.
•Node(s) anhängen: Hängt einen oder mehrere Nodes wie z.B. DB-Zeilen als erstes oder letztes Child eines durch den XPath-Ausdruck einer Aktion ausgewählten Node an. Auch die Struktur und der Inhalt des angehängten Node können definiert werden.
•Node(s) löschen: Löscht einen oder mehrere durch den XPath-Ausdruck einer Aktion definierte(n) Nodes wie z.B. DB-Zeilen.
Anmerkung: | Diese Aktionen werden an lokalen Datenstrukturen ausgeführt. Die geänderte Datenstruktur muss jedoch erst in der DB gespeichert werden, damit die Änderungen des Endbenutzers an die DB übergeben werden. |
Die Aktion "DB ausführen" und die Variable $MT_DBExecute_Result
Mit Hilfe der Aktion "DB ausführen" können Sie SQL-Anweisungen wie INSERT, APPEND, UPDATE und DELETE anwenden, um eine DB zu bearbeiten. Die Aktion unterscheidet sich auf eine wichtige Art von den im vorigen Abschnitt aufgelisteten Aktionen: Die durch DB ausführen-Anweisungen erstellten Änderungen werden sofort in der Datenbank gespeichert. Bei den im vorigen Abschnitt aufgelisteten Aktionen müssen die Änderungen zuerst mit einer Speichermethode gespeichert werden, damit Sie in der DB übernommen werden.
Nachdem die Aktion "DB ausführen" eine SQL-Anweisung ausgeführt hat, speichert sie das Ergebnis in einer Variablen namens $MT_DBExecute_Result. Diese Variable kann anschließend an einer beliebigen Stelle im Projekt in XPath-Anweisungen verwendet werden. Folglich können Strukturen und Daten aus einer DB (optional auf Basis von Parametern) ausgewählt, anschließend im Zwischenspeicher behalten, geändert und an anderen Stellen eingefügt werden.
Primärschlüssel in MobileTogether Designer
Primärschlüssel in Datenbanken werden normalerweise automatisch inkrementiert. Wenn das der Fall ist und eine neue Spalte zur Tabelle hinzugefügt wird, wird die Primärschlüsselspalte der hinzugefügten Zeile automatisch inkrementiert. Wenn in MobileTogether Designer eine Tabelle abgerufen wird, werden die Primärschlüssel- und Autoinkrementierungsinformationen automatisch abgerufen und im Fenster "Seitenquellen" angezeigt (siehe Abbildung unten).
Wenn diese Informationen nicht automatisch abgerufen werden konnten, enthält das Kontextmenü von Struktur-Nodes Ein/Aus-Befehle, mit denen Sie Nodes korrekt entsprechend kennzeichnen können (siehe Abbildung unten).
Wenn die Primärschlüsselspalte nicht automatisch inkrementiert wird, müssen neue Primärschlüsselwerte für angehängte Zeilen automatisch mit Hilfe eines XQuery-Ausdrucks generiert werden, da Primärschlüsselspalten nicht bearbeitet werden können. Der XQuery-Ausdruck wird über den Kontextmenübefehl Beim Laden auf Vorhandensein überprüfen (XPath-Wert) des Primärschlüssel-Node eingefügt. Im Beispiel unten wird mit dem folgenden XQuery-Ausdruck ein neuer Wert für den Primärschlüssel @id generiert:
let $all := $DB1/DB/RowSet/Row/@id
let $ids := remove($all, index-of($all, ""))
let $id := if (empty($ids)) then 1 else max($ids) + 1
return $id