Ordenar una selección de entidades con este nuevo método ORDA

Traducido automáticamente de Deepl

En una entrada anterior del blog, aprendió a construir criterios de búsqueda sofisticados y complejos aplicando fórmulas en una consulta ORDA. Para proporcionarle aún más herramientas de desarrollo completas y potentes, un nuevo método ORDA disponible: orderByFormula(). Con la ayuda de fórmulas, ahora puede ordenar una selección de entidades utilizando criterios complejos en un método de proyecto o expresión 4D.

HDI: Ejemplos para ordenar una selección de entidades con una fórmula

El criterio de orden se evalúa cuando la fórmula se da como una cadena o un Formula al método orderByFormula() método.

Ordenar con una fórmula como una Cadena

Aquí tenemos una dataClass, Companies, y ordenamos todas las empresas en función de sus beneficios (beneficios = ingresos – costes).

Tenga en cuenta que se accede a la entidad mediante el comando This comando.

C_OBJECT($companies;$orderedCompanies)
$companies :=ds.Companies.all()
$orderedCompanies :=$companies.orderByFormula ("Este.ingreso - Este.coste")

Ordenar con un objeto de fórmula

Aquí ordenamos las empresas usando el mismo criterio, pero en lugar de una cadena, estamos usando un Formula y estamos ordenando por orden descendente.

C_OBJECT($companies;$orderedCompanies;$formula)
$formula := Formula(This.revenue - This.costs)
$companies :=ds.Companies.all()

$orderedCompanies :=$companies.orderByFormula ($formula;dk descending)

Observe que el uso de un Formula proporciona algunas ventajas (como el autocompletado, los colores en el editor de código, etc.) sobre el uso de una fórmula como cadena.

El método orderByFormula() tiene aún más opciones. Consulta la documentación y descarga el IDH de arriba para más detalles.

sobre Ordenar una selección de entidades

Ahora puede insertar una sentencia order by dentro del propio método miembro query(). Esto es una gran ventaja cuando se trabaja en modo cliente/servidor porque se puede combinar la consulta y la acción de ordenar en la misma petición, reduciendo el número de peticiones enviadas al servidor y su tráfico de red.

C_OBJECT($companies)
$companies :=ds.Companies.query("revenue> :1 order by costs desc";5000)

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.