Que mejor para iniciar esta serie de publicaciones, que una breve
descripción de lo que es Oracle APEX.
Como todo paquete existente, tiene sus pros y sus contras, de las
cuales, las principales son:
Pros:
Contras:
1. Una aplicación APEX esta sujeta a las limitaciones normales de
cualquier aplicación web: Una selección limitada de componentes de
la interfas del usuario. Sin embargo, con la característica de
refrescamiento parcial de APEX, no es necesario enviar y redibujar
toda la pantalla para muchas operaciones.
2. Si la funcionalidad estándar de APEX no es suficiente para cubrir sus
necesidades, tendrá que aprender el entorno para poder agregar su
propio código en los puntos claves o relevantes; de la misma manera
en que tuvo que aprender sobre los disparadores disponibles en
productos como Oracle Forms. El entorno APEX puede ser mejorado
o ampliado utilizando javascript, AJAX, DHTML, etc. para incorporar
funcionalidad Web 2.0 a sus aplicaciones.
3. Al ejecutarse las aplicaciones APEX en la base de datos, incluyendo
la lógica del negocio, no se tiene los mismos requerimientos de
desempeño que con aplicaciones en arquitecturas de tres capas,
donde necesita escalar (agregando más servidores de aplicaciones)
para mejorar el desempeño. El costo total de desempeño en la base
de datos por ejecutar aplicaciones APEX es muy pequeño,
permitiendo escalar muy bien. Para aplicaciones de APEX de base de
datos intensivas (aquellas con un significativo procesamiento de
datos) con un gran número de usuarios concurrentes, se recomienda
utilizar Oracle RAC para balancear la carga de la base de datos.
También pueden ser incorporados múltiples servidores de
aplicaciones para así asegurar una alta disponibilidad.
Agregar un reporte con páginas de “Uso
Frecuente”
Una función muy útil en cualquier aplicación, es una región similar a la región
“Reciente” usada en la aplicación de desarrollo de Apex, en la que se muestran las
páginas de uso más frecuente de la aplicación; para lo cual utilizaremos una consulta al
repositorio de APEX.
En esta entrega, les explico como lograrlo en sus aplicaciones con tres simples pasos:
2. Crear una Página Cero para la aplicación y en ella una región basada en una consulta SQL.
3. Ingresar el siguiente código en la región creada, para mostrar las 5 páginas más visitadas.
select htf.anchor(
‘f?p=’||:APP_ID||’:'||page_id||’:'||:APP_SESSION
, page_id||’ : ‘||page_name ) Task
from
(
select page_name
, page_id
, count(*)
from apex_workspace_activity_log
where application_id = :APP_ID
and apex_user = :APP_USER
and page_id <> :APP_PAGE_ID
group by page_name, page_id
order by 3 desc
)
where rownum <= 5
Por este motivo, en esta entrega y las siguientes, voy a explicar detalladamente cómo
crear una aplicación con Oracle Apex a partir de cero, y en donde incluiré:
Con esto cubrimos los elementos básicos de una aplicación típica de Oracle Apex y
puede ser de gran ayuda para que inicien a experimentar con la versatilidad que ofrece
esta herramienta.
Para empezar de una vez, vamos a explicar en esta entrega el primer tópico de esta
serie:
Lo primero que necesitamos para poder desarrollar una aplicación utilizando Oracle
Apex, es un área de trabajo (Workspace en inglés), la cual podemos definir como un
contenedor en el que se define cual usuario de base de datos es el dueño de la
aplicación, la información de conexión a la base de datos y los usuarios que tienen
acceso a este “contenedor” entre otras cosas.
Ahora que hemos definido lo que es un área de trabajo, pasemos a crear una, para lo
cual, necesitamos conocer la contraseña del usuario principal de Apex, el cual se crea
cuando instalamos esta herramienta. Además, debe conocer la dirección de ingreso a la
herramienta, la cual también se define a la hora de la instalación de la misma.
Usuario: ADMIN
Ahora sí, empecemos a crear nuestra propia área de trabajo para la aplicación que
vamos a crear más adelante:
5. Haga clic sobre el botón “Conectar”•. Le será mostrada una pantalla similar a la siguiente:
6. Haga clic sobre el botón “Gestionar Espacios de Trabajo”•.
7. Tan pronto le sea mostrada una pantalla similar a la anterior, en donde se encuentran
todas las opciones para gestión de espacios o áreas de trabajo, haga clic sobre el
enlace •”Crear espacio de trabajo”•• en la sección “Gestionar Espacios de Trabajo”•.
8. Le será mostrada una pantalla similar a la que se muestra en la ilustración anterior, la cual
es la entrada al “Wizard”• para la creación del nuevo Espacio de Trabajo. Los campos con
un asterisco rojo, son de ingreso obligatorio. Ingrese el nombre del espacio de trabajo que
desea crear, en nuestro caso vamos a utilizar el nombre “Ejemplo”•; y si lo desea, en el
campo siguiente, escriba una descripción breve que identifique el espacio de trabajo.
12. Haga clic en la flecha a la derecha del campo “Nombre de Esquema”• y en la pantalla
similar a la ilustración de abajo, haga clic sobre el esquema SCOTT.
17. Si lo desea, puede teclear el Nombre y Apellidos de la persona que se define como
administrador.
19. Haga clic en el botón •”Siguiente”•• para continuar. Le será mostrada la siguiente
pantalla:
20. Verifique que todos los datos mostrados correspondan con la definición que desea realizar
para el Espacio de Trabajo.
21. Haga clic en el botón •”Crear”••, para proceder a la creación del Espacio de Trabajo
definido. Le será mostrada una pantalla de confirmación de que su Espacio de Trabajo ha
sido creado exitosamente.
22. Haga clic en el botón •”Listo”••, para regresar a la pantalla de administración de
Espacios de Trabajo, una vez allí, haga clic en el enlace “Desconectar”••, que se
encuentra en la esquina superior derecha de la pantalla, para abandonar el administrador
de Oracle Apex.
Lo primero que debemos hacer, es ingresar a nuestro “Espacio de Trabajo”•, para ello,
nos vamos a dirigir a la dirección de arranque del Oracle Apex, en mi caso, que utilizo
mi computador personal para realizar esta aplicación, sería:
http://127.0.0.1:8080/apex, también es importante recordar el nombre del espacio de
trabajo creado en la entrega anterior: “Ejemplo”• y el usuario que se
creó:•”ADMIN”••. Con esto en mente empecemos:
9. Vamos a crear una aplicación nueva, por lo tanto, en la pantalla que muestra la imagen
anterior, ingrese el nombre que tendrá su aplicación, en nuestro caso, vamos a
llamarla “Empleados”•y vamos a mantener el número de aplicación que nos asigna
automáticamente Apex en el campo “Aplicación”. Como puede observar, se asigna el
esquema en el cual definimos nuestro Espacio de Trabajo. Para continuar, haga clic en el
botón“Siguiente>”•.
Como puede observar, hay dentro del contenedor dos páginas, una es la que creamos
en el procedimiento anterior y que llamamos “Principal” y la otra es la página
“Conectar”, que es creada por este procedimiento de manera automática y que se usa
para realizar la autenticación de los usuarios y permitir o rechazar el ingreso a nuestra
aplicación.
En la siguiente entrega, vamos a ver cómo definir los valores por defecto de la interfaz
de usuario.
2. La imagen anterior muestra la pantalla a la que somos dirigidos, aquí se pueden observar
varias secciones, pertenecientes a diferentes características de Apex que vamos a ir
conociendo poco a poco. En este caso, nos interesa la sección “Interfaz de Usuario”, haga
clic en el enlace “Valores por defecto de Interfaz de Usuario”.
3. Una vez cumplido el paso anterior, seremos llevados a una pantalla similar a la que se
muestra arriba. Como podrá observar, ésta tiene ciertas características que pueden ser
definidas a placer, tales como la cantidad y tipo de tablas/vistas a mostrar en la página, así
como la forma en que estas son representadas en la página; como iconos (igual que en la
imagen anterior) o como una lista detallada (Pruebe realizar cambios y observe las
diferencias). Repita el siguiente procedimiento para incluir los valores por defecto de
interfaz de usuario de una tabla o vista:
3. Al ejecutar el paso anterior, serán creados los valores por defecto para la tabla/vista
seleccionada, estos valores son los que se muestran en la pantalla de arriba. Ahora lo que
queda es modificarlos para adecuarlos a nuestros deseos o necesidades. Les voy a explicar
la manera más sencilla de hacerlo. Para continuar con el proceso, haga clic en el botón
“Edición de Cuadrículas”.
4. La vista de la pantalla cambia a una igual a la que se muestra anteriormente, ahora sí,
vamos a realizar los cambios necesarios:
1. En el campo “Título de Región de Pantalla”, introduzca el título que desea que aparezca en
las pantallas de mantenimiento.
4. En la columna “Incluir en Informes” indique con un “Sí” los campos que desea que
aparezcan en los reportes y con un “No”, los que no desea que aparezcan.
6. En la columna “Necesarios” indique con un “Sí”, los campos que son de ingreso obligatorio.
7. Puede indicar el orden en que aparecen los campos en informes y pantallas, indicando con
un número consecutivo la posición en informes o pantallas, para esto utilice las columnas
“Secuencia de Informe” y “Secuencia de Pantalla”.
6. Haga clic en el botón “Cancelar” para regresar a la pantalla anterior y seleccionar una
nueva tabla/vista.
Así de fácil es definir los valores por defecto de la Interfaz de Usuario para nuestra
aplicación, lo que nos va a evitar el estar escribiendo los títulos y etiquetas cada vez
que hagamos una pantalla o un reporte a partir de una tabla o vista. El siguiente paso
es la creación de una pantalla para captura de datos, la cual haremos en la siguiente
entrega.
Para que esta entrega sea un poco más sustanciosa, vamos a realizar la pantalla de
mantenimiento de datos de la tabla “EMP”que contiene la información de empleados y
vamos a hacer algunas presunciones, como por ejemplo, que ya creamos la pantalla de
mantenimiento de la tabla “DEPT” y que la utilizamos para cargar algunos datos en
ella. Además, vamos a agregar algo de código a las tablas mencionadas, les vamos a
agregar in disparador a cada una de ellas, así como una secuencia para manejar las
llaves primarias de ambas. El código utilizado lo puede obtener aquí.
Una vez obtenido el código, abra una sesión de SQL y ejecute este código, luego de lo
cual estaremos listos para llevar adelante esta tarea.
6. Tenemos nueve opciones diferentes para el tipo de pantalla que queremos crear, para este
ejemplo, vamos a seleccionar la opción “Pantalla Basada en Tabla o Vista”, luego
hacemos clic en el botón “Siguiente >”.
7. A partir de ahora y de la pantalla que se muestra arriba, lo que haremos es definir la
funcionalidad de la página que estamos creando. Como puede ver, el esquema que
definimos para nuestra aplicación aparece seleccionado, por lo que en esta página solo
tenemos que hacer clic en el botón “Siguiente >”.
8. En la nueva página debemos indicar la tabla que vamos a utilizar para crear nuestra
pantalla y podemos hacerlo de dos maneras: podemos escribir directamente en el campo
correspondiente el nombre de la tabla, o bien, podemos hacer clic en el botón a la derecha
del campo, y seleccionar la tabla de la lista que nos será mostrada. En nuestro caso vamos
a escribir directamente el nombre de la tabla: “EMP”, luego de lo cual haremos clic en el
botón “Siguiente >”.
9. La imagen de arriba muestra la pantalla que debe tener en frente de sus ojos en este
momento, en ella no debería modificar nada, o casi nada. Si observa bien, el cuarto campo
de la pantalla dice “Usar Valores por Defecto de Interfaz de Usuario”, estos son los valores
que definimos para cada tabla y vista en la entrega anterior y para esto es que se utilizan
estos valores. En mi caso, voy a modificar el campo “Nombre de la página” y lo voy a
cambiar por “Mantenimiento_EMP”, luego se debe hacer clic en el botón “Siguiente >”.
10. Ahora hay que definir las opciones de separadores, como recordará, cuando definimos la
aplicación, decidimos que utilizaríamos separadores de un nivel, en la pantalla de arriba
vamos a definir un separador para la página que estamos creando, para esto, primero
marcamos la opción “Utilizar un juego de separadores existente y crear un nuevo
separador en el juego de separadores existente”; luego en el campo “Nueva etiqueta de
separador” escribimos “Empleados”. Finalmente hacemos clic en el botón “Siguiente >”.
11. En la pantalla siguiente (ver arriba), definimos la llave primaria de la tabla, y para nuestro
ejemplo, lo único que tenemos que hacer es hacer clic sobre el botón “Siguiente >”.
12. En la pantalla siguiente, mostrada arriba, definimos la forma en que se manejará el origen
de la llave primaria de la tabla, para lo cual proporcionamos el código del inicio de esta
entrega, solamente debe hacer clic en el botón “Siguiente >”.
13. En la pantalla que se muestra anteriormente, definimos las columnas de la tabla que
deseamos mostrar en la pantalla que estamos creando, aquí puede desmarcar las que
desee, o bien, como en mi caso, dejar todas las columnas seleccionadas y hacer clic en el
botón “Siguiente >” una vez que estemos listos con nuestra selección.
14. Como puede ver arriba, la siguiente pantalla nos permite mostrar la funcionalidad de la
nueva página, aquí define si se pueden crear nuevos registros, modificar o eliminar los
existentes, para eso debe seleccionar “Sí” o “No” en los diferentes campos “Mostrar botón
¦”, además define la etiqueta de cada uno de los botones que mostrará la pantalla, en mi
caso, voy a modificar la “Etiqueta del Botón Cancelar” y voy a escribir en este
campo “Regresar”, para de este modo dar a entender que este botón, me permite
regresar a la pantalla origen. Para culminar este paso, hacemos clic en el botón“Siguiente
>”.
15. La imagen anterior muestra la pantalla de definición de características de navegación de la
pantalla, en donde definimos que hacer luego de haber ejecutado un proceso de la página
(insertar, modificar o eliminar un registro), así mismo que hacer cuando hacernos clic en el
botón “Regresar”. Vamos a escribir un “3″ en el primer campo y un “1″ en el segundo de
ellos, para regresar a la página principal cuando cancelamos cualquier acción, y para
mantenernos en la misma página luego de incluir, modificar o eliminar un registro, solo
resta hacer clic en el botón “Siguiente >” para continuar avanzando en la creación de
nuestra pantalla.
16. Arriba puede ver la pantalla de confirmación de todo cuanto hemos hecho hasta este
momento, al hacer clic en el botón“Terminar”.
17. Hemos llegado a la pantalla final del proceso de creación de una nueva página, para este
caso, una nueva pantalla, si hace clic en el botón “Ejecutar Página”, verá el resultado de
todo el proceso que acabamos de culminar y que se muestra a continuación.
18. En la parte inferior de la pantalla tiene un menú de opciones , haga clic en el
enlace “Editar Página 3″, para mostrar la página que puede observar abajo. Aquí
podemos realizar un montón de cosas interesantes que poco a poco iremos aprendiendo.
Hemos creado nuestra primer pantalla de mantenimiento para una tabla, como puede
observar en la imagen que se muestra luego del punto 17, existen varias cosas
importantes que debe notar:
Cada campo de la pantalla fue creado con la etiqueta que definimos para la tabla en la
entrega anterior para los “Valores por Defecto de Interfaz de Usuario”.
Así de sencilla es la creación de una nueva página para nuestra aplicación de Oracle
Apex, espero que se sientan contentos y deseosos de seguir aprendiendo acerca de esta
herramienta, en la próxima entrega los enseñare ¿Cómo generar un reporte con la
ayuda del asistente de informes?
Dejemos de lado los pasos de cómo registrar el ingreso a nuestra aplicación, que ya
debemos dominar bien para este momento y empecemos a crear nuestro reporte.
1. Estando en la página principal de la aplicación, haga clic en el botón “Crear Página >”,
abajo se muestra una ilustración de la página que debería estar viendo.
2. Luego de realizar el paso anterior, será llevado a la página que muestra la siguiente
ilustración, haga clic en el botón“Informe”.
3. En este momento, le será mostrada una nueva página (ver ilustración de abajo), con
cuatro opciones posibles para generar su reporte, en el caso que nos ocupa, vamos a
explicar el uso del “Informe de Asistente”, así que haga clic sobre este botón.
4. Sobre la página que muestra la ilustración de abajo, ingrese los datos de identificación del
reporte (en mi caso voy a conservar el número de página que asigna Apex, así como la
plantilla de región).
5. En el campo “Título de página” vamos a escribir“Informe_empleados”, o el nombre que
le quiera asignar al reporte. En el campo “Título de región”, escribimos“Empleados”, o
bien, un nombre que sea significativo del contenido de la región y que nos permita
fácilmente darnos una idea de a que corresponde dicha región. Por último, hacemos clic en
el botón “Siguiente >”.
6. Tenemos que crear un nuevo separador para el reporte que estamos creando, así que en la
página que se muestra arriba, vamos a marcar la opción “Utilizar un juego de
separadores existente y crear un nuevo separador en el juego de separadores
existente”.
7. Ahora estará viendo una página similar a la de arriba, el campo“Juego de Separadores” lo
vamos a mantener intacto, pues solo tenemos este juego de separadores. En el
campo “Nueva Etiqueta de Separador”, vamos a escribir “Reporte Empleados”, luego
hacemos clic en el botón “Siguiente >”.
8. Sobre la página que se muestra arriba, vamos a seleccionar la tabla y columnas que van a
formar parte del reporte, lo primero que tenemos que hacer es seleccionar la tabla, pues el
esquema es definido por omisión, como el que definimos para la aplicación. En la lista de
selección “Tabla/Vista”, seleccione la tabla “EMP”.
9. La ilustración de arriba le muestra como debería estar viéndose en este momento la
página, puede utilizar los botones con flecha direccional para mover las diferentes
columnas entre“Columnas Disponibles” y “Columnas Mostradas”, estas últimas son las que
van a aparecer en el reporte, en mi caso voy a incluir todas las columnas en el reporte, así
que lo único por hacer es hacer clic en el botón con flecha a la derecha.
10. Actualmente, debería estar viendo una pantalla igual a la que muestra la imagen de arriba,
para continuar, haga clic en el botón “Siguiente >”.
11. En la página siguiente (mostrada arriba), voy a seleccionar en el campo “Plantilla de
informe”, la opción “plantilla 3: Standard Report (with alt row colors)”, la cual me va
a presentar las líneas del reporte coloreadas alternamente (una sí, una no). Voy a
mantener el número de filas por página intacto (15), usted puede definir a gusta cuantas
filas quiere que se muestren por página, también mantenemos los otros dos valores iguales
y hacemos clic en el botón “Siguiente >”.
12. El paso final es confirmar la creación del reporte. La ilustración anterior muestra la página
de resumen con las características principales que definimos para el reporte, lo único que
resta es hacer clic en el botón “Crear Página de Informe”.
13. Una página de conformación en mostrada, para ver el informe resultante, haga clic en el
botón “Ejecutar Página”.
El resultado del proceso anterior debe ser una página igual a la que se muestra a
continuación.
Como puede ver, está el informe de todos los empleados incluidos en la tabla “EMP”, y
hay una nueva pestaña o separador en la parte superior de la página llamada “Reporte
Empleados”, tal y como lo definimos en el paso 7.
Este es un reporte básico, llamado “Clásico” por parte de Oracle Apex. Hay algunas
cosas interesantes que se podrían hacer con él, como por ejemplo mostrar el nombre
del departamento, en lugar de su código; o bien, podríamos agregar un enlace hasta la
página de mantenimiento de empleados que creamos en el artículo anterior, para poder
modificar o eliminar los datos de los empleados, pero eso queda para otra entrega, en
caso de que a ustedes como lectores les interese.
Con esto pongo punto final a esta serie de artículos sobre cómo crear una aplicación
sencilla con Oracle Apex. Espero que les sea de utilidad y espero sus sugerencias y
comentarios.
Calcular un campo a partir de otros dos usando
Javascript
Haciendo un intermedio en la serie sobre cómo crear una aplicación utilizando Oracle
Apex, quiero ofrecerles este “truco” para poder calcular el valor de un campo númerico
a partir de otros dos campos.
Para esto, lógicamente necesitamos una página que contenga una región con tres
campos de tipo texto:
Los campos con los valores a utilizar PX_1 y PX_2 (donde X es el número de página de la
aplicación).
Para realizar la suma de los campos PX_1 y PX_2, primero copie el siguiente código en
la “Cabezera HTML” de la Página:
<script type=”text/javascript”>
function sumaItems()
{
function getVal(item)
{
if(document.getElementById(item).value != “”)
return parseFloat(document.getElementById(item).value);
else
return 0;
}
document.getElementById(‘PX_TOTAL’).value =
getVal(‘PX_1′) + getVal(‘PX_2′);
}
</script>
Por supuesto, cambie los nombres de variables por los que usted está utilizando.
onBlur=”javascript:sumaItems()”
Eso es todo, ahora ejecute su página y escriba dos valores numéricos en los campos
PX_1 y PX_2, luego del campo PX_2 pulse la tecla de tabulación y el campo PX_TOTAL
será calculado y su valor mostrado.
Como es de suponer, puede realizar cualquier otro tipo de calculos más complejos.
Puede ver este ejemplo implementado para suma, resta, multiplicación y división en mi
aplicación de ejemplo en OTN, en la siguiente
dirección: http://apex.oracle.com/pls/otn/f?p=56897.
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.
4. Cree una bifurcación incondicional direccionada al mismo número de página que acaba de
crear.
6. 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.
8. 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:
9. 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.
Existen dos versiones de este paquete, una para realizar la exportación desde Apex y
otra para hacerlo desde Oracle XE, al final de este artículo podrán encontrar los enlaces
para descargar ambos paquetes, los cuales muy gentilmente han sido puestos a
disposición de todos por mi amigo Denes.
Antes de entrar en materia , debo mencionar que Apex tiene definidos procedimientos
estándar para realizar la exportación de reportes a formatos variados como Excel, Word
y PDF, sin embargo, para poder utilizar esas funcionalidades, se hace necesario contar
con el componente BI Publisher de Oracle, el cual requiere de una licencia válida, la que
a su vez tiene un costo elevado y no todos podrán contar con ella, por lo que esta
alternativa que les propongo, puede resultarles de mucha utilidad.
2. @export_to_excel_pkg.sql
Haga clic en el botón “Crear >” y cree un proceso con las siguientes características:
0. Nombre: DOWNLOAD_EXCEL
1. Secuencia: 1
BEGIN
export_excel_pkg.print_report (:t_region_id, :t_excel_name, :t_page);
END;
5. En el Mensaje de error escriba el mensaje que desee que aparezca en caso de que se
produzca un error
<a href="f?p=&APP_ID.:0:&SESSION.:DOWNLOAD_EXCEL:NO::T_REGION_ID,
T_EXCEL_NAME,T_PAGE:#REGION_ID#,my_report,&APP_PAGE_ID.">
Exportar a Excel</a>
Una vez realizado esto, en el pie de página de la región del reporte le aparecerá un
enlace con la leyenda “Exportar a Excel”, el cual le permitirá exportar a Excel su
reporte, sin embargo, hay algunas consideraciones a tomar en cuenta:
1. Los puntos 1 al 8 del procedimiento anterior, se deben realizar una única vez para cada
espacio de trabajo en que desee implementar esta funcionalidad, sin embargo, si los
espacios de trabajo pertenecen a un mismo esquema (usuario de base de datos), la
instalación del paquete (puntos 1 al 3) se realizan una sola vez.
2. En el código del punto 12, el segmento que dice “my_report”, es el nombre con que se
exportará el reporte a Excel, por tanto, lo puede cambiar a su antojo, para que este
nombre refleje el contenido del reporte exportado.
3. El segmento del punto 12 que dice “Exportar a Excel”, es el texto que se muestra para el
enlace de exportación y también lo puede manejar a su antojo, puede poner el texto que
desee, o aún incluir alguna imagen.
4. No utilice el sufijo “#OWNER#” en el código del query del reporte, esto le producirá
un error y no obtendrá el resultado deseado.
5. El esquema (Usuario de base de datos) que ejecute este procedimiento, necesita derechos
o permisos de ejecución sobre el paquete DBMS_SQL.
7. Si los reportes incluyen una cláusula “group by”, necesita modificar el paquete y utilizar la
sintaxis v(‘ITEM’) en lugar de(select v(‘ITEM’) from dual)
Con esto es suficiente para que pueda exportar sus reportes a Excel, lo único que le
resta por hacer es bajar el paquete, instalarlo y empezar a exportar sus reportes.
Introducción y arquitectura
Apex 3.0 introdujo la habilidad de exportar una región de reporte a formato PDF –
esencialmente, imprimir un reporte. Esto es definido declarativamente y está disponible
para todas las regiones de reporte. Los usuarios de Application Express ahora pueden
ver e imprimir reporte con cabeceras de página que se repiten en cada página y
contenido que se conforma propiamente a varios tamaños de página. Para lograr esto,
los datos del reporte son transformados a formato PDF utilizando un servidor de
reportes definido externamente. Otras mejoras de impresión han sido incorporadas en
la versión 3.1 de Oracle Application Express, dentro de los Atributos de Impresión de la
Región y los Queries de los Reportes. La ilustración de abajo muestra la arquitectura de
impresión de Oracle Express:
Cuando el usuario final de la aplicación hace clic en el enlace de impresión, la solicitud
es enviada al motor de Apex (que es parte de la base de datos Oracle). Luego el motor
de Apex genera los datos correspondientes del reporte en formato XML y la plantilla del
mismo en formato XSL-FO o RTF. EL motor de reportes externo entonces transforma los
datos y la plantilla a PDF, el cual es desplegado al usuario final utilizando el servlet de
conversión que viene con BI Publisher 10.1.3.2. Toda esta complejidad de arquitectura
es transparente para el usuario final y los desarrolladores. Los usuarios finales solo
deben hacer clic en los enlaces de impresión, y los desarrolladores solo deben definir o
rellenar declarativamente las regiones para poder utilizar la impresión en PDF.
Existen dos tipos de impresión en PDF, una estándar, la cual voy a tratar en este
artículo, y la que se menciona en el párrafo anterior y que es conocida como Avanzada,
y que por el momento voy a dejar de lado, debido a que BI Publisher es un producto
licenciado de Oracle y que tiene un costo considerable, por lo que no todos podrán
contar con esta como parte de sus aplicaciones.
Opciones de configuración
La configuración estándar puede ser implementada con Apache FOP o cualquier otro
motor de procesamiento XSL-FO estándar. A partir de Apex 3.0.1, se incluye dentro de
este, una configuración de Apache FOP en conjunto con Oracle Containers para J2EE
(10.1.3.2). Esto provee la habilidad de dar formato declarativo de las regiones de
reportes y queries de reportes con control básico sobre los atributos de la página. Estos
atributos incluyen orientación, tamaño, formato de cabeceras de columnas, encabezado
de página y pie de página. Las ilustraciones de abajo muestran los reportes obtenidos
con la configuración estándar:
Opción Avanzada
La configuración avanzada requiere una licencia válida de Oracle BI Publiser. Con esta
configuración, usted cuenta con todas las capacidades de la opción estándar más la
habilidad de definir y desarrollar trazados de reportes basados en RTF, utilizando para
ello el complemento de Plantilla Word de BI Publisher. Esto provee fácil control gráfico
sobre cada aspecto de su reporte. Se pueden agregar logotipos a sus páginas, controles
de agrupado complejos y tener control total de la paginación. Fácilmente puede
empotrar gráficos y crear reportes que luzcan exactamente como formularios estándar
de cualquier organización. A continuación algunos ejemplos de reportes que ilustran la
configuración avanzada:
Instalando y configurando Apache FOP
Prerequisitos
Una configuración con soporte de Apache FOP en conjunción con Oracle Containers para
J2ee (10.2.3.2) viene como parte de Apex 3.0.1 o superior. La instalación de Apache
FOP viene incluida en la distribución de Apex
bajo directorio_apex/utilities/fop/fop.war. (directorio_apex, es el directorio desde
el que se instala Apex)
Por favor tome nota de que el soporte a Apache FOP en conjunto con OC4J (10.1.3.2)
tiene soporte por parte de Oracle SOLOcuando se utilizan los archivos que se
proporcionan. Las configuraciones alternas de Apache FOP no tienen ningún tipo de
soporte.
Una vez que tiene FOP instalado, accese los parámetros de Impresión de Reporte:
Puerto del Servidor de Impresión: el puerto en que el OC4J está escuchando – por
ejemplo 8888
El presente “tip” está diseñado para utilizar en páginas que posean una forma de
entrada de datos, más adelante en este artículo encontrará los enlaces a los archivos de
código necesarios para realizar está tarea. Espero que les sea de utlidad. Como
siempre, pueden ver esta funcionalidad en acción en mi espacio de trabajo en OTN.
He aquí el procedimiento:
1. Ingrese a la aplicación.
0. En Componentes Compartidos.
1. Haga clic en Hojas de Estilo en Cascada y siga el asistente para cargar el archivo.
Si desea utilizar una imagen para levantar la caja de ayuda, utilice esta
Ahora, para cada página que contenga campos de ingreso de datos y que desee que
contenga cajas de ayuda para sus campos:
1. En cada elemento al que desee agregarle una caja de ayuda, en el artibuto “Texto
posterior al Elemento” agregue el siguiente código:
Y eso es todo, ahora tiene una manera bonita e interesante de presentar al usuario final
ayuda de manera sencilla e interesante
Esta es la razón por la que les presento esta entrega, sobre todo a aquellos
desarrolladores de Oracle Forms, que aún no han oido hablar de Oracle Application
Express (Apex).
Oracle Forms fue introducido a mediados de los años 80 como una de las primeras
herramientas de desarrollo más poderosas para desarrollar aplicaciones de bases de
datos, con una larga y fructífera vida de cerca de 20 años y que aún hoy en día sigue
cumpliendo con sus objetivo. Durante todo este tiempo Oracle Forms ha pasado del
modo carácter y el modo de bloque a cliente servidor y de allí a Internet con el uso de
Forms Server, sin embargo, debido a las nuevas tendencias, muchas empresas hoy en
día quieren realizar una transición a soluciones basadas en HTML.
Existen muchas alternativas para los desarrolladores que desean aplicaciones nativas en
HTML, una de esas alternativas es utilizar JDeveloper en conjunto con ADF (Oracle
Application Development Framework), alternativa que no vamos a ampliar aquí.
Otra alternativa que debería ser apliamente considerada es Oracle Application Express
(Apex).
Y aún más buenas noticias; Oracle ha anunciado una nueva característica dentro del
ambiente de programación de Apex, en su próxima versión, es probable que contemos
con una herramienta que nos va a ayudar a convertir los Forms de Oracle a páginas de
Apex, así que manténgase en contacto esperando nuevas noticias.
Si usted es desarrollador de Oracle Forms y desea saber más acerca de Apex, le invito a
leer algunas de mis entregas anteriores:
3. En el campo “Atributos de Elemento de Pantalla HTML”, ingrese los atributos que desea
aplicar al campo seleccionado. Por ejemplo: style=”background-color:#CCCCCC;font-
size:20px;color:RED;text-align:left;” . En este caso se está definiendo un fondo de
color gris, con letras de color rojo y de tamaño 20, alineado a la izquierda.
4. También puede agregar texto antes y después del campo, utilizando las opciones “texto
anterior a elemento” y “texto posterior a elemento”.
5. En esta misma sección puede definir el tamaño del campo que se muestra, así como las
características de la celda de la tabla en que se muestra el campo seleccionado.
También puede realizar todas las definiciones de atributos de campos que desee utilizar
en un archivo, o incluirlas como parte del encabezado de la página y luego cambiar el
texto que se indicó en el punto 3 por la respectiva referencia, por ejemplo:
class=”Rojo_Grande”.
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)
2. 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.
3. En la página de “Columnas de Fecha/Visualización”seleccione las columnas tal y como
muestra la siguiente imagen.
4. 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.
6. 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.
7. Ejecute la página, debería ver algo similar a lo que muestra la siguiente imagen.
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ó.
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 = 9_DEPTNO and meetid = 9_MEETID“ (Sin incluir las comillas)
5. Aplique los cambios y ejecute nuevamente su página. Debería ver una imagen similar a la
siguiente.
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.
Les recuerdo que pueden ver este ejemplo funcionando en mi aplicación de ejemplo
en OTN.
Validación de campos utilizando patrones
javascript
Una de las cosas más importantes que debe cuidar todo buen desarrollador, es vigilar
los más posible, la calidad de los datos que se incluyen en un sistema. Bajo este
precepto, es importante el realizar tareas de verificación de datos antes de que estos
sean guardados en las tablas.
Para aquellos de ustedes que deseen aprender más acerca de los patrones o
expresiones regulares, los invito a realizar una búsqueda en Internet, donde pueden
encontrar muy buen material al respecto.
Para utilizar estos patrones o expresiones regulares para validar los datos ingresados en
nuestras formas de Oracle Apex, el procedimiento es el siguiente:
Reemplace “Mensaje de error”, por el mensaje que desea que aparezca mostrado en la
ventana de alerta, cuando el dato ingresado no se adecúa al patrón proporcionado.
La cadena del patrón debe ser ingresada consecutivamente, no debe incluir saltos de línea,
pues esto provocaría un error en la función de validación.
Finalmente, les dejo tres ejemplos de patrones muy útiles y que pueden utilizar en sus
formas.
/[a-zA-Z\s]{10,}/
Patrón para verificar un número telefónico, el cual debe inicial con un 2 o un 8 y que debe
incluir don grupos de números de 4 dígitos cada uno, separados por un espacio en blanco o
un guión.
/^(2|8)\d{3}(-| )\d{4}/
Patrón para verificar una dirección de correo electrónico. Verifica que los dominios esten
contenidos en uno de los siguientes: com, net, org, edu, int, mil, gov, arpa, biz, aero, name,
coop, info, pro, museum
/^\w+([\.-]?\w+)*@\w+([\.-
]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|i
nfo|pro|museum))$/
Para evitar esto, y saber a que registro padre corresponden los registros en la región
del hijo, les propongo esta fácil solución:
1. Cree una página de tipo “Informe” con el código de consulta que desee o necesite, y
como última columna de la consulta, agregue el siguiente código:
CASE
WHEN deptno = 10_DEPTNO then
‘<img src=”#IMAGE_PREFIX#check.gif”>’
ELSE
null
END AS Seleccionado
4. Haga clic en el icono “Editar” del campo de llave primaria del reporte creado
6. Ahora cree una nueva región de tipo “Informe” con el código de la consulta “Hijo” y
agréguele al final la opción de filtro:
Eso es todo, solo le queda ejecutar la página y hacer clic en cualquiera de los iconos de
la columna empleados y ver que sucede.
Recuerde que para hacer su propia página puede utilizar los códigos de consulta
propios, así como las variables que necesite, solamente debe cambiar las
proporcionadas en este ejemplo.
También puede utilizar las imagenes que usted desee, en caso de que las utilizadas en
este ejemplo no sean de su agrado.
Puede ver una versión de este ejemplo funcionando en mi espacio de trabajo en OTN
Para evitar esto, y hacer la aplicación más atractiva para el usuario final, podemos
utiilzar las características de los archivos de estilos (css), de esta manera, podemos
definir el tamaño de cada región que tenemos en nuestra página, de manera que
podamos acomodar cada una de ellas para rellenar de la mejor manera el espacio con
que contamos en pantalla, de acuerdo a una resolución específica.
Utilice el siguiente indicativo para definir y aplicar los tamaños a cada región en sus
páginas:
1. En la cabecera html de la página indicada (la página que desea formatear), incluya el
siguiente código:
<style>
.RegionScroll_tree
{
width:200px;
height:345px;
overflow:auto;
border:solid 0px;
}
.RegionScroll_report
{
width:665px;
height:320px;
overflow:auto;
border:solid 0px;
}
</style>
<div class="RegionScroll_report">
</div>
Y eso es todo. Pero para quienes no han comprendido como funciona, les explico cada
una de las líneas de definición de estilo:
Y eso es todo, ahora al ejecutar su aplicación, le será mostrada la imagen del logotipo
en la parte superior izquierda de cada una de las páginas de su aplicación.
donde:
P4_CAMPOX es el campo tipo radio que controla de acuerdo a su valor si los campos
se
muestran o no.
P4_CAMPO1 y P4_CAMPO2 son los campos a mostrar u ocultar
S es el valor de P4_CAMPOX con el cual se muestran los campos anteriores.
onchange="Show_On_Radio_Value('P4_CAMPOX','P4_CAMPO1','S');
Show_On_Radio_Value('P4_CAMPOX','P4_CAMPO2','S');"
Los campos a mostrar/ocultar deben ser del tipo “Opcional Label” y en la sección de
“Plantillas”, se debe modificar la plantilla de Etiqueta “Opcional Label”, en la
propiedad Definición – Antes de Etiqueta, se debe cambiar el código por el siguiente:
Espero que les sea de utilidad. Como siempre, pueden ver un ejemplo funcionando en la
siguiente dirección de OTN
Ante esta disyuntiva, una de las alternativas que tenemos, es el rediseño de las tablas
de manera que:
1. Se cree una nueva columna de llave primaria, la cual poblemos por medio de una
secuencia.
2. Crear una llave única para la tabla, formada por las columnas que antes conformaban
la llave primaria.
El escenario anterior es el ideal, sin embargo, esto no siempre es posible, sino que más
bien es lo que podremos hacer las menos de las veces.
Entonces, nos queda buscar otra solución que nos permita conservar nuestras tablas tal
cual están definidas. Luego de investigar por un buen rato en Internet, me encontré con
este código escrito por David Njoku en la siguiente
dirección:http://dancingwithapex.blogspot.com/2008/12/tables-with-multiple-primary-
keys-or.html
Básicamente, este código selecciona las tablas con llaves primarias de más de dos
columnas y crea una vista con una nueva columna que contiene las columnas de la llave
primaria concatenadas y las utiliza como nueva llave primaria. También crea un
disparador que controla los procesos de inclusión, borrado y modificación de registros
en las tablas.
Hay algunas consideraciones a tener en cuenta para poder utilizar este código, en mi
caso, le agregué todos los “|” que no aparecen en el código original, además, le agregué
una condición más a la sentencia “select” de la primer sentencia “for” del
procedimiento, para que se ejecute para un esquema específico.
También debe tener en cuenta que si ejecuta el código en un usuario específico, este
usuario debe tener los privilegios necesarios, sobre los objetos utilizados.
Una vez ejecutado el código, tendrá una nueva vista por cada tabla que tenga llaves
primarias compuestas por más de dos columnas. Estas vistas son las que tiene que
utilizar para realizar las formas de mantenimiento y los reportes en Apex.
Puede obtener el código para generar las vistas de las tablas desde el siguiente enlace.
Ahora pues, baje el código, ejecútelo y dispóngase a desarrollar sus nuevas aplicaciones
con Oracle Apex.
Para definir una sentencia que siempre nos funcione y guarde el usuario correcto,
debemos utilizar el siguiente código:
nvl(htmldb_application.g_user,user)
Con lo anterior, nos aseguramos de que si estamos realizando una tarea dentro de
Apex, vamos a registrar el valor de la variable global htmldb_application.g_user, y si
estamos utilizando el código fuera de Apex, entonces registraremos en valor de la
variable USER.
Espero que este tip, les sea de utilidad.
En esta oportunidad, les traigo dos métodos para lograr esto. El primero de ellos se
puede ejecutar solamente después de finalizar la instalación de la base de datos Oracle
XE, y antes de realizar cualquier actualización de la herramienta Apex de Oracle.
1. En Windows, haga clic en el botón “Inicio”, luego en “Base de Datos Oracle 10g
Express Edition”, finalmente en“Iniciar base de datos”.
2. En Linux, haga clic en el botón “Aplicaciones”, “Base de Datos Oracle 10g Express
Edition” e “Iniciar base de datos”.
0. Windows: “Inicio”, “Base de Datos Oracle 10g Express Edition”, “Ir a Página Inicial
de Base de Datos”.
1. Linux: “Aplicaciones”, “Base de Datos Oracle 10g Express Edition”, “Ir a Página
Inicial de Base de Datos”.
$ sqlplus system
Ingrese contraseña: Contraseña_SYSTEM
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
Nota de seguridad:
Con el acceso remoto por HTTP a la base de datos Oracle XE, toda la información
intercambiada entre el navegador y la base de datos es en texto simple – o sea,
desencriptado – incluyendo usuarios de base de datos y sus correspondientes
contraseñas. Si esto es causa de preocupación, NO HABILITE la conexión de acceso
HTTP remoto a la base da datos.
Tags: Oracle XE
Las listas de valores estáticas, son utilizadas para definir una lista descriptiva para un
dominio especificado para una columna de tabla, como por ejemplo, para una columna
que nos indica si un registro está activo o no, y que puede tener dos valores específicos
(digamos S y N).
Las listas de valores dinámicas, son obtenidas a partir de una consulta SQL que se hace
a una tabla y normalmente se utilizan para definir o mostrar los valores de las llaves
foráneas para una tabla específica.
A continuación se detalla el procedimiento para crear cada uno de estos tipos de listas
de valores.
4. Ahora, haga clic en el botón “Siguiente >”, para crear una nueva lista de valores.
5. Para crear una lista de valores de tipo estática:
0. Escriba el nombre de la lista a crear, luego haga clic en el botón de radio “Dinámico”,
para finalmente hacer clic en el botón “Siguiente >”.
1. Ingrese la consulta SQL que devolverá la lista de valores a partir de una (o varias) tabla,
incluyendo como primer columna el valor que se visualizará y como segunda el valor que
se retorna y guarda en el campo.
Ahora que está creada la lista de valores, lo único que resta por hacer, es utilizarla,
pero eso es tema de otro “post”.
En esta ocasión les voy a escribir acerca de uno de estos campos, el cual podemos
utilizar para definir de manera interactiva, el número de líneas que se muestran en un
informe.
1. Cree una nueva página de tipo Informe y defina el reporte que desea utilizar
2. Al terminar de definir el reporte, cree en la misma página, una nueva región de tipo HTML
3. Cree un nuevo elemento en la región que acaba de crear, puede llamarlo P_FILAS con las
siguientes características:
1. Tipo: Lista de Selección con Ejecución
2. Defina en el campo una lista de valores estática, con los valores que desea proporcionar al
usuario como los posibles números de líneas a mostrar en el reporte
Cree una bifurcación incondicional a la página del reporte que está creando
Haga clic en el enlace Informe al lado de la región del Informe que se creó
1. Haga clic en la pequeña linterna a la derecha y seleccione el nombre del campo que define
el número de líneas (P_FILAS)
Eso es todo, ahora lo único que le queda por realizar, es ejecutar su nuevo informe y
ver lo que sucede cuando selecciona un número diferente de líneas en el campo que
definimos para tal efecto.
Si desea ver como funciona este ejemplo, lo puede hacer en mi espacio de trabajo de
OTN, haciendo clic aquí.
Partiendo del hecho de que ya sabemos como crear una aplicación – si no es así los
invito a revisar las publicaciones anteriores – una vez estemos en la página principal de
nuestra aplicación:
4. Cuando la página de carga de imágenes aparezca (ver imagen abajo), haga clic en el
Repita los pasos 3 al 5 del procedimiento anterior, para cada imagen que desee cargar a
su aplicación.
En breve, en mi próxima publicación, les estaré explicando como utilizar estas imágenes
dentro de nuestras aplicaciones. Estén atentos.
Existen dos cadenas de substitución que vamos a utilizar para poder referenciar estas
imágenes, estas cadenas son:WORKSPACE_IMAGES y APP_IMAGES.
Pero ¿cuál de estas cadenas debemos utilizar? y ¿En qué situaciones usamos cada una
de ellas?
Con todo lo anterior dicho, vamos a suponer que creamos en nuestro espacio de trabajo
dos imágenes, una llamada foto.png”, la cual no definimos como parte de una
aplicación; y una segunda imagen llamada photo.png, la que definimos que pertenece a
la aplicación 110, por ejemplo.
<img src=”#WORKSPACE_IMAGES#foto.png”>
<img src=”#APP_IMAGES#foto.png”>
En esta ocasión, voy a iniciar una serie de publicaciones acerca de una de las
características más importantes de Oracle Apex, loscomponentes compartidos.
Los componentes compartidos, nos permiten definir ciertos tipos de elementos, los
cuales podemos utilizar en cualquiera de las páginas que componen una aplicación.
La anterior es apenas una pequeña explicación de cada uno de los diferentes grupos de
componentes compartidos con que contamos en Oracle Apex. En las siguientes
entregas, me voy a estar refiriendo de manera más extensa a cada uno de estos
grupos, de manera que los puedan conocer a mayor profundidad, se familiaricen con
ellos y los puedan usar en sus aplicaciones.
En breve voy a estar publicando información sobre el primero de ellos: Aplicación. Así
que por favor estén atentos.
Crear informe con imagen almacenada en una
tabla
Me han consultado como mostrar en un informe, una imagen almacenada en una tabla
de la base de datos.
SELECT
"PRODUCT_ID" "PRODUCT_ID",
"PRODUCT_NAME" "PRODUCT_NAME",
"PRODUCT_DESCRIPTION" "PRODUCT_DESCRIPTION",
"LIST_PRICE" "LIST_PRICE",
dbms_lob.getlength("PRODUCT_IMAGE") "PRODUCT_IMAGE"
FROM
"DEMO_PRODUCT_INFO"
3. Complete el informe
IMAGE:DEMO_PRODUCT_INFO:PRODUCT_IMAGE:PRODUCT_ID::::::inline:Descargar
en donde:
Eso es todo, si ejecutan la nueva página, deberÃan estar viendo en cada línea del
reporte, la correspondiente imagen en la columna indicada.
En una entrega anterior, se tocó de forma breve y general cada uno de los elementos
que componen los Componentes Compartidos de una aplicación Apex.
Para luego ir explicando cada uno de los restantes componentes de los Componentes
Compartidos.
1. Definición
2. Comentarios
Definición
Nombre
Disponibiliad
Notificación global
Sustituciones
Logotipo
Opciones de creación
Tema
Nombre
En esta sección definimos los datos que identifican la aplicación, dentro de los datos que
vamos a encontrar en ella están:
Aplicación Número de identificación numérico (identificador) que identifica la aplicación.
Cada aplicación se identifica de forma única mediante un identificador.
* YYYY.MM.DD
* MM.DD.YYYY
* DD.MM.YYYY
<img src=”/i/go.gif”>
Tipo de Introduzca el tipo de medio físico de Internet. Un tipo de medio físico de
Medio Físico Internet es un identificador de dos partes para los formatos de archivo de
Internet. Un tipo de medio físico está compuesto al menos por dos partes: un
tipo y un subtipo, y uno o más parámetros opcionales. Este tipo de medio físico
se utiliza en la cabecera HTTP Content-Type al presentar la página.
www-proxy.us.oracle.com
Registro Determina si la actividad del usuario se registra en el log de actividades. Si se
define en Sí, se registran todas las vistas de página, permitiendo que un
administrador controle la actividad del usuario para cada aplicación.
&ITEM.
&ITEM
Grupo de
Para uso futuro
Aplicaciones
Estén atentos, hasta donde el tiempo me lo permita voy a tratar de publicar diariamente
hasta concluir este tema.
Componentes Compartidos II: Aplicación –
Disponibilidad
Hasta el momento, de esta serie de publicaciones acerca de los elementos que forman
parte de los Componentes Compartidos, he tocado los siguientes temas:
Disponibilidad
Notificación Global
Introduzca el mensaje que desea que Puede utilizar una notificación global para comunicar el
aparezca en la cadena de sustitución estado del sistema. Si la plantilla de página contiene
#GLOBAL_NOTIFICATION# de la una cadena de sustitución #GLOBAL_NOTIFICATION#,
página. el texto que se introduzca aquí se muestra en cada
página.
Por ejemplo, suponga que ha introducido el mensaje
“Merienda campera del equipo este viernes” en este
atributo. Si las plantillas de página soportan la cadena
de sustitución de notificación global, este mensaje
aparecería en cada página.
En la siguiente entrega les escribiré acerca de: Componentes Compartidos II: Aplicación
– Sustituciones.
Sustituciones
Esta sección la usamos para definir las cadenas de sustitución que queremos o
necesitamos usar en nuestra aplicación.
Una cadena de sustitución es una variable global que definimos y podemos utilizar en
cualquier lugar en nuestra aplicación, estas son definidas una única vez y eso se hace
aquí.
Cadena de
Es el nombre con que vamos a referenciar la cadena de sustitución.
Sustitución
Valor de Es el valor que se va a mostrar cada vez que hagamos uso de la cadena de
Sustitución sustitución definida.
Utilice las sustituciones en aquellos casos en que ciertos títulos o valores son de uso
frecuente, de manera que no sea necesario definirlos en cada oportunidad, de esta
manera solo debemos referenciarlos por el nombre de la cadena que definimos.
Logotipo
Utilice atributos de logotipo para definir un logotipo de aplicación, puede estar basado
en texto o imagen. Para utilizar esta función, la plantilla de página debe incluir la
cadena de sustitución#LOGO#.
/i/oracle.gif
Aplicación de Ejemplo
Atributos de En los atributos de logotipo, introduzca los atributos para el logotipo.
Logotipo
Ejemplo de imagen:
En general, casi la totalidad de las plantillas predefinidas que incluye Apex, tienen
definida la cadena de sustitución #LOGO#, en la esquina superior derecha de cada
página, pero la pueden usar en cualquier lugar donde deseen incluir el logotipo definido
en este elemento.
Opciones de Creación
Sigan al pendiente.
Tema
En esta sección vamos a encontrar una lista de los diferentes temas que hemos
seleccionado como posibles de utilizar en la aplicación.
En esta sección podemos observar los valores definidos para los tres principales tipos de
página que podemos definir en nuestra aplicación. Se definen específicamente estos
datos:
Plantilla de Opcional. Especifica la plantilla de página que se utilizará para los errores que
Página de Error aparecen en otra página frente a los que se muestran en línea. Deje este
atributo en blanco si no desea utilizar una plantilla diseñada para mostrar
errores.
Y una vez visitadas todas ellas, les invito a continuar con esta serie, que en esta
oportunidad trata acerca de:
Esta sección, al igual que la anterior, lista las diferentes plantillas que se encuentran
definidas para los posibles tipos de páginas que podemos crear en nuestra aplicación.
Se listan las siguientes plantillas:
Calendario Plantilla de calendario por defecto que se utiliza al crear un calendario
nuevo. Podrá sustituir este valor por defecto.
Lista Plantilla de lista por defecto utilizada al crear una lista nueva. Podrá
sustituir este valor por defecto.
Ruta de Navegación Plantilla de informe por defecto utilizada al crear nuevas regiones de ruta
de navegación. Podrá sustituir este valor por defecto.
Botón Plantilla por defecto que se utilizará al crear nuevos botones controlados
por plantilla. Podrá sustituir este valor por defecto.
Región Plantilla de región por defecto que se utiliza al crear una región nueva.
Podrá sustituir este valor por defecto.
Región de Gráfico Especifica la plantilla de región por defecto utilizada al crear un gráfico.
Podrá sustituir este valor por defecto.
Región de Pantalla Especifica la plantilla de región por defecto utilizada al crear una
pantalla. Podrá sustituir este valor por defecto.
Región de Informe Especifica la plantilla de región por defecto utilizada al crear un informe.
Podrá sustituir este valor por defecto.
Región de Pantalla Especifica la plantilla de región por defecto utilizada al crear una nueva
Tabular pantalla tabular. Podrá sustituir este valor por defecto.
Región de Asistente Especifica la plantilla de región por defecto utilizada al crear un nuevo
componente de asistente. Podrá sustituir este valor por defecto.
Región de Ruta de Especifica la plantilla de informe por defecto utilizada al crear nuevas
Navegación regiones de ruta de navegación. Podrá sustituir este valor por defecto.
Región de Lista Especifica la plantilla de lista por defecto utilizada al crear nuevas
regiones de lista. Podrá sustituir este valor por defecto.
En todos los casos, puede cambiar la plantilla por defecto seleccionada en la página
Definir Tema.
Y en la próxima entraga, el último de los elementos de esta primera sección de
Componentes Compartidos, los espero.
Comentarios
En esta segunda división, incluya cualquier comentario que considere pertinente acerca
de la aplicación. Esta es una división sin mucho misterio, es simplemente lo que su
nombre indica. Una división para ingresar comentarios
Se van a encontrar aquí dos campos diferentes:
Espero que les sea de utilidad y los espero en la siguiente entrega de esta serie tutora.
El mes anterior, inicie con una serie de publicaciones en que se trata los aspectos
relacionados con los componentes compartidos de una aplicación Oracle Apex, la
primera de ellas, “Componentes Compartidos: Aplicación”, puede ser accesada
desde aquí.
Para continuar con esta serie, voy a iniciar una nueva serie con el segundo grupo de
elementos que coforman estos componentes compartidos.
Lógica
Este grupo de elementos, define o puede ser usado para definir todos aquellos
elementos que son utilizados de manera reiterada y en diferentes partes de una
aplicación, de manera que no sea necesario el estar reescribiendo código, o calcular
constantemente valores generales.
Procesos de aplicación
Cálculos de aplicación
Opciones de creación
Cada uno de ellos van a ser tratados por separado en una nueva serie de publicaciones
acerca de los Componentes Compartidos de una aplicación Oracle Apex.
Preparense para conocer cada uno de los anteriores puntos en detalle, ya están siendo
escritos.
Elementos de aplicación
Los elementos de aplicación son “variables” de tipo global que podemos utilizar para
mantener información de uso generalizado en diferentes páginas de una aplicación,
algunas de sus características son:
3. Se utilizan los cálculos “En Nueva Instancia” para definir el valor de los elementos una vez
para una sesión.
4. Elementos de aplicación son usados para mantener el estado de la sesión que no se
muestra ni es específico de ninguna página.
Existen dos pestañas con información acerca de los diferentes elementos de aplicación,
la primera de ellas denominada“Elementos de Aplicación”, en donde se muestran los
diferentes elementos de aplicación existentes.
Hasta el momento, en esta nueva serie acerca de los Componentes Compartidos de una
aplicación de Oracle Apex, referente a la parte “Lógica” de la misma, se han realizado
las siguientes publicaciones:
Hoy voy a continuar con el siguiente de los elementos que conforman este grupo de
componentes:
Además de la pestaña que muestra la imagen de arriba, existen dos más de ellas para
los procesos de aplicación. La primera de ellas es la de “Uso”:
Una vez definido lo anterior, es importante saber cómo crear un proceso de aplicación.
Para ello utilizamos el siguiente procedimiento:
2. En la sección de “Identificación”:
2. En secuencia, ingrese un número que indique la prioridad u orden de ejecución del proceso
(en caso de que existiera más de uno).
3. En el campo “Punto”, seleccione de la lista proporcionada, el momento en que se va a
ejecutar el proceso en cada página. Recuerde que si elije “A Petición”, solo se ejecutará el
proceso cuando así sea solicitado por una página específica.
2. Incluya el texto del mensaje que se mostrará en caso de producirse un error al ejecutar el
proceso, esto en el campo “Mensaje de Error”.
4. En la sección “Condicionalidad”:
1. Defina las condiciones que se deben cumplir para que el proceso se ejecute (de ser
necesario).
Una vez creado un proceso, lo puede editar, haciendo clic sobre el icono
correspondiente de la pantalla de “Procesos de Aplicación”.
3. El texto de proceso se trata como bloque PL/SQL anónimo. Application Express colocará
“begin” y “end;” alrededor de este código. Si necesita declarar variables locales, deberá
hacerlo mediante un bloque “declare”, “begin” y “end”.
Una vez dicho lo anterior, el siguiente es el procedimiento paso a paso para crear
ambas páginas, la de reporte sobre la tabla que deseamos consultar y la
correspondiente forma de mantenimiento.
correspondiente a la aplicación
20. En la página prinicpal de su aplicación tendrá dos nuevas páginas. Haga clic en el enlace de
la página de mantenimiento recien creada
21. En la sección Procesos del área de Representación de Página, haga clic en el icono Crear
22. En el tipo de proceso, seleccione Paginación de Pantalla
27. Haga clic en el botón , para finalizar la creación del proceso que
controla la navegación
28. Eso es todo. En la página aparecerá un nuevo proceso, tal como se muestra en la imagen a
continuación
Para ejecutar y ver como funciona el procedimiento que acabamos de definir, ejecute la
aplicación y diríjase a la página del reporte creado, luego haga clic en el icono de
mantenimiento de cualquiera de los registros mostrados y empiece a utilizar la
navegación de registros.