Aktualizovat, vložit a znak ? ve funkci DBEXECUTE

Toto téma popisuje chování při aktualizaci a vložení funkce DBEXECUTE a použití znaku ? .

Předpokládejme, že máte prázdnou tabulku SQL s názcem Položky, která má dva sloupce: ID a Název. ID je primární klíč.

Tento vzorec máte v nechráněné buňce:

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

V režimu Zobrazení zadáte do buňky hodnotu 1 a stisknete klávesu Enter.

Protože tabulka je prázdná a neobsahuje ID s hodnotou 1, provede se příkaz Vložit. Příkaz Vložit vytvoří tento řádek v tabulce:

Číslo řádku ID Název
1 1 1

Zadáním hodnoty 1 jste určili ID. Znak ? způsobí, že tato hodnota bude zadána do sloupce Název.

Nyní zadejte do buňky hodnotu 2. Vzhledem k tomu, že ID 1 je přítomno, příkaz Vložit se neprovede. Místo toho je aktualizován řádek obsahující ID 1 podle toho, jak je zobrazen v této tabulce:

Číslo řádku ID Název
1 2 1

Vzhledem k tomu, že příkaz Vložit není proveden, sloupec Název není aktualizován.

Nyní zadejte do buňky hodnotu 3. Vzhledem k tomu, že ID 1 není k dispozici, provede se příkaz Vložit a přidá se nový řádek:

Číslo řádku ID Název
1 1 3
2 2 1

Hodnoty 1 a 3 jsou výsledkem této části vzorce: VALUES (1,?).

Pokud nyní zadáte hodnotu 4, ID 1 je znovu přítomno a řádek obsahující ID 1 se aktualizuje.

Číslo řádku ID Název
1 2 1
2 4 3

Zadáte-li hodnotu 5, bude přidán další řádek:

Číslo řádku ID Název
1 1 5
2 2 1
3 4 3