Aktualisieren, Einfügen und ? -Zeichen in DBEXECUTE

In diesem Abschnitt wird das Verhalten von DBEXECUTE beim Aktualisieren und Einfügen sowie die Verwendung des Zeichens ? beschrieben.

Angenommen, Sie haben eine leere SQL-Tabelle mit zwei Spalten: ID und Name. ID ist der Primärschlüssel.

Sie haben folgende Formel in einer ungeschützten Zelle:

=DBEXECUTE("configdb", "SELECT items.id,items.name FROM items WHERE ID=1","INSERT into items (ID,Name) VALUES (1,?)")

Geben Sie im Ansichtsmodus in die Zelle den Wert 1 ein, und drücken Sie die Eingabetaste.

Da die Tabelle leer ist und keine ID mit dem Wert 1 enthält, wird die INSERT-Anweisung ausgeführt. Die INSERT-Anweisung erstellt folgende Zeile in der Tabelle:

Zeilennummer ID Name
1 1 1

Durch Eingabe von 1 haben Sie die ID angegeben. Das Zeichen ? führt dazu, dass dieser Wert in die Spalte Name eingetragen wird.

Sie geben nun 2 in die Zelle ein. Da ID 1 vorhanden ist, wird die INSERT-Anweisung nicht ausgeführt. Stattdessen wird die Zeile mit ID 1 aktualisiert, wie in der folgenden Tabelle angezeigt wird:

Zeilennummer ID Name
1 2 1

Da die INSERT-Anweisung nicht ausgeführt wird, wird die Spalte Name nicht aktualisiert.

Geben Sie nun in der Zelle den Wert 3 an. Da ID 1 nicht vorhanden ist, wird die INSERT-Anweisung ausgeführt und eine neue Zeile hinzugefügt:

Zeilennummer ID Name
1 1 3
2 2 1

Die Werte 1 und 3 ergeben sich aus dem folgenden Teil der Formel: VALUES (1,?).

Wenn Sie nun 4 angeben, ist ID 1 erneut vorhanden und die Zeile mit ID 1 wird aktualisiert.

Zeilennummer ID Name
1 2 1
2 4 3

Wenn Sie 5 angeben, wird eine weitere Zeile hinzugefügt:

Zeilennummer ID Name
1 1 5
2 2 1
3 4 3