Sofistikovanější dotazy ORDA se vzorci

Automaticky přeloženo z Deepl

Ve verzi 4D v17 R6 jsou dotazy ORDA stále výkonnější a stručnější. Tento příspěvek na blogu je určen těm z vás, kteří potřebují sofistikovanější vyhledávací kritéria než jen jednoduchou syntaxi typu„jméno = Smith‚“. V této verzi systému R můžete použít jakoukoli metodu projektu nebo výraz 4D v. query() členské metodě pomocí vzorců.

Jak lépe vysvětlit tuto funkci než na příkladu? Pojďme se podívat na podrobnosti.

HDI: Příklad dotazů ORDA pomocí vzorců

NAPSAT DOTAZ S POUŽITÍM FORMULÁŘE

Stránka query() členské metody byla aktualizována tak, aby podporovala jediný Formula objekt jako parametr.

Příklad

V datové třídě Students hledáme studenty, jejichž výsledek v angličtině je vyšší než jejich celkový průměrný výsledek.

Všimněte si, že ke každé entitě se přistupuje pomocí vzorce s příkazem This příkazem.

C_OBJECT($formula;$students)
// In the Students dataClass, grades is an object field containing students' grades for each subject
// Example of JSON representation of the grades object field:
// {math:50,english:90,history:85}
// The studentAverage project method computes the student's overall average in all subjects
$formula :=Formula(This.grades.english>studentAverage (This))
$students :=ds.Students.query($formula)

použití vzorce s dalšími vyhledávacími kritérii

Vzorce lze snadno kombinovat s dalšími vyhledávacími kritérii. Níže je uveden příklad, který vám ukáže, jak na to.

Příklad

V datové třídě Students nadále vyhledáváme studenty, jejichž skóre v angličtině je vyšší než jejich celkový průměr A jejichž země je Anglie.

Objekt $formula je použit jako zástupná hodnota, stejně jako jakýkoli jiný.

C_OBJECT($formula;$students)
C_TEXT ($country) // $country = "France"

$formula :=Formula(This.grades.english>studentAverage (This))
$students :=ds.Students.query(":1 a země=:2";$formula;$country)

použití vzorce v řetězci dotazu

Vzorec lze do řetězce dotazu vložit také pomocí příkazu eval().

To sice může být výhodné pro rychlé kódování dotazu, ale přijdete o výhody plynoucí z použití objektu vzorce (například automatické dokončování, barvy v editoru kódu a volací znaky pro vyhledávání).

C_OBJECT($students)
C_TEXT ($country) // $country = "France"

$students :=ds.Students.query("eval(This.grades.english > studentAverage (This)) and country=:1";$country)

POZNÁMKA: query() členská metoda objektu výběru entit byla rovněž aktualizována tak, aby podporovala vzorce. Více informací naleznete v dokumentaci.

Avatar
• Product Owner • Marie-Sophie Landrieu-Yvert se připojila k programovému týmu 4D jako Product Owner v roce 2017. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Marie-Sophie vystudovala inženýrskou školu ESIGELEC a svou kariéru zahájila jako inženýrka v IBM v roce 1995. Podílela se na různých projektech (projekty údržby nebo výstavby) a pracovala jako vývojářka Cobol. Poté pracovala jako UML designer a Java developer. V poslední době byly jejími hlavními rolí analyzovat a psát funkčních požadavky a koordinovat obchodní a vývojové týmy.