Anspruchsvollere ORDA-Abfragen mit Formeln

Automatisch übersetzt von Deepl

In 4D v17 R6 werden die ORDA Abfragen immer leistungsfähiger und präziser. Dieser Blog-Beitrag richtet sich an diejenigen unter Ihnen, die anspruchsvollere Suchkriterien als nur eine einfache Syntax wie„name = Smith‚“ benötigen. Mit diesem R-Release können Sie jede Projektmethode oder jeden 4D-Ausdruck in der query() Member-Methode verwenden, indem Sie Formeln benutzen.

Wie kann man diese Funktion besser erklären als mit einem Beispiel? Schauen wir uns die Details an.

HDI: Beispiel für ORDA-Abfragen mit Formeln

SCHREIBEN EINER ABFRAGE MIT EINER FORMEL

Die query() member-Methode wurde aktualisiert und unterstützt nun ein einzelnes Formula Objekt als Parameter unterstützt.

Beispiel

In der Datenklasse Students suchen wir nach Schülern, deren Punktzahl in Englisch höher ist als ihr Gesamtdurchschnitt.

Beachten Sie, dass die Formel auf jedes Objekt mit dem This Befehl.

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)

Verwendung einer Formel mit anderen Suchkriterien

Formeln können leicht mit anderen Suchkriterien kombiniert werden. Nachfolgend finden Sie ein Beispiel, das Ihnen zeigt, wie das geht.

Beispiel

In der Datenklasse Students wird weiterhin nach Schülern gesucht, deren Punktzahl in Englisch höher ist als ihr Gesamtdurchschnitt UND deren Land England ist.

Das Objekt $formula wird wie jedes andere Objekt als Platzhalterwert verwendet.

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

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

Verwendung einer Formel in der Abfragezeichenfolge

Eine Formel kann auch mit einer eval()-Anweisung in den Abfrage-String eingefügt werden.

Dies kann zwar praktisch sein, um eine Abfrage schnell zu kodieren, aber Sie werden die Vorteile der Verwendung eines Formelobjekts (wie automatische Vervollständigung, Farben im Code-Editor und Suchaufrufe) verpassen.

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

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

HINWEIS: Die query() Member-Methode des Objekts Entity Selection wurde ebenfalls aktualisiert, um Formeln zu unterstützen. Lesen Sie die Dokumentation, um mehr zu erfahren.

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.