Los conjuntos (Sets) en 4D
En muchos casos los programadores buscamos la forma de guardar datos temporales en variables o vectores, pues nos vemos en la necesidad de mantener activa una consulta hecha sobre una tabla para poderla utilizar más adelante, sobre 4D los datos pueden mantenerse temporalmente, ya sea por medio de conjuntos o selecciones temporales, en este escrito me enfocaré hacia los conjuntos (o sets en inglés), pues la verdad son muy sencillos de utilizar y las ventajas que puede traer son enormes, claro está así como la buena manipulación de estos puede traer beneficios, hay que tener en cuenta que el mal manejo puede generar complicaciones.
Un conjunto se define básicamente como la selección de registros sobre una tabla, y trabaja como una copia idéntica de la tabla de direcciones de la misma, cuando hacemos uso de los conjuntos sobre 4D, significa que podemos manipular la selección de registros de una forma rápida, dándonos la posibilidad de trabajar con ellos, (almacenar, cargar, borrar), también podemos realizar varias operaciones sobre estos como unión, intersección y diferencia, además de adherir o borrar registros del mismo.
El concepto de conjuntos no es nada complicado, pero para entenderlo mejor, es bueno proponer una práctica, Como lo muestra la siguiente imagen, se tiene una relación entre las tablas “ESTUDIANTES” y “MATERIAS”, por medio de “ESTUD_MATER”, se desea realizar una búsqueda de aquellos materias que coinciden entre dos o más estudiantes, esta selección de datos puede llegar a ser un poco compleja si se desea utilizar el editor de consultas, por tal motivo los conjuntos son una buena alternativa para realizar este proceso

Inicialmente pediremos al usuario ingresar el Id de los estudiantes para realizar la correspondiente consulta, como lo muestra el siguiente código.
Realmente aquí se solicita al usuario una cantidad de estudiantes no mayor de 5, los cuales serán referenciados por medio su ID para realizar la búsqueda de todas las materias inscritas y posteriormente crear un conjunto con los registros seleccionados de la tabla Materias. Como se puede apreciar se crearan n conjuntos con nombre “Materias_Est_”, (Siendo n no mayor de 5).
En este punto solo hemos creado los conjuntos respectivos, pero aún no hemos trabajado con ellos, o por lo menos no se ha realizado la búsqueda de los registros que coinciden en cada conjunto.
La anterior rutina se encarga de ejecutar la comparación y guardar el resultado en un conjunto nombrado “Resultado”, y así posteriormente imprimir en un listado los registros coincidentes.
Entre los comandos que se deben tener en cuenta para trabajar con conjuntos están
Se crea un nuevo conjunto (”Resultado”) vacío, que será el que contendrá la referencia de los registros resultantes.
Como resultado está vacío y como es el primer conjunto que se está analizando se copia el conjunto “Materias_Est_1″ a Resultado, o se realiza una unión entre los conjuntos como lo muestra el código (en este caso cualquiera de las dos opciones es valida).
Como nuestro objetivo es el de hallar los registros coincidentes, se debe establecer una intersección entre todos los conjuntos
Por tal motivo utilizamos el comando
Después que hemos analizado todos los conjuntos, montamos a memoria la selección que tenemos en el conjunto resultante
Finalmente se debe tener en cuenta que siempre que se utilice un conjunto es necesario borrarlo para liberar memoria.
Los conjuntos pueden llegar a ser de gran utilidad al momento de necesitar varias selecciones de datos sobre una o muchas tablas, pero hay que tener en cuenta que el tamaño de un conjunto no se mide por el numero de registros presentes en la selección ni en la tabla, sino por el número de registros presentes desde la última compactación de datos (la compactación se realiza con 4D Tools para 4D 2004 o desde el CSM en 4D v11 SQL), por esto, cuando se manejan conjuntos sobre tablas que poseen gran cantidad de campos y registros el rendimiento puede verse afectado.
Existen muchos otros comandos que relacionan a los conjuntos, algunos son:
SAVE SET
Guarda un conjunto en el disco duro
LOAD SET
Carga un conjunto desde el disco duro
Records in set
Halla el número de referencias de registros que contiene el conjunto
REMOVE FROM SET
Borra una referencia de un conjunto
ADD TO SET
Agrega una referencia de un registro al conjunto
Para obtener más información les recomiendo visitar el siguiente enlaces
http://www.4d.fr/documentation/4DdocV11/V6U/V6U00047.HTM
http://4d.com/knowledgebase?CaseID=13095
http://www.4d.com/knowledgebase?CaseID=42385
Publicado el 4 Marzo, 2008 por Oskr | | Imprime este artículo