4D v16.3Conjuntos |
|||||||||||||||||||||||
|
4D v16.3
Conjuntos
Conjuntos
Los conjuntos son una forma poderosa y rápida de manipular selecciones de registros. Además de la posibilidad de crear conjuntos, asociarlos a la selección actual, guardarlos, cargarlos y borrarlos, 4D permite realizar tres operaciones estándar de conjuntos:
Un conjunto es una representación de una selección de registros. La idea de conjuntos está íntimamente ligada a la idea de selección actual. Los conjuntos generalmente se utilizan por las siguientes razones:
La selección actual es una lista de referencias que apuntan a cada registro actualmente seleccionado. La lista existe en memoria. Sólo los registros seleccionados están en la lista. Una selección no contiene realmente los registros, sólo una lista de referencias a los registros. Cada referencia a un registro utiliza 4 bytes en memoria. Cuando usted trabaja sobre una tabla, siempre trabaja con los registros en la selección actual. Cuando una selección está ordenada, sólo la lista de referencias se reorganiza. Sólo hay una selección actual para cada tabla en un proceso. Como una selección actual, un conjunto representa una selección de registros. Un conjunto utiliza una representación muy compacta para cada registro. Cada registro está representado por un bit (un octavo de byte). Las operaciones que utilizan conjuntos son muy rápidas, porque los computadores pueden realizar muy rápidamente operaciones sobre bits. Un conjunto contiene un bit por cada registro de la tabla, sin importar si el registro está incluido o no en el conjunto. De hecho, cada bit es igual a 1 o 0, dependiendo de si el registro está en el conjunto o no. Los conjuntos son muy económicos en términos de memoria RAM. El tamaño de un conjunto, en bytes, siempre es igual al número total de registros en la tabla dividido por 8. Por ejemplo, si crea un conjunto para una tabla que contiene 10 000 registros, el conjunto toma 1 250 bytes, aproximadamente 1.2K en RAM. Pueden existir varios conjuntos para cada tabla. De hecho, los conjuntos pueden guardarse en el disco independientemente de la base. Para cambiar un registro que pertenece a un conjunto, primero debe utilizar el conjunto como selección actual, luego modificar el registro. Un conjunto nunca está ordenado, los registros simplemente son marcados como que pertenecen al conjunto o no. Por el contrario, una selección temporal está ordenada, pero requiere más memoria en la mayoría de los caso. Para mayor información sobre selecciones temporales, consulte la sección Selecciones temporales. En el momento de su creación, un conjunto “recuerda” el registro actual de la selección. La siguiente tabla compara los conceptos de la selección actual y de los conjuntos:
El conjunto pertenece a la tabla en la cual se ha creado. Las operaciones sobre conjuntos sólo pueden realizarse entre los conjuntos que pertenecen a la misma tabla. Los conjuntos son independientes de los datos, esto significa que después de realizar modificaciones a una tabla, un conjunto podría no ser exacto. Hay muchas operaciones que pueden hacer que un conjunto no sea exacto. Por ejemplo, si crea un conjunto de todos los habitantes de Madrid y cambia los datos de uno de los registros por Barcelona, el conjunto no cambia, porque el conjunto es simplemente la representación de una selección de registros. La eliminación y el remplazo de registros también pueden volver el conjunto obsoleto, al igual que la compactación de datos. La exactitud de los conjuntos sólo se puede garantizar si los datos de la selección original no han cambiado. Puede utilizar tres tipos de conjuntos:
Notas:
La siguiente tabla indica los principios de visibilidad de los conjuntos en función de su alcance y de dónde fueron creados: Un conjunto puede ser creado al interior de una transacción. Es posible crear un conjunto de registro creados dentro de una transacción y un conjunto de registros creados o modificados fuera de la transacción. Cuando la transacción termina, debe borrarse el conjunto creado durante la transacción, porque podría no ser una representación exacta de los registros, especialmente si la transacción se canceló. El siguiente ejemplo borra los registros duplicados de una tabla que contiene información de personas. Un bucle For...End for pasa por todos los registros, comparando el registro actual con el registro anterior. Si el nombre, dirección, y código postal son iguales, el registro se añade a un conjunto. Al final del bucle, el conjunto se convierte en la selección actual y la selección actual anterior se borra: CREATE EMPTY SET([Personas];"Duplicados") En lugar de borrar inmediatamente los registros al final del método, puede mostrarlos en pantalla o imprimirlos, de manera que pueda realizar una comparación más detallada. 4D administra un conjunto sistema llamado UserSet, el cual guarda automáticamente las selecciones de registros más recientes realizadas por el usuario en pantalla. De esta forma, puede mostrar un grupo de registros con MODIFY SELECTION o DISPLAY SELECTION, pedirle al usuario seleccionar algunos y devolver el resultado de esta selección manual en un conjunto. 4D Server: aunque su nombre no comienza con el carácter "$", el conjunto sistema UserSet es un conjunto cliente. De manera que cuando utilice INTERSECTION, UNION y DIFFERENCE, asegúrese de comparar UserSet únicamente con otros conjuntos clientes. Para mayor información, por favor consulte las descripciones de estos comandos como también la sección 4D Server, conjuntos y selecciones temporales del manual 4D Server. Sólo hay un UserSet por proceso. Cada tabla no tiene su propio UserSet. UserSet se asocia a una tabla sólo cuando se muestra una selección de registros para la tabla. 4D administra el conjunto UserSet para los formularios listados mostrados en modo Diseño o utilizando los comandos MODIFY SELECTION o DISPLAY SELECTION. Sin embargo, este mecanismo no está activo para subformularios. El siguiente método ilustra cómo mostrar registros para permitir al usuario seleccionar algunos registros, y luego utiliza UserSet para mostrar los registros seleccionados: ` Mostrar todos los registros y permitir al usuario seleccionar algunos de ellos. Los comandos APPLY TO SELECTION, DELETE SELECTION, ARRAY TO SELECTION y JSON TO SELECTION crean un conjunto sistema llamado LockedSet cuando se utilizan en un entorno multiproceso.
Ver también
|
PROPIEDADES
Producto: 4D
HISTORIA
ARTICLE USAGE
Manual de lenguaje 4D ( 4D v16) |
|||||||||||||||||||||