Klíčové slovo emptyValue

V některých vlastnostech, které definují logické výrazy pro různé účely, například appear-if nebo edit-if, je někdy zapotřebí ověřit zda je určitá kolonka vyplněná či nikoli. U textů je to prosté porovnání se zápisem pro prázdný řetězec, tedy např.:

example
../jmeno == ''

Poněkud složitější situace je ale u jiných datových typů, kde například u typů date a time nemůžeme tento výraz použít, nejde o řetězec, ale spíše o číselný údaj. Pro zjištění, zda je kolonka prázdná či nikoli je tedy možné v těchto případech použít porovnání s klíčovým slovem:

syntax
emptyValue

Tedy například:

example
../datum_narozeni == emptyValue

Tento výraz vrací logické true, pokud datum narození není vyplněn. Obdobně lze tuto hodnotu použít i u číselných typů, jako je numb a curr nebo u logického typu bool. U číselných typů sice můžeme sice použít zápis např.:

example
../cislo == 0

Tady ale narazíme v případě, že číslo je nepovinné (a většina čísel nebývá povinná) a pak může uživatel hodnotu prostě smazat s tím, že do databáze se uloží null. Tento stav ověříme jedině pomocí klíčového slova emptyValue:

example
../cislo == emptyValue

Velmi obdobná situace je u logických typů bool, kde na místo s čísly pracujeme s logickými hodnotami true / false, kde v případě, že v databázi z nějakého důvodu není uložena hodnota, ted jde o výskyt null, je v dokumentu obsahem takového uzlu prázdný řetězec. A opět platí, že řetězec není možné ve výrazech porovnávat s jinými typy než jsou opět řetězce a nemáme pro ověření prázdného pole jinou možnost než využit srovnání s klíčovým slovem emptyValue. U logických typů je ale potřeba počítat s jednou věcí. Prázdná hodnota je při běžném odkazu převáděna na logické false, takže např. výraz:

example
../volba == false

případně

example
not(../volba)

- vrací hodnotu true jak v případě, že je hodnota skutečně false, tak i v případě, že je prázdná. Naproti tomu výraz:

example
../volba == valueEmpty

- obě situace rozliší a v případě, že hodnota chybí vrací true, zatímco v případě, že je hodnota uvedena(ať již true nebo false) vrací false. Pokud bychom chtěli výraz vázat čistě na to, že je hodnota uvedena a že jde o false, pak samotný test na false nestačí a musíme uvést:

example
../volba != valueEmpty and ../volba == false

případně

example
../volba != valueEmpty and not(../volba)

Klíčové slovo emptyValue však není určeno pro zápis do výrazů pro filtry, zde se pracuje s obvyklým is [not] null.