4D v16.3

REDUCE SELECTION

Inicio

 
4D v16.3
REDUCE SELECTION

REDUCE SELECTION 


 

REDUCE SELECTION ( {tabla ;} Numero ) 
Parámetro Tipo   Descripción
tabla  Tabla in Tabla de la cual reducir la selección, o Tabla por defecto, si se omite
Numero  Entero largo in Número de registros a conservar seleccionados

REDUCE SELECTION crea una nueva selección de registros para tabla. El comando devuelve el primer número de registros de la selección actual de tabla. REDUCE SELECTION se aplica a la selección actual de tabla en el proceso actual. El primer registro de la nueva selección actual es el registro actual.

Nota: si se ejecuta la instrucción REDUCE SELECTION(tabla;0), no hay más selección ni registro actual en tabla.

Ejemplo  

El siguiente ejemplo busca las estadísticas correctas para una competencia mundial entre los distribuidores de más de 20 países. Por cada país, los 3 mejores distribuidores que han vendido más de $50 000 de productos están entre los 100 mejores distribuidores en el mundo y reciben un premio. Con unas pocas líneas de código, esta petición compleja se puede ejecutar utilizando búsquedas indexadas:

 CREATE EMPTY SET([Distribuidores];"Ganadores") ` Crear un conjunto vacío
 SCAN INDEX([Distribuidores]Cantidad ventas;100;<) ` Buscar desde el final del índice
 CREATE SET([Distribuidores];"100 mejores distribuidores") ` Colocar los registros seleccionados en un conjunto
 For($Pais;1;Records in table([Paises])) ` Por cada país
  ` Buscar los distribuidores en este país
    QUERY([Distribuidores];[Distribuidores]País=[Países]Nombre;*) ` ...que vendieron más de $50 000
    QUERY(&;[Distribuidores];[Distribuidores]Cantidad ventas>=50000)
    CREATE SET([Distribuidores];"DistribuidoresGanadores") ` Colocarlos en un conjunto
  ` Deben estar en el gurpo de los 100 mejores distribuidores
    INTERSECTION("DistribuidoresGanadores";"100 mejores distribuidores";"DistribuidoresGanadores")
    USE SET("DistribuidoresGanadores") ` Ganadores potenciales por país
  ` Ordenarlos por los resultados en orden descendente
    ORDER BY([Distribuidores];[Distribuidores]Cantidad ventas;<)
    REDUCE SELECTION([Distribuidores];3) ` Tomar los tres mejores distribuidores
    CREATE SET([Distribuidores];"DistribuidoresGanadores") ` Ganadores por país
  ` Colocarlos en la lista de ganadores por país
    UNION("DistribuidoresGanadores";"Ganadores";"Ganadores")
 End for
 CLEAR SET("100 mejores distribuidores") `No necesitamos más este conjunto
 CLEAR SET("DistribuidoresGanadores") ` No necesitamos más este conjunto
 USE SET("Ganadores") ` Acá tiene los ganadores
 CLEAR SET("Ganadores") ` No necesitamos más este conjunto
 OUTPUT FORM([Distribuidores];"Carta de ganadores") ` Seleccionar la carta
 PRINT SELECTION([Distribuidores]` Imprimir las cartas



Ver también 

Conjuntos
ORDER BY
QUERY
SCAN INDEX

 
PROPIEDADES 

Producto: 4D
Tema: Selecciones
Número 351

El comando cambia el registro actualEl comando cambia la selección actualThis command can be run in preemptive processes

 
HISTORIA 

Creado por: < 4D v6

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)