Klíčové slovo emptyValue

Upravit obsah stránky

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ř.:

../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 jetedy možné v těchto případech použít porovnání s klíčovým slovem:

emptyValue

Tedy například:

../datum_narozeni == emptyValue

Tento výrazvrací 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žítzápis např.:

../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:

../cislo == emptyValue

Velmi obdobná situace je u logických typů bool, kde na místo s čísly pracujeme s logickými hodnotamitrue / 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 sjiný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:

../volba == false

případně

not(../volba)

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

../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, paksamotný test na false nestačí a musíme uvést:

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

případně

../volba != valueEmpty andnot(../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.