Como toda nueva versión que saca Oracle APEX en esta nueva versión tenemos tres elementos nuevos para nuestros formularios. En esta entrega estaremos viendo el uso del Cuadro Combinado (Combobox).

Este elemento se asemeja a un menú desplegable pero con variaciones y beneficios notables. Mediante la selección combinada, los usuarios tienen la capacidad de ingresar valores que no están presentes en las opciones, lo que brinda una vivencia dinámica y centrada en el usuario. Este componente ofrece dos modalidades diferentes, denominadas Selección combinada múltiple y Selección combinada única. La distinción principal reside en el número de elecciones permitidas: la Selección combinada múltiple admite múltiples selecciones, mientras que la Selección combinada única solo permite una única opción.

Para este ejemplo necesitamos tener esta tabla en nuestro esquema:

Tabla: GENEROS_PELICULAS

CREATE TABLE "GENERO_PELICULAS" 
   ( "ID" NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  NOT NULL ENABLE, 
"DESCRIPCION" VARCHAR2(4000), 
PRIMARY KEY ("ID")
  USING INDEX  ENABLE
   ) ;

Datos:

ID,DESCRIPCION
1,"Acción"
2,"Comedia"
3,"Ciencia ficción"
4,"Terror"
5,"Drama"
6,"Aventuras"
7,"Romance"
8,"Fantasía"
9,"Animación"
10,"Suspenso"
11,"Documental"
12,"Musical"
13,"Crimen"
14,"Oeste"
15,"Guerra"
16,"Biografía"
17,"Misterio"
18,"Superhéroes"
19,"Catastrófica"
20,"Fantástico"

Crear un Cuadro Combinado en Oracle APEX 23.2

Creando el cuadro combinado de una selección:

Para crear un elemento de página de tipo cuadro combinado, seguimos los siguientes pasos:

  1. En la pestaña Representación del Diseñador de páginas, hacemos clic con el botón derecho en Body y, en el menú contextual, seleccionamos Crear elemento.
  2. Para crear el cuadro combinado, necesitaremos dos elementos. Nombraremos el primer elemento como PX_COMBOBOX_UNO y el segundo como PX_ENTRADA_MANUAL_UNO. Tengamos en cuenta que PX_ENTRADA_MANUAL_UNO es un elemento oculto.
  3. Ahora, configuramos los atributos de PX_COMBOBOX_UNO para convertirlo en un cuadro combinado.
    • En Identificación, establecemos en el Tipo como Cuadro combinado.
    • En  Configuración, para la sección Elemento de entradas manuales , ingresamos el elemento  PX_ENTRADA_MANUAL_UNO
    • En Lista de valores, elegimos Consulta SQL para el Tipo. Luego podemos copiar y pegar la consulta SQL a continuación.
      Consulta SQL:

      SELECT DESCRIPCION, ID 
      FROM GENERO_PELICULAS

  4. Hacemos clic en Guardar y ejecutamos la página para ver el Cuadro combinado en acción.

Creando el cuadro combinado de múltiples selecciones:

  1. En la pestaña Representación del Diseñador de páginas, hacemos clic con el botón derecho en Body y, en el menú contextual, seleccionamos Crear elemento.
  2. Para crear el cuadro combinado, necesitaremos dos elementos nuevamente. Nombraremos el primer elemento como PX_COMBOBOX_MUCHOS y el segundo como PX_ENTRADA_MANUAL_MUCHOS. Tengamos en cuenta que PX_ENTRADA_MANUAL_MUCHOS es un elemento oculto.
  3. Ahora, configuramos los atributos de PX_COMBOBOX_MUCHOS para convertirlo en un cuadro combinado.
    • En Identificación, establecemos en el Tipo como Cuadro combinado.
    • En  Configuración,
      • Establecemos Varios Valores en Sí
      • Establecemos Selección Múltiple en Sí
      • para la sección Elemento de entradas manuales, ingresamos el elemento  PX_ENTRADA_MANUAL_MUCHOS
  4. En Lista de valores, elegimos la misma consulta SQL anterior.

Consulta SQL:

SELECT DESCRIPCION, ID 
FROM GENERO_PELICULAS


Veamos el resultado de este elemento de tipo cuadro combinado con selección múltiple.

Crear Proceso para insertar nuevos generos de peliculas con un botón

En esta sección, aprenderemos cómo procesar estas entradas manuales usando un código PL/SQL con un clic en un botón.

Creamos un proceso de página. En el proceso de la página, agregamos el siguiente código PL/SQL:

declare
l_nuevo_genero_id number;
begin 
-- recorrer cualquier descripción de genero de pelicula ingresada manualmente
FOR L_NUEVO_GENERO IN (
SELECT
COLUMN_VALUE
FROM
APEX_STRING.SPLIT(:P6_ENTRADA_MANUAL_MUCHOS, ':')
) LOOP
-- agregar la nueva identificación de genero de pelicula a la lista delimitada
insert into genero_peliculas(descripcion) values (l_nuevo_genero.column_value) returning id into l_nuevo_genero_id;
:P6_COMBOBOX_MUCHOS := :P6_COMBOBOX_MUCHOS || CASE WHEN :P6_COMBOBOX_MUCHOS IS NOT NULL
THEN
':'
END || L_NUEVO_GENERO_ID;
END
LOOP;
-- borrar el elemento de entradas manuales
:P6_ENTRADA_MANUAL_MUCHOS := null;
end;

Creamos un botón y le asignamos el proceso a este botón.

El proceso PL/SQL hace lo siguiente:

  • Inserta las entradas manuales en la tabla de genero de películas.
  • Agrega los ID de genero recién insertados al elemento :P6_COMBOBOX_MUCHOS.
  • Borra el elemento :P6_ENTRADA_MANUAL_MUCHOS.

Veamos el resultado final:

 

Espero haya sido de utilidad y empieces a usar este nuevo elemento de página en tus aplicaciones!

Hasta la próxima!