Una de las cosas que más causan curiosidad a la hora de realizar aplicaciones con Oracle Apex, es el poder definir listas de valores en cascada, donde el valor de la segunda lista o aún una tercera o cuarta listas, dependan del valor seleccionado en la primera lista.
En realidad, es una tarea que al final resulta sencilla de realizar, lo importante es conocer el concepto de como funcionan las páginas HTML y cómo se pueden implementar de manera sencilla.
Para este artículo me voy a centrar en la creación de una página sencilla con dos campos del tipo «Lista de Selección», que van a estar definidos por dos listas de valores; una para los datos contenidos en la tabla «DEPT» del esquema «SCOTT», y otra para los datos de la tabla «EMP», pero que va a mostrar solo los datos de esta tabla que correspondan con el departamento seleccionado en la lista de departamentos.
Para realizar esto:
- Ingrese a su área de trabajo.
- Seleccione la aplicación en la que va a crear la página.
- Cree una nueva página en blanco, haciendo clic en el botón «Crear Página».
- Cree una bifurcación incondicional direccionada al mismo número de página que acaba de crear.
- Ahora cree una región de tipo «HTML».
- Cree un campo llamado Px_LOV_DEPTO del tipo «Lista de Selección con Ejecución», donde ‘x’ corresponde al número de página creada.
- Incluya el siguiente código en la definición de lista de valores del campo:
select DNAME display_value, DEPTNO return_value
from DEPT
order by 1
- Cree un nuevo campo, ahora del tipo «Lista de Selección», con el nombre Px_LOV_EMP y agréguele el código siguiente en la definición de lista de valores:
select ENAME display_value, EMPNO return_value
from EMP
where deptno = :Px_LOV_DEPTO
order by 1
- Ejecute la página, experimente y observe lo que sucede con los valores de la lista de empleados cada vez que es seleccionado un nuevo departamento.
Puede observar esta funcionalidad ejecutándose en mi área de trabajo de OTN en la siguiente dirección: apex.oracle.com/pls/otn/f?p=56897
Suerte y los espero de nuevo pronto con otro tip más.
Primeramente deseo felicitarte por las excelentes guía que escribiste, es la mejor que encontre en la web (y principalmente en español). Yo me encuentro incursionando en el manejo de ORACLE y en especial de APEX, pero hay algo que me quita el sueño y es como puedo generar reportes en pdf, doc y xls.
Serias super, si escribes una guía como las anteriores relacionada al tema que te planteo.
Saludos. Oscar
Oscar:
Muchas gracias por tus comentarios.
En cuanto a lo que solicitas, el tema es algo escabroso y es algo que ya han solicitado antes, lamentablemente, el tema es un poco pesado y necesitaria de un taller completo para poder explicarlo como se debe. Además, en lo que se refiere a los reportes en doc y xls, es necesario el motor de reportes de BI de Oracle, el cual no es gratis y tiene un costo elevado.
Lo que te prometo es que en el caso de los archivos en Excel, voy a publicar pronto un artículo de como obtenerlos con la ayuda de una librería que escribió un amigo europeo y que trabaja bastante bien.
En cuanto al pdf, voy a tratar de explicar en otro artículo, cómo configurar Apex en conjunto con otras aplicaciones para poder generar reportes BÁSICOS en este formato. Cuando hablo de básicos, me refiero a pasar un reporte columnar sencillo al formato pdf.
Espero que seas paciente, voy a tratar de hacerlo lo más pronto posible.
Saludos cordiales.
Eddi, buenos dias, tus guias son estupendas, mas tengo un inconveniente al crear una pagina con una lista ( no es una lista de valores) para manejar el cambio de regiones son cinco regiones, sucede que cuando estoy creando un registro, al pasar de una region a otra los datos de la anterios region se blanquean, por lo que no puedo ingresar registros nuevos.
te agradezco cualquier ayuda.
Deseo antes que nada felicitarte por la iniciativa, los tutoriales que escribiste han ayudado mucho en mi inicio con esta herramienta. Estan muy buenos los tutoriales!! (gracias por ellos).
No se si podrías ayudarme con un problemita que tengo, quisiera que la autenticacion de mi aplicación sea mediante usuarios que tengo definidos en una tabla de mi esquema …
Gracias por tus palabras Boris:
En cuanto a la autenticación en Oracle Apex, existen varias formas de hacerlo, voy a hacer lo posible por escribir acerca del tema tan pronto como pueda, pero adelantándote algo, lo que quieres hacer se hace por medio de un Esquema de Autenticación Personalizado y puedes ir viendo como funciona si revisas la aplicación de ejemplo que se instala cada vez que creas un espacio de trabajo.
Espero que lo anterior te sea de utilidad.
Gracias Eddie, revisaré la aplicación de ejemplo y estaré a la espera …
Me gustaria saber como se puede hacer cuando existen campos de texto, por ejemplo en un formulario, ya que cuando redirige la pagina a si misma esta me borra los datos que se hayan escrito anteriormente o cambia otros select list que tenga con ejecucion.
Gracias.
Marco:
Con la información que me proporcionas es dificil hacerme una idea de lo que está sucediendo con tu aplicación.
Suponiendo que estás hablando de formas de mantenimiento de tablas, que fueron creadas desde el ayudante para tal fin, existe ya una funcionalidad predeterminada que trata de aplicar los cambios en la base de datos y luego limpia los campos para una nueva insersión por ejemplo, o regresa a la página de donde fue llamada, dependiendo de la manera en que haya sido definida. En este caso no hay mucho por hacer.
Para poder controlar el estado de los diferentes campos y la manera en que se comportan, debes hacer la página sin utilizar el ayudante y agregarle por tu parte toda la funcionalidad, de esta manera puedes controlar si los valores de los campos son regresados a nulo o no, o en que momento realizar estos cambios.
Espero que esto te sea de ayuda.
Cualquier duda adicional o información sobre el mismo problema que pueda ayudar a entender mejor tu situación, estoy para servirte.
Saludos.
Eddie
Marco:
Una cosa que puedes hacer es cambiar una propiedad del campo que quieres que mantenga el valor de la siguiente manera:
1. Haces clic en el campo.
2. En la sección «Origen», el atributo «Origen usado», seleccionas el valor: «Solo cuando el valor de sesión actual en el estado de sesión sea nulo».
Con esto, cuando refresques la página, solo si el valor es nulo se refresca, de otra manera mantiene el valor que tenga.
Saludos
Eddie
Gracias Eddie muy buen aporte, explicado de una manera muy sencilla y entendible y estoy de acuerdo con Oscar es de lo mejor que encontre en la web.
Hola Eddie, realmente tus post son lo mejor que he encontrado de APEX hasta el momento, dan una guia fácil y práctica de la herramienta; y gracias a ellos he podido resolver muchos problemas.
Con este post que hiciste en particular tengo una duda, este ejemplo solo funciona si son dos campos los que necesito actualizar, pero en este momento necesito que sean seis, es decir, el segundo campo depende del primero (asi como en el post), el tercero del segundo, el cuarto del tercero y asi sucesivamente.. crees que puedas ayudarme?.. he buscado y no encuentro cómo hacerlo!
Muchas gracias de antemano.
Buen dia, te pido por favor si me podrias ayudar con estos temas. te paso las dudas con respecto al tema de las listas de valores.
1)El ejemplo solo funciona si son dos campos los que necesito actualizar, pero en este momento necesito que sean cinco, es decir, el segundo campo depende del primero (asi como en el post), el tercero del segundo, el cuarto del tercero y asi sucesivamente.. crees que puedas ayudarme?.. Te describo el problema con mas detalle:
Cuando al primer campo le pongo «lista de seleccion con ejecucion» en el segundo se me refresca los valores correctamente, pero cuando le pongo al segundo campo la misma «lista»(«lista de seleccion con ejecucion») para que me refresque el tercer campo me limpia(quedan vacios) los datos que cargue en el primero y segunda lista, que esta pasando??
2)Otro problema, Cuando doy de alta algunos registros,salvo el problema que tengo arriba, puedo cargar una lista como corresponde, ahora cuando salgo y vuelvo a entrar para modificar, esta lista que es un campo de otra tabla, me aparece vacia, como puedo hacer para que me traiga el dato que cargue cuando lo di de alta..
Desde ya agradeceria cualquier ayuda.
Muchas gracias
Saludos