V předchozím příspěvku na blogu jste se dozvěděli, jak vytvářet sofistikovaná a složitá vyhledávací kritéria pomocí vzorců v dotazu ORDA. Abychom vám dále poskytli kompletní a výkonné nástroje pro vývoj, je k dispozici nová metoda ORDA: orderByFormula(). Pomocí vzorců nyní můžete uspořádat výběr entit pomocí složitých kritérií v metodě projektu nebo výrazu 4D.
HDI: Příklady uspořádání výběru entit pomocí vzorce
Kritéria pořadí se vyhodnocují, když je vzorec zadán jako řetězec nebo Formula objektu do orderByFormula() metodě.
Uspořádání pomocí vzorce jako řetězce
Zde máme dataClass, Companies, a seřadíme všechny společnosti na základě jejich zisku (zisk = výnosy – náklady).
Všimněte si, že k entitě se přistupuje prostřednictvím This příkazu.
C_OBJECT($companies;$orderedCompanies)
$companies :=ds.Companies.all()
$orderedCompanies :=$companies.orderByFormula ("This.revenue - This.costs")
Objednávka pomocí objektu vzorce
Zde seřadíme firmy pomocí stejných kritérií, ale místo řetězce použijeme objekt Formula objekt a řadíme sestupně.
C_OBJECT($companies;$orderedCompanies;$formula)
$formula := Formula(This.revenue - This.costs)
$companies :=ds.Companies.all()
$orderedCompanies:=$companies.orderByFormula ($formula;dk descending)
Všimněte si, že při použití objektu Formula objektu poskytuje některé výhody (například automatické doplňování, barvy v editoru kódu atd.) oproti použití vzorce jako řetězce.
Stránka orderByFormula() Metoda má ještě více možností. Podrobnosti naleznete v dokumentaci a výše uvedeném HDI ke stažení.
o uspořádání výběru entit
Nyní můžete vložit příkaz order by dovnitř samotné členské metody query(). To je obrovská výhoda při práci v režimu klient/server, protože můžete spojit dotaz a akci objednání do jednoho požadavku, čímž snížíte počet požadavků odesílaných na server a síťový provoz.
C_OBJECT($companies)
$companies :=ds.Companies.query("revenue> :1 order by costs desc";5000)