Consulte su base de datos con un enfoque orientado a objetos

Traducido automáticamente de Deepl

Después de aprender cómo se pueden crear, actualizar y borrar datos, aquí hay una nueva entrada en la serie ORDA. En esta entrada, verás cómo puedes consultar tu almacén de datos en modo orientado a objetos. Con ORDA, las consultas son más ligeras, más legibles y puedes navegar por todo el modelo de datos utilizando conceptos orientados a objetos.

Además, ORDA permite consultar muy fácilmente varias tablas relacionadas, gestionar relaciones recursivas en la misma tabla y utilizar varios operadores lógicos en una sola consulta. Además, no tiene que preocuparse de establecer relaciones entre las tablas… ¡de forma manual o automática!

Ejemplo de consulta con DataStore

EMPEZAR A CONSULTAR CON ORDA

Al igual que cuando ejecutas una consulta sobre una tabla, la consulta con ORDA se realiza sobre una clase de datos (que corresponde a una tabla).

Hay varias formas de consultar una clase de datos. Lo siguiente proporciona una rápida visión general. Para más información sobre el método query(), consulta la documentación.

1- Proporcionar la consulta como una sola cadena

Esta es una consulta para obtener todos los empleados cuyo nombre empieza por ‘S’:

C_OBJECT($employees)
$employees :=ds.Employee.query("firstName='S@'"
) // Query on Employee table

2- Proporciona la consulta y los valores por separado utilizando marcadores de posición

Supongamos que quieres obtener todos los empleados cuyo nombre empiece por ‘D’ o ‘E’. Ten en cuenta que los valores a aplicar están desplazados en la consulta y se refieren a ellos con :1, :2, … :n, como se muestra a continuación:

C_OBJECT($employees)
$employees :=ds.Employee.query("firstName=:1 o firstName=:2"; "D@"; "E@"
) // Query on Employee table

Variación: También puede utilizar marcadores de posición a través de una colección para proporcionar los valores. Como demuestra el siguiente ejemplo:

C_OBJECT($employees;$params)
// You can use a collection to provide values to apply in the query
$params:=New object
$params .parameters:=New collection("D@"; "E@")
$employees :=ds.Employee.query("firstName=:1 or firstName=:2";$params) // Query on Employee table

algunas ventajas de la nueva forma de consulta

UTILIZAR FÁCILMENTE UN ENLACE RECURSIVO EN UNA SOLA TABLA

Considere este enlace recursivo en la tabla «Empleado»:

Utilizando la forma clásica

Este código solicita todos los empleados cuyo nombre empieza por la letra «A», con un gerente cuyo apellido empieza por la letra «S»:

ARRAY LONGINT(_managersIDs;0)
QUERY ([Empleado];[Empleado]firstName;"="; "A@")
CREATE SET ([Empleado]; "a")
QUERY ([Empleado];[Empleado]lastName;"=";"S@")
SELECTION TO ARRAY ([Empleado]ID;_managersIDs)
QUERY WITH ARRAY ([Empleado]managerID;_managersIDs)
CREATE SET ([Empleado]; "s")
INTERSECTION ("a"; "s"; "resultado")
USE SET ("resultado")
CLEAR SET ("a")
CLEAR SET ("s")

utilizando orda

Esta consulta es mucho más ligera…

C_OBJECT($entitySelection)
$entitySelection := ds.Employee.query("firstName=:1 and manager.lastName=:2"; "A@"; "S@")

No espere… comience a utilizar ORDA ahora para obtener un código más corto, más limpio y más legible.

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.