Posts Tagged ‘Calendario’

Creando un calendario con enlaces

Thursday, March 5th, 2009

La ejecución de este ejemplo supone que el lector posee cierta experiencia en el uso de Oracle Apex y que al menos sabe realizar las tareas básicas con el mismo.

Una de las funcionalidades interesantes que posee Oracle Apex, es el uso de calendarios, mediante los cuales podemos hacer referencia a datos o información que tenga relacionada una fecha, con él podemos presentar dichos “eventos” en un formato de calendario.

Para ilustrar el uso del calendario, voy a utilizar una tabla que agregué al esquema que se usa para la aplicación de ejemplo, esta tabla la llamé MEET y posee los siguientes campos:

MEETID NUMBER(10,0)
DESCRIPTION VARCHAR2(50)
MDATE DATE
DEPTNO NUMBER(2,0)

La columna MEETID se actualiza con una secuencia a la hora de hacer el INSERT.

Para generar un calendario, lógicamente debemos crear una página, el procedimiento es el siguiente:

  1. En su aplicación cree una nueva página y seleccione la opción calendario.
  2. Calandario 1

  3. Continue el asistente hasta llegar a la página en donde se le solicita el código SQL utilizado para crear el calendario e introduzca “SELECT description, mdate, deptno, meetid from meet where deptno = P99_DEPTNO” tal y como se observa en la imagen a continuación. Cambie el número de página por el correspondiente a la suya.
  4. Calandario 2

  5. En la página de “Columnas de Fecha/Visualización” seleccione las columnas tal y como muestra la siguiente imagen.
  6. Calandario 3

  7. Haga clic en el enlace derecho de la sección “Regiones” para la región del calendario, que le muestra la imagen a continuación.
  8. Calandario 4

  9. En el campo “Plantilla de Calendario” seleccione la opción “Calendar, Alternative 1”.
  10. Cree una nueva región que se muestre arriba de la sección del calendario y agregue un campo tipo lista de valores con ejecución en donde se muestren los diferentes departamentos registrados en la tabla DEPT.
  11. Ejecute la página, debería ver algo similar a lo que muestra la siguiente imagen.
  12. Calandario 5

Como puede observar en la imagen anterior, debajo de cada día del mes, aparecen las descripciones de cada registro de la tabla MEET que correspondan con cada día específico y el departamento seleccionado, de acuerdo con la consulta SQL que se proporcionó.

Si selecciona diferentes departamentos verá como cambia el contenido del calendario.

Ahora bien, hagamos este ejercicio un poco más interesante, convirtamos cada descripción mostrada en el calendario, en un enlace que nos dirija a un reporte en donde se muestra todo el registro que aparece en el calendario.

  1. Cree una nueva página tipo reporte que muestre los registros seleccionados de acuerdo con el siguiente código SQL: select MEETID, DESCRIPTION, MDATE, DEPTNO from MEET where deptno = :P9_DEPTNO and meetid = :P9_MEETID (Sin incluir las comillas)
  2. Cree los siguientes tres campos ocultos P9_DEPTNO, P9_MEETID, P9_DNAME (recuerde cambiar el número de página por el que corresponda con la suya, tanto en este punto como en el anterior).
  3. Regrese a la página del calendario y haga clic en el enlace “Calendario” de la sección “Regiones” y en la sección “Enlace de columna” realice los cambios necesarios para que luzca similar a la imagen mostrada abajo.
  4. Calandario 6

  5. En el campo “Destino de URL”, debe ingresar el siguiente código: f?p=&FLOW_ID.:9:&SESSION.::&DEBUG.::P9_DEPTNO,P9_MEETID:#DEPTNO#,#MEETID# – (Nuevamente recuerde cambiar el número de página en este caso 9, por el correspondiente a su aplicación – TODOS los número 9 que aparezcan).
  6. Aplique los cambios y ejecute nuevamente su página. Debería ver una imagen similar a la siguiente.
  7. Calandario 7

Como puede ver, el color de las anotaciones cambio, y si mueve el cursor del ratón sobre alguna de ellas, verá que ahora es un enlace, haga clic en cualquiera de ellos y le deberá aparecer la página del reporte creado, mostrando el registro correspondiente.

Espero que les sea de mucha utilidad.

Les recuerdo que pueden ver este ejemplo funcionando en mi aplicación de ejemplo en OTN.