Uppdatera, infoga och ?- tecknet i DBEXECUTE

Detta avsnitt beskriver uppdaterings- och infogningsbeteende för DBEXECUTE och användning av ?- tecknet.

Anta att du har en tom SQL-tabell med två kolumner: ID och benämning ID är primärnyckeln.

Du har följande formel i en oskyddad cell:

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

I visningsläge anger du 1 i cellen och trycker på Retur.

Eftersom tabellen är tom och inte innehåller ett ID med värdet 1 körs satsen INSERT. Satsen INSERT skapar följande rad i tabellen:

Radnummer ID Namn
1 1 1

Genom att ange 1 har du angett ID:t. Tecknet ? innebär att det här värdet anges i kolumnen Namn.

Du anger nu 2 i cellen. Eftersom ID 1 finns körs inte satsen INSERT. Istället uppdateras den rad som innehåller ID 1 enligt följande tabell:

Radnummer ID Namn
1 2 1

Eftersom satsen INSERT inte körs uppdateras inte namnkolumnen.

Nu anger du 3 i cellen. Eftersom ID 1 inte finns körs satsen INSERT och en ny rad läggs till:

Radnummer ID Namn
1 1 3
2 2 1

Värdena 1 och 3 resulterar från denna del av formeln: VÄRDEN (1,?).

Om du nu anger 4 uppdateras ID 1 igen och raden med ID 1 uppdateras.

Radnummer ID Namn
1 2 1
2 4 3

Om du anger 5 läggs ytterligare en rad till:

Radnummer ID Namn
1 1 5
2 2 1
3 4 3