Como usar Select ONE y Select MANY

Karla CornejoKarla Cornejo
3 min read

Como parte de los requerimientos, uno de ellos y los mas comunes es el manejo de listas de valores, ahora con APEX este manejo se hace mucho mas fácil y perfecto de adaptarlo a cualquier necesidad.

Contamos con dos conceptos: Select ONE y Select MANY.

Select ONE:

Este tipo de dato permite seleccionar un solo valor y filtrarlo.

Cuando el usuario final hace clic en el campo, aparece una ventana con una lista de valores sugeridos. El elemento "SELECT ONE" ofrece una opción más amigable para el usuario.

Y contiene una serie de características como:

  • Maximum Values in List: el valor máximo es de 250

  • Fetch on Search: se empieza a realizar el filtro en función a lo que el usuario escribe

  • Value HTML Expression: podemos usar de que manera mostrar la lista de valores, como colores, etc., agregar directrices en la lista de valores como:

  • Match Type: tipo de mapeo ya se con Contains o Start With, es decir que contenga un valor o que empiece en algún valor.

  • Case-Sensitive: que sea o no sensitivo a lo que el usuario ingresa.

  • Minimum Characters: caracteres mínimos que deben de ser ingresados antes que la búsqueda sea ejecutada.

Ahora mostraremos como es que se ha creado el tipo ítem SELECT-ONE y en función al estado se pinta el registro:

  • Color azul si el estado del proyecto esta asignado.

  • Color amarillo si esta asignado.

  • Color verse si esta completado.

Creación de las clases en INLINE de la pagina, las que usaremos en el código:

.status-yellow {
  color: yellow;
}

.status-blue {
  color: blue;
}

.status-green {
  color: green;
}

En el ítem tipo SELECT_ONE en la opción HTML Expression, se ingresa el siguiente código:

<div class="cc-container">
{case STATUS_ID/}
{when 1/}<span class="cc-item status-yellow">Project: &NAME.--Lead: &PROJECT_LEAD.--&STATUS_PROJECT.</span>
{when 2/}<span class="cc-item status-blue">Project: &NAME.--Lead: &PROJECT_LEAD.--&STATUS_PROJECT.</span>
{otherwise/}<span class="cc-item status-green">Project: &NAME.--Lead: &PROJECT_LEAD.--&STATUS_PROJECT.</span>
{endcase/}
</div>

Select MANY:

El tipo de ítem Select MANY funciona de manera muy similar al tipo de ítem Select One. La principal diferencia es que puedes seleccionar y devolver múltiples valores.

Una caracteristica interesante en este tipo de item SELECT MANY es la capacidad de devolver un Array JSON o una lista delimitada de los valores seleccionados.

Ejemplo de Array JSON: [123, 344, 234, 445]

Ejemplo de Lista Delimitada: 123, 344, 22

En este ejemplo crearemos otro PAGE_ITEM de tipo Select_MANY. Al ser multivalores tenemos dos tipos:

Delimited List: En este caso en el where de nuestro reporte para hacer el filtro debe de usar la funcion APEX_STRING.SPLIT, de la siguiente manera:

select ID ID_TAREA,
       PROJECT_ID,
       MILESTONE_ID,
       NAME NOMBRE_TAREA,
       DESCRIPTION DESC_TAREA,
       ASSIGNEE,
       START_DATE,
       END_DATE,
       COST,
       IS_COMPLETE_YN
  from EBA_PROJECT_TASKS
   Where PROJECT_ID in 
           (select column_value from apex_string.split ( :P35_PROJECTS_MANY, ':' ))

JSON Array: en este caso la columna contiene un array de tipo JSON, para este caso se usa la función JSON_TABLE, de la siguiente manera:

select ID ID_TAREA,
       PROJECT_ID,
       MILESTONE_ID,
       NAME NOMBRE_TAREA,
       DESCRIPTION DESC_TAREA,
       ASSIGNEE,
       START_DATE,
       END_DATE,
       COST,
       IS_COMPLETE_YN
  from EBA_PROJECT_TASKS
   Where PROJECT_ID in 
       ( select
                element
            from
                json_table ( :P35_PROJECTS_MANY, '$[*]'
                    columns
                        element varchar2 path '$'
                )
       );

DEMO: https://apex.oracle.com/pls/apex/r/kcbarra/demo-desarrollo213766/select-many-select-one

CONCLUSIÓN: estas mejoras implemantadas en Oracle APEX y con estos tipos de ítems Select_ONE y Select_MANY garantiza flexibilidad, eficiencia y una mejor experiencia para los usuarios finales, en el momento de usar listas de valores.

0
Subscribe to my newsletter

Read articles from Karla Cornejo directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Karla Cornejo
Karla Cornejo