Consultas ORDA más sofisticadas con fórmulas

Traducido automáticamente de Deepl

En 4D v17 R6, las consultas ORDA son cada vez más potentes y concisas. Esta entrada del blog es para aquellos que necesitan criterios de búsqueda más sofisticados que una simple sintaxis como«nombre = Smith‘». Con esta versión de R, puedes utilizar cualquier método de proyecto o expresión 4D en el query() utilizando fórmulas.

¿Qué mejor manera de explicar esta función que con un ejemplo? Vamos a profundizar en los detalles.

HDI: Ejemplo de consultas ORDA utilizando fórmulas

ESCRIBIR UNA CONSULTA UTILIZANDO UNA FÓRMULA

El método miembro query() ha sido actualizado para soportar un único objeto Formula como parámetro.

Ejemplo

En la clase de datos Students , buscamos a los estudiantes con una puntuación en inglés superior a su puntuación media general.

Tenga en cuenta que se accede a cada entidad mediante la fórmula con el This comando.

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)

utilizar una fórmula con otros criterios de búsqueda

Las fórmulas pueden combinarse fácilmente con otros criterios de búsqueda. A continuación, un ejemplo para mostrarle cómo hacerlo.

Ejemplo

En la clase de datos Students , seguimos buscando estudiantes con una puntuación en inglés superior a la media general Y cuyo país sea Inglaterra.

El objeto $formula se utiliza como un valor marcador de posición, como cualquier otro.

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

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

utilizar una fórmula en la cadena de consulta

También se puede insertar una fórmula en la cadena de consulta con una sentencia eval().

Aunque esto puede ser conveniente para codificar rápidamente una consulta, se perderán las ventajas de utilizar un objeto de fórmula (como el autocompletado, los colores en el editor de código y las llamadas de búsqueda).

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

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

NOTA: El método query() del objeto de selección de entidades también ha sido actualizado para soportar fórmulas. Consulte la documentación para obtener más información.

Avatar
• Propietario de producto - Marie-Sophie Landrieu-Yvert ingresó al equipo de 4D Product como Propietario de producto en 2017. Como tal, está a cargo de escribir las historias de los usuarios y luego traducirlas en especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Marie-Sophie se graduó en la Escuela de Ingeniería de ESIGELEC y comenzó su carrera como ingeniera en IBM en 1995. Participó en varios proyectos (de mantenimiento y creación) y trabajó como desarrolladora de Cobol. Luego trabajó como diseñadora de UML y desarrolladora de Java. Sus principales funciones fueron analizar y redactar requisitos funcionales, coordinar los equipos de negocio y de desarrollo.