ORDA – Genealogía – Episodio tres

Traducido automáticamente de Deepl

En el primer y segundo episodio de esta trilogía, demostramos los fundamentos de ORDA utilizando cuadros de lista, entidades y selecciones de entidades. También mostramos la forma de utilizar cuadros de lista similares con distintas fuentes de datos y cómo utilizar la expresión Meta info para mejorar los gráficos de los cuadros de lista.

Hoy vamos a divertirnos aún más, ¡con menos código!

Descargar Genealogía – Episodio tres

¡Menos código, más diversión!

Basado en la estructura recursiva que discutimos antes, nuestro objetivo hoy es mostrar un árbol genealógico (como se muestra abajo).

Para cada pareja, queremos mostrar sus padres, abuelos y sus hijos (si tienen alguno).

La lista de la izquierda mostrará todas las parejas para las que encontraremos cuatro padres y ocho abuelos. Este va a ser el principal reto.

Para mostrar las parejas de la izquierda, podemos limitar la búsqueda a los hombres con pareja:

Gender=false // boolean field
y pareja # null

Pero también tendremos que asegurarnos de que ambos tienen padres:

y Padre # null
y Madre # null

Y luego tendremos que comprobar los abuelos, etc., etc.

Magia y lógica

Si se puede consultar 4D (y ORDA) para encontrar cuatro abuelos a la pareja de X, eso significa también que X tiene pareja y que su pareja tiene padre y madre también. Así que, al final, ¡es bastante sencillo! ¡Sólo tenemos que comprobar que cada miembro de la pareja como cuatro abuelos !

Gender=false // search for men only (his partner's name will be displayed next to his)
y Padre.Padre # null // check for the man's grandparents
y Padre.Madre # null
y Madre.Padre # null
y Madre.Madre # null
y Socio.Padre.Padre # null // check for his partner's grandparents
y Socio.Padre.Madre # null
y Socio.Madre.Padre # null
y Socio.Madre # null

Hecho. Esta es la selección de entidades que se utilizará en el lado izquierdo del formulario.

¿No hay más código?

Casi. Excepto para los niños que manejaremos más tarde, ¡no se necesita más código!

Sólo recuerde, en las propiedades del cuadro de lista hay una propiedad llamada elemento actual. Sólo hay que nombrarla… ¡y usarla! En este caso, el elemento actual es «hombre». Así que tan pronto como hagas clic en cualquier fila del listbox, la entidad man se actualiza y puedes usar y mostrar sus atributos sin ningún tipo de codificación.

blank

No sólo sus atributos, sino también todos los atributos de las entidades relacionadas, y los atributos de las entidades relacionadas de las entidades relacionadas… así que en tu formulario puedes mostrar expresiones como:

man.Lastname
man.Father.Lastname
man.Father.Father.Lastame
man.Partner.Lastname
man.Partner.Father.Lastname
man.Partner.Father.Father.Lastname

O expresiones más complejas como

man.Father.Father.Lastname+" "+man.Father.Father.Firstname

Como hemos dicho: ¡Sin código! ¡Sólo expresiones! Sólo preste atención cuando utilice el copiar y pegar … podría resultar ser su mayor enemigo a veces 🙂

¿Y los niños?

También son bastante simples. ¡Durante el evento On selection change, simplemente crea una selección de entidades de niños (ver episodio 2), luego haz un bucle a través de esta selección de entidades para construir los nombres y las imágenes !

(Form event=On Selection Change)
childrenPortraits :=childrenPortraits*0 // erase picture
childrenNames :="" // erase names
$_children :=GetChildren (men) // get the entity selection of children
For each ($child;$_children)
COMBINE PICTURES (childrenPortraits;childrenPortraits;Horizontal concatenation;$child.Portrait_0)
childrenNames :=childrenNames+$child.Firstname+" ("+String($child.Birthday)+") "
End for each

Conclusión (¡o comienzo!)

Con estos tres episodios, te hemos dado un pequeño adelanto de la potencia de ORDA. Algunos de los resultados que hemos mostrado eran casi imposibles de obtener usando 4D de forma regular y sencilla. Se habrían necesitado enormes líneas de código, arrays, memoria y cálculos para alcanzar los mismos resultados. No estamos diciendo que todas las bases de datos 4D deban ser reescritas con ORDA («Si no está roto, no lo arregles» es una de mis citas favoritas), pero es bastante obvio que para sus futuras bases de datos o las actuales (si necesitan mejoras), ORDA será una gran ayuda y le ahorrará tiempo.

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.