En ésta ocasión voy a contestar una duda que me llegó, el cual necesitaban saber cómo obtener el valor de un elemento de tipo numérico que dependa del valor seleccionado desde una lista de selección.
Para contestar esto he creado una aplicación y en la página una región de contenido estático con dos elementos, uno de ellos de tipo campo numérico y el otro de tipo lista de selección.
Para el primer elemento de tipo Lista de Selección, configuramos:
Sección Apariencia:
- Nombre: P1_EMPLEADO
- Tipo: Lista de Selección
Sección Etiqueta:
- Etiqueta: Empleado
Sección Configuración:
- Acción de Página al Seleccionar Submit page
Sección Lista de Valores
- Tipo: Consulta SQL
- Consulta SQL: select ename, empno from emp order by 1
Para el segundo elemento de Campo Numérico, configuramos:
Sección Apariencia:
- Nombre: P1_SALARIO
- Tipo: Campo Numérico
Sección Etiqueta:
- Etiqueta: Salario
Sección Origen
- Tipo: Consulta SQL (devuelve valor único)
- Consulta SQL: select sal from emp where empno = :P1_EMPLEADO
- Usado: Siempre, sustituyendo cualquier valor existente en el estado de sesión
Ejecutamos la aplicación y vemos que cuando cambiamos la selección del primer elemento se muestra el salario en el campo numérico.
Ahora bien, como podemos ver cada vez que se selecciona un nuevo elemento de la lista toda la página se recarga y si tenemos innumerables elementos y regiones eso puede hacer que la aplicación decaiga en performance.
Para evitar que se recargue toda la página podemos usar Acciones Dinámicas para que cuando cambie el elemento seleccionado de la lista solo se refresque el elementoo de página de tipo numérico.
Desde el Diseñador de Páginas de la página que contiene nuestros elementos de página, hacemos clic en la ficha de Presentación.
Hacemos clic en el elemento P1_SALARIO y en la sección Origen, configuramos que el tipo sea Nulo.
Hacemos clic sobre el Elemento P1_EMPLEADO con el botón derecho del mouse y seleccionamos Crear Acción Dinámica.
- Sección Identificación
- Nombre: Mostrar Salario
- Sección Cuando
- Evento: Cambiar
- Tipo de Selección: Elementos
- Elementos: P1_EMPLEADO
Hacemos clic en la acción Verdadera “Mostrar” y configuramos:
- Sección Identificación
- Acción: Definir Valor
- Sección Configuración
- Definir Tipo: SQL Statement
- Sentencia SQL: select sal from emp where empno = :P1_EMPLEADO
- Elementos de Página a Ejecutar: P1_EMPLEADO
- Caracteres Especiales de Identificación: Si
- Suprimir Evento de Cambio: No
- Sección Elementos Afectados
- Tipo de Selección : Elementos
- Elementos: P1:SALARIO
- Opciones de Ejecución:
- Evento: Mostrar Salario
- Arrancar Cuando el Resultado de Evento Sea: Verdadero
- Arrancar al Cargar Página: Si
- Guardamos los cambios
Antes de ejecutar la página, recordemos configurar el elemento P1_EMPLEADO que la "Acción de Página al Seleccionar" sea None.
De ese modo sólo se refresca la región cuando se cambia la selección en la lista, no afectando las demás regiones y elementos que tiene nuestra página.
Hasta Pronto!