Nová možnost pro vzorce z řetězce!

Automaticky přeloženo z Deepl

Jako vývojáři 4D jste již pravděpodobně vytvořili a používali vzorce. Lze je vytvořit pomocí dvou příkazů, Formula a Formula from string. Druhý jmenovaný byl právě v 4D V20 R3 vylepšen, takže jej lze používat bez omezení z komponent!

Vzorce a kontext provádění

Vzorce, ať už je jejich obsah jakýkoli, jsou úzce spjaty s databází, ze které jsou vytvořeny. Při jejich volání se vždy provádějí v kontextu, ve kterém byly vytvořeny.

To platí pro příkazy 4D a funkce jako Structure file, ale také pro vzorce založené na volání metod.

Jednoduchý příklad

Představme si metodu FormatedCurrentDate, která vrací formátovaný řetězec.

#DECLARE($format : Integer)->$formatedDate : Text
$formatedDate:=String(Current date; $format)

Tuto metodu lze použít v rámci vzorce, který lze vytvořit tímto způsobem:

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)")

V tomto případě vzorec podle očekávání vrátí formátované datum.

$date:=$formula.call()

Pokud se metoda a vzorec nacházejí ve stejném prostředí, je vše v pořádku… pokud se však tato nesdílená metoda nachází v hostitelské databázi a vzorec, který se snaží tuto metodu použít, je vytvořen v rámci komponenty, nebude možné jej spustit.

Nyní je k dispozici nový parametr

Do funkce Formula from string byl přidán nový parametr, který vám dává možnost volby a umožňuje rozhodnout, v jakém kontextu se vzorec provede.

#1) sk spustit v hostitelské databázi

Vrátíme-li se k předchozímu příkladu, kdy nesdílená metoda FormatedCurrentDate patří do hostitelské databáze, bude možné ji i tak spustit z komponenty vytvořením vzorce následujícím způsobem:

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)";sk execute in host database)

#2) sk execute in current database

Pokud je předána hodnota sk execute in current database (nebo je prostě vynechána), pak se vzorec provede v databázi, která vzorec vytvořila“.

Závěr

Tato nová možnost vám umožní snadno vytvářet vlastní komponenty rozhraní (například pro 4D Write Pro) pomocí metod nebo proměnných z hostitelské databáze.

Větší volnost a větší pravomoci znamenají také větší zodpovědnost, ale tato otevřenost je stále velmi praktická a umožňuje komponentám přistupovat k funkcím jejich hostitelských databází velmi jednoduchým způsobem.

Neváhejte se podělit o své dojmy na fóru!

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.