Aktualizacja, wstawianie i znak ? w DBEXECUTE

W tym temacie opisano funkcje wstawiania i aktualizacji formuły DBEXECUTE oraz zastosowanie znaku ? .

Powiedzmy, że mamy pustą tabelę SQL o nazwie Items, która zawiera dwie kolumny: Identyfikator i Nazwa. Identyfikator jest kluczem podstawowym.

W niechronionej komórce znajduje się następująca formuła:

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

W trybie widoku należy wpisać 1 w tej komórce i nacisnąć klawisz Enter.

Ponieważ tabela jest pusta i nie zawiera identyfikatora o wartości 1, zostaje wykonana instrukcja Insert. Instrukcja ta tworzy następujący wiersz w tabeli:

Numer wiersza ID Nazwa
1 1 1

Wprowadzając wartość 1, użytkownik określił identyfikator. Znak ? sprawia, że wartość ta zostaje wprowadzona w kokumnie Nazwa.

Teraz wpisz wartość 2 w komórce. Jako że istnieje już identyfikator 1, nie zostanie wykonana instrukcja Insert. Zamiast tego wiersz zawierający identyfikator 1 zostanie zaktualizowany w sposób pokazany w poniższej tabeli:

Numer wiersza ID Nazwa
1 2 1

Ponieważ instrukcja Insert nie została wykonana, kolumna Nazwa nie została zaktualizowana.

Teraz wpisz wartość 3 w komórce. Jako że nie ma identyfikatora 1, następuje wykonanie instrukcji Insert i dodanie nowego wiersza:

Numer wiersza ID Nazwa
1 1 3
2 2 1

Wartości 1 i 3 są wynikiem tej części formuły: VALUES (1,?).

Gdyby teraz wpisano 4, identyfikator 1 znów byłby obecny i nastąpiłaby aktualizacja wiersza zawierającego identyfikator 1.

Numer wiersza ID Nazwa
1 2 1
2 4 3

Jeśli zostanie wpisana wartość 5, nastąpi dodanie kolejnego wiersza:

Numer wiersza ID Nazwa
1 1 5
2 2 1
3 4 3