Como usar Select ONE y Select MANY
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.
Subscribe to my newsletter
Read articles from Karla Cornejo directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by