4D v16.3MULTI SORT ARRAY |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
MULTI SORT ARRAY
MULTI SORT ARRAY
El comando MULTI SORT ARRAY permite efectuar una ordenación multicriterios en un conjunto de arrays. Este comando admite dos sintaxis diferentes. • Primera sintaxis: MULTI SORT ARRAY (Array{; orden}{; array2; sort2; ...; arrayN; ordenN}) Puede pasar un número ilimitado de parejas (Array;> o <) y/o sólo arrays. Todos los arrays pasados como parámetros se ordenan en de una manera sincronizada. Puede pasar array de cualquier tipo excepto arrays tipo puntero o imagen. Puede ordenar un elemento de un array bidimensional (es decir a2DArray{$vlEsteElemento}), pero no puede ordenar el array bidimensional en si mismo (es decir a2DArray). Para utilizar los contenidos de un array como criterio de ordenación, pase el parámetro orden. El valor del parámetro (> o <) determina el orden (creciente o decreciente) en el cual el array será ordenado. Si se omite el parámetro orden, el contenido del array no se utiliza como criterio de ordenación. Nota: recuerde que debe pasarse al menos un criterio de ordenación para que el comando funcione. Si no se define un criterio de ordenación, se genera un error. Los niveles de ordenación se determinan por el orden en el cual los arrays se pasan al comando: la posición de un array con criterio de ordenación en la sintaxis determina su nivel de ordenación. • Segunda sintaxis: MULTI SORT ARRAY (ptrArrayNombre; ordenArrayNombre) Esta sintaxis, más compleja, es muy valiosa para los desarrollos genéricos (por ejemplo, usted puede crear un método genérico para ordenar arrays de todo tipo, o una vez más crear el equivalente de un comando SORT ARRAY genérico).El parámetro ptrArrayNombre contiene el nombre de un array de punteros de array; cada elemento de este array es un puntero designando un array a ordenar. Las ordenaciones serán efectuadas en el orden de los punteros de array definidos por ptrArrayNombre. Advertencia: todos los arrays apuntados por ptrArrayNombre deben tener el mismo número de elementos. Nota: ptrArrayNombre puede ser un array de punteros local ($ptrArrayNombre), proceso (ptrArrayNombre) o interproceso (<>ptrArrayNombre). En cambio, los elementos de este array deben apuntar a arrays de proceso o interproceso únicamente. El parámetro ordenArrayNombre contiene el nombre de un array en el cual cada elemento indica el criterio de ordenación (-1, 0 o 1) del elemento del array de punteros correspondiente: Nota: no es posible ordenar arrays de tipo Puntero o Imagen. Puede ordenar un elemento de un array de bidimensional (es decir a2DArray{$vlEsteElemento}), pero no puede ordenar el array bidimensional en sí mismo (es decir a2DArray). Para cada elemento del array ptrArrayNombre, debe corresponder un elemento del array ordenArrayNombre. Por lo tanto los dos arrays deben tener exactamente el mismo número de elementos. El siguiente ejemplo utiliza la primera sintaxis: crea cuatro arrays y los ordena por ciudad (orden ascendente) luego por salario (orden descendente) con los dos últimos arrays nombres_array y telNum_array, siendo sincronizados de acuerdo con los criterios de ordenación anteriores: ALL RECORDS([Empleados]) Si quiere que el array de nombres sea utilizado como tercer criterio de ordenación, sólo añada > o < después del parámetro nombres_array. MULTI SORT ARRAY(ciudades;>;salarios;nombres;telNums) es equivalente a: SORT ARRAY(ciudades;salarios;nombres;telNums;>) El siguiente ejemplo utiliza la segunda sintaxis: crea cuatro arrays y los ordena por ciudad (orden creciente) y empresa (orden decreciente); los últimos dos arrays, nombres_Array y telNum_Array, están sincronizados de acuerdo al criterio de ordenación anterior: ALL RECORDS([Empleados]) Si quiere que el array de nombres se utilice como tercer criterio de ordenación, debe asignar el valor 1 al elemento Array_orden{3}. O bien, si quiere que los arrays se ordenen sólo por el criterio ciudades, asigne el valor 0 a los elementos Array_orden{2}, Array_orden{3} y Array_orden{4}. De esta manera, puede obtener un resultado idéntico a SORT ARRAY(ciudades;empresas;nombres;telNums;>).
Ver también
|
PROPIEDADES
Producto: 4D HISTORIA
Modificado: 4D 2004 ARTICLE USAGE
Manual de lenguaje 4D ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||