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ý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ř.:
../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 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: 
 
../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, pak samotný 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.