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.