předchozí lekce (1.25) | obsah kurzu | následující lekce (1.27) |
Výrazy v jazycích xBase mohou vracet výsledky logického, řetězcového nebo numerického typu. Pro přímé vyhodnocování obsahu databází lze použít volání funkcí DbfEvalLog pro získání logického výsledku, DbfEvalNum pro získání numerického výsledku a DbfEvalStr pro získání řetězcového výsledku. Parametrem uvedených funkcí je vždy řetězec obsahující výraz zadaný v syntaxi jazyků xBase.
Výrazy jazyků xBase se zadávají jako řetězce, které obsahují přímo požadovaný
výraz. Ve výrazech se používají funkce a jména položek databáze spojená operátory. Ve
výrazech se při zápisu jmen funkcí a názvů databázových položek nerozlišují velká a malá
písmena. Pro spojování výrazů se používá následujících operátorů:
.AND. a zároveň
.OR. nebo
.NOT. negace
Nejjednodušší jsou logické výrazy, ve kterých většinou zjišťujeme obsah položek
databáze. Pokud zadáte chybný výraz, bude vrácena hodnota False.
Sub Test
'cena je větší, než 100
Log = DbfEvalLog("CENA>100")
'cena je větší než 100 a zároveň menší nebo rovna 200
Log = DbfEvalLog("CENA>100.AND.CENA<=200")
'cena je menší než 100 nebo obsah položky TYP je DISK
Log = DbfEvalLog("CENA<100.OR.TYP='DISK'")
'první tři písmena obsahu položky NAZEV jsou FAX
Log = DbfEvalLog("SUBSTR(NAZEV,1,3)= 'FAX'")
End Sub
Jak jste si jistě všimli, lze jedním vyhodnocením kontrolovat obsah několika položek,
navíc odlišného typu. Pozor si budete muset dávat, pokud budete chtít zadat obsah
řetězce. Použít budete muset kombinaci znaků apostrof a uvozovka. Viz výše uvedený
příklad.
Podobným způsobem lze vyhodnocovat i výrazy vracející numerické výsledky. Pokud
zadáte chybný výraz, bude vrácena nulová hodnota.
'hodnota položky CENA
Writeln(DbfEvalNum("CENA"))
'výpočet ceny včetně DPH
Writeln(DbfEvalNum("CENA/100*(100+DPH)"))
'délka databázové položky NAZEV
Writeln(DbfEvalNum("LEN(NAZEV)"))
'pozice výskytu znaku "A" v položce NAZEV
Writeln(DbfEvalNum("AT('A',NAZEV)"))
Lze také samozřejmě vyhodnocovat výrazy obsahující výsledek typu řetězec. Pokud
zadáte chybný výraz bude vrácen prázdný řetězec.
'hodnota položky NAZEV
Writeln(DbfEvalStr("NAZEV"))
'prvních deset znaků položky NAZEV
Writeln(DbfEvalStr("SUBSTR(NAZEV,1,10)"))
'obsah položky NAZEV převedený na velká písmena
Writeln(DbfEvalStr("UPPER(NAZEV)"))
'cena včetně DPH převedená na řetězec
Writeln(DbfEvalStr("STR(CENA/100*(100+DPH),12,2)"))
Jak již bylo uvedeno, vrací chybně uvedený výraz svou implicitní hodnotu. Stane se tak
v případě, že je uveden například chybný výraz xBase, neexistující jméno položky
databáze a podobně. Implicitní hodnota je vrácena pokud použijete volání výše
uvedených funkcí a nebudete mít v aktuální datové oblasti otevřenou žádnou databázi.
Pokud budete chtít prověřit správnost zadaného výrazu, můžete použít funkci
DbfEvalTest, která výraz nejen prověří, ale současně také vrací typ použitého výrazu.
předchozí lekce (1.25) | obsah kurzu | následující lekce (1.27) |