Sie sind auf Seite 1von 121

¿Qué es Oracle Apex?

Que mejor para iniciar esta serie de publicaciones, que una breve
descripción de lo que es Oracle APEX.

Oracle Application Express (Oracle APEX), se conocía anteriormente


como HTML_DB, es una herramienta de desarrollo basada en un
navegador web, que permite desarrollar de manera rápida
aplicaciones web para la base de datos Oracle. Utilizando solamente
un navegador web y limitada experiencia en programación, se puede
desarrollar y desplegar aplicaciones profesionales que son a su vez
rápidas y seguras. El lenguaje de programación que va a necesitar, si
la funcionalidad estándar del paquete no llena por completo sus
necesidades es PL/SQL.

Muchos de los desarrolladores Oracle existentes, se están moviendo


hacia APEX, porque es muy sencillo (no es necesario un servidor de
aplicaciones) y además utiliza PL/SQL.

Como todo paquete existente, tiene sus pros y sus contras, de las
cuales, las principales son:

Pros:

1. No existe un costo de licenciamiento separado para las aplicaciones


construidas con APEX ” el producto es una opción “sin-costo” con
todas las ediciones de bases de datos.
2. Los ayudantes (“wizards”) en el producto hacen posible construir
aplicaciones web simples pero a la vez robustas, rápidamente.
3. Las organizaciones con experiencia en programación PL/SQL pueden
apreciar que el lenguaje para definir la lógica del negocio, más alla
de solo la funcionalidad, es PL/SQL.
4. Al ejecutarse las aplicaciones APEX en la base de datos, su
desempeño es excelente (a menos que el código SQL esté escrito de
una manera pobre por los desarrolladores), no existe el sufrimiento
de tránsito en exceso entre el servidor de aplicaciones y la base de
datos que caracterizan el pobre desempeño de las aplicaciones en
tres capas.

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:

1. Habilitar el registro a nivel de la aplicación, lo que resulta en registros en la vista


apex_workspace_activity_log.

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

De esta manera, siempre mantendremos actualizada y a mano una manera sencilla y


práctica de acceder a las páginas que más utilizamos.
Creando una aplicación con Oracle Apex – Parte
1
Ha llegado hasta mis manos la inquietud de uno de los lectores de este blog, de explicar
paso a paso, la creación de una aplicación utilizando Oracle Apex, esto con la intención
de que todos aquellos que estén empezando a conocer la herramienta se puedan
familiarizar con ella.

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é:

 ¿Cómo crear un espacio de trabajo para la aplicación?

 ¿Cómo crear el contenedor para la aplicación?

 ¿Cómo definir los valores por defecto de la Interfaz de Usuario?

 ¿Cómo crear una forma para captura de datos?

 ¿Cómo generar un reporte con la ayuda del asistente de informes?

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:

¿Cómo crear un espacio de trabajo para la aplicación?

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.

Para el ejemplo, vamos a suponer que tiene instalada la herramienta en su


computadora personal, y que definió como puerto de acceso el puerto 8080; entonces,
tenga a mano esta información:
Dirección a herramienta: http://127.0.0.1:8080/apex/

Area de trabajo principal: INTERNAL

Usuario: ADMIN

Ahora sí, empecemos a crear nuestra propia área de trabajo para la aplicación que
vamos a crear más adelante:

1. Abra su navegador de Internet preferido (el mío es Firefox) y en la barra de dirección


escriba la cadena que definimos arriba como “Dirección a herramienta”. No se olvide de
pulsar la tecla de retorno al final de la cadena. Una vez hecho esto le será mostrada una
pantalla similar a la que se muestra a continuación.

2. En el campo “Espacio de Trabajo”•, escriba INTERNAL.

3. Introduzca ADMIN en el campo •”Usuario”••.

4. En el campo •”Contrasena”•, ingrese la contraseña que se definió para el administrador


a la hora de efectuar la instalación de la herramienta.

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.

9. Haga clic en el botón •”Siguiente”••. Aparecerá una pantalla similar a la siguiente.


10. Aquí tiene la opción de utilizar un esquema de base de datos existente, o bien, puede crear
uno nuevo, en nuestro caso, vamos a usar el esquema SCOTT que instala toda base de
datos Oracle.

11. En el campo “¿Desea volver a utilizar un esquema existente?”, seleccione la


opción •”S픕•.

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.

13. Para continuar haga clic en el botón •”Siguiente”••.


14. Es el momento de crear el usuario administrador del Espacio de Trabajo, para eso se utiliza
la pantalla que se muestra arriba.

15. Mantenga el campo Usuario, tal y como aparece.

16. Ingrese una contraseña para el usuario.

17. Si lo desea, puede teclear el Nombre y Apellidos de la persona que se define como
administrador.

18. Proporcione el correo electrónico del administrador del Espacio de Trabajo.

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.

Creando una aplicación con Oracle Apex – Parte


2
En la entrega anterior, vimos como crear un “Espacio de Trabajo”• para nuestra
aplicación, al cual le asignamos un nombre y lo adjuntamos a un esquema de base de
datos, en nuestro caso el del usuario SCOTT.

Hoy vamos a ver ¿Cómo crear el contenedor para la aplicación?

¿Cómo crear el contenedor para la aplicación?

Lo que llamo “contenedor”• de la aplicación, es algo así como un espacio dentro de la


base de datos, específicamente en el esquema utilizado para crearlo, en donde se
crearan, las formas, reportes y cualquier otro objeto que componga nuestra aplicación,
tal como imágenes, scripts y algunos otros objetos que con el tiempo iremos
conociendo.

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:

1. Usando su navegador de Internet preferido, ingrese la dirección de inicio de su aplicación


Apex.

2. Una vez mostrada la pantalla de inicio, en el campo “Espacio de Trabajo”,


ingrese Ejemplo.

3. En el campo “Usuario”•, escriba ADMIN.

4. En el campo “Contraseña”•, ingrese la contraseña que definió al crear el espacio de


trabajo.

5. Haga clic en el botón Conectar.


6. Le será mostrada una pantalla similar a la que se muestra arriba. Haga clic en el
botón “Aplication Builder”•.

7. Se va a encontrar con una pantalla similar a la anterior. Para continuar e ingresar al


“Wizard”• de creación del contenedor de la aplicación, haga clic en el botón “Crear>”•.
8. La imagen anterior muestra la nueva pantalla, aquí puede hacer clic sobre la imagen que se
encuentra debajo del botón de radio “Crear Aplicación” o bien, en el
botón “Siguiente>”•.

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>”•.

10. Es el momento de agregar contenido a nuestro contenedor. Al menos, debemos agregar


una página a este, pero podemos agregar más de una, que puede ser una página en
blanco, un informe, una pantalla, una pantalla tabular, un maestro detalle o un Informe
con su respectiva pantalla de mantenimiento. En nuestro caso, vamos a agregar una
página en blanco, la cual vamos a llamar “Principal” y que vamos a utilizar como página
principal de nuestra aplicación. Para esto:

1. En el campo “Nombre de la Página”, escribimos“Principal”.

2. Hacemos clic en el botón “Agregar Página”.

3. Hacemos clic en el botón “Siguiente>”.


11. Ahora debemos definir parte del “look and feel” de nuestra aplicación, debemos de decidir
si utilizaremos o no separadores, y en caso afirmativo, si estos serán de uno o dos niveles.
Para nuestra aplicación, vamos a usar “Un Nivel de Separadores”, para esto seleccione el
botón de radio “Un Nivel de Separadores” y luego haga clic en el botón “Siguiente>”.
12. Haga clic en el botón “Siguiente>”, en la pantalla que se muestra arriba.

13. En la pantalla que se muestra anteriormente, vamos a definir algunas características


generales de la aplicación y de suma importancia, la primera de ellas es el tipo de
autenticación que vamos a usar para ingresar a nuestra aplicación. En nuestro caso vamos
a utilizar “Cuenta de Base de Datos”, lo que significa que se debe tener un usuario de base
de datos para poder utilizar la aplicación. Además, en el campo “Idioma”, seleccionamos
“Español” (puede seleccionar de todos los disponibles el correspondiente a su país),
también, en el campo “Formato de Fecha” ingrese el formato de fecha que prefiera, para
todos los campos fecha que se vayan a utilizar en la aplicación; en mi caso voy a usar el
formato “DD/MM/YYYY”. Finalmente, haga clic en el botón “Siguiente>”.
14. Se debe seleccionar la apariencia que tendrá la interfaz de usuario, para nuestra aplicación,
vamos a utilizar el “Tema 3″, así que hacemos clic en el botón de radio correspondiente a
esta opción y luego en el botón “Siguiente>”.
15. Ahora ya tenemos definido todo lo que necesitamos para crear nuestro contenedor, lo único
que resta, es hacer clic en el botón “Crear”, de la pantalla que se muestra en la parte
superior. Al finalizar el procedimiento, aparecerá una nueva pantalla, esta vez la del
contenedor de la aplicación que acabamos de crear y que es similar a la que se muestra a
continuación.

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.

Creando una aplicación con Oracle Apex – Parte


3
En la entrega anterior, creamos el contenedor para nuestra aplicación, al cual en
adelante, vamos a llamar únicamente como “la aplicación”.

Es el momento de empezar a definir las características de nuestra aplicación, para ello,


en esta nueva entrega, les voy a explicar cómo definir los valores por defecto de la
Interfaz de Usuario. En esta, definimos “las etiquetas” que llevarán los diferentes
campos de tablas o vistas que utilizaremos en nuestra aplicación, y que pueden
aparecer en formularios o reportes.

En realidad es un proceso muy sencillo, y que paso a definir a continuación.

¿Cómo definir los valores por defecto de la Interfaz de


Usuario?

En el último paso de la publicación anterior, quedamos en la pantalla de nuestra


aplicación, en donde aparecían dos páginas definidas durante el proceso de creación de
la aplicación, de aquí en adelante vamos a continuar.

1. Haga clic en el botón “Componentes compartidos”.

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:

1. Haga clic en la tabla que desea trabajar.


2. Aparecerá una pantalla similar a la anterior, aquí, haga clic en el botón “Crear Valores por
Defecto de Interfaz de Usuario”.

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.

2. En el campo “Título de Región de Informe”, ingrese el título que aparecerá como


encabezado de reportes.

3. En el campo “Etiqueta”, teclee la etiqueta que tendrá cada campo de la tabla/vista.

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.

5. Haga lo mismo del paso anterior en la columna “Incluir en Pantallas”.

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”.

5. Haga clic en el botón “Aplicar Cambios”.

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.

Creando una aplicación con Oracle Apex – Parte


4
Hasta este momento hemos visto como preparar el escenario para crear una aplicación
con Oracle Apex, ahora llegó la hora de empezar a agregarle contenido a nuestra
aplicación. Y vamos a empezar por crear una forma para levantado de información.

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.

Iniciemos pues con el tema de este artículo.

¿Cómo crear una forma para captura de datos?

Suponiendo que estamos iniciando desde fuera:

1. Ingrese a su aplicación (recuerde que estábamos usando el espacio de trabajo “Ejemplo”,


usuario “ADMIN” y la clave de ingreso que cada uno ha definido).

2. Haga clic en la imagen “Application Builder”.

3. Ahora haga clic sobre el icono de la aplicación “Empleados”.


4. La imagen de arriba muestra la pantalla que debería estar viendo en este momento. Como
lo que queremos hacer es crear una nueva página para nuestra aplicación; haga clic en el
botón“Crear Página >”.
5. La imagen anterior muestra la pantalla de selección del tipo de página que queremos crear,
en nuestro caso, vamos a seleccionar la opción “Pantalla”, luego de lo cual tenemos que
hacer clic en el botón “Siguiente >”.

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:

 Se creó en la parte superior de la pantalla, un nuevo separador llamado “Empleados”, el


cual utilizamos cada vez que queremos mantener datos de los empleados, para lo cual solo
debemos hacer clic sobre él.

 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”.

 El campo de “Fecha Ingreso” muestra a su derecha un pequeño botón , el cual levantará un


calendario desde el cual podremos seleccionar la fecha indicada.

 Solo se muestran los botones “Regresar” y “Crear”, los botones“Suprimir” y “Aplicar


Cambios” solo se mostrarán cuando accedemos a esta pantalla con un número de
empleado existente, lo cual es otro tema a tratar en una entrega posterior.

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?

Creando una aplicación con Oracle Apex – Parte


5
Para finalizar esta serie acerca de ómo crear una aplicación básica en Oracle Apex, les
voy a explicar cómo crear un reporte para nuestra aplicación.

Recapitulando, vimos en las entregas anteriores:

 ¿Cómo crear un espacio de trabajo para la aplicación?

 ¿Cómo crear el contenedor para la aplicación?


 ¿Cómo definir los valores por defecto de la Interfaz de Usuario?

 ¿Cómo crear una forma para captura de datos?

Empecemos pues con la tarea que nos queda pendiente.

¿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).

 El campo donde dejaremos en resultado de la operación PX_TOTAL.

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.

Segundo: en el campo PX_2, en los “Atributos de Elemento de Pantalla HTML”,


escriba el siguiente código:

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.

Listas de valores en cascada


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:

1. Ingrese a su área de trabajo.

2. Seleccione la aplicación en la que va a crear la página.

3. Cree una nueva página en blanco, haciendo clic en el botón“Crear Página”.

4. Cree una bifurcación incondicional direccionada al mismo número de página que acaba de
crear.

5. Ahora cree una región de tipo “HTML”.

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.

7. 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

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:

select ENAME display_value, EMPNO return_value


from EMP
where deptno = x_LOV_DEPTO
order by 1

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.

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
Exportando reportes Apex a Excel
Son varias las solicitudes que me han hecho para que explique cómo exportar un
reporte desde Apex a Microsoft Excel, por esto, en este artículo voy a definir un paso a
paso de cómo lograr esto, con el uso de un paquete desarrollado por mi amigo Denes
Kubicek para tal propósito.

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.

El procedimiento para instalar el paquete y poder exportar reportes a Excel es el


siguiente:

1. Descargue el paquete desde el enlace que se proporciona al final de este artículo.

2. Descomprima el contenido del archivo.

3. Instale el paquete en el esquema del usuario que desea utilizarlo:

1. Ejecute una instancia de SQL: DRIVE: sqlplus usuario/clave@conexion

2. @export_to_excel_pkg.sql

Ingrese a la aplicación Apex

Si no cuenta con una “Página 0″ definida, créela.

Ingrese a Componentes Comunes y luego a Procesos de Aplicación

Haga clic en el botón “Crear >” y cree un proceso con las siguientes características:
0. Nombre: DOWNLOAD_EXCEL

1. Secuencia: 1

2. Punto: En carga: Antes de cabecera (cabecera de plantilla de página)

3. Haga clic en el botón “Siguiente >”

4. En el texto de proceso ingrese el siguiente segmento de código:

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

6. Haga clic en el botón “Siguiente >”

7. Haga clic en el botón “Crear Proceso”

Cree los siguientes elementos de aplicación: T_EXCEL_NAME, T_PAGE y


T_REGION_ID:

0. Ingrese a Componentes compartidos y a Elementos de aplicación

1. Para cada uno de los elementos haga clic en el botón“Crear >”


2. Ingrese el nombre de cada elemento

3. Haga clic en el botón “Crear”

Ingrese al reporte que desea exportar y diríjase a la sección de Regiones

En la región del reporte deseado, haga clic en el enlaceInforme

Allí, en la sección de Exportación de Informe, seleccione “Sí”en el campo “Activar


Salida de CSV”

En el campo “Etiqueta de enlace”, ingrese el siguiente código:

<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>

Haga clic en la pestaña Atributos de Impresión y seleccione“Sí” en el


campo “Activar Impresión de Informe”

Haga clic en el botón “Aplicar Cambios”

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.

6. El paquete NO FUNCIONARÁ• para reportes del tipo “Función retornando 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.

Suerte y espero tenerlos de regreso pronto con sus comentarios, preguntas y


sugerencias. A continuación los enlaces de descarga de los paquetes para exportar a
Excel.

Paquete exporta reportes desde Apex


Paquete exporta reportes desde Oracle XE

Impresión PDF en Oracle Apex

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

Su servidor de aplicaciones puede ser Oracle BI Publisher (como se mencionó arriba),


OC4J con Apache FOP o cualquier otro motor de procesamiento XSL-FO estándar.
Lógicamente, si se pudiera utilizar BI Publisher como su servidor de reportes, se tendrá
un mayor nivel de funcionalidad, a continuación se presenta una breve descripción de
ambas tipos de configuración para que se pueda comparar.

Opción Estándar (Básica)

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.

Antes de empezar, usted va a necesitar OC4J instalado y ejecutándose. La siguiente


versión de OC4J está verificada y trabaja con la solución FOP:

 Oracle Containers para J2EE (10.1.3.2)

o Disponible para descargar desde OTN

o Instrucciones de instalación y configuración (en inglés)

Paso 1: Instalando el archivo WAR

Coloque el archivo fop.war (localizado en directorio_apex/utilities/fop) en una


localización accesible de su computadora local. Luego siga las siguientes instrucciones:
1. Navegue hasta la Consola de OC4J del Enterprise Manager (http://localhost:8888/em) Los
datos deben corresponder con sus datos de configuración.

2. Selecciones la pestaña de Aplicaciones

3. Haga clic en el botón “Desplegar” (Deploy)

4. En la página de “Desplegar: Seleccionar archivo” utilice la opción “El archivo está


presente en el host local. Cargar el archivo al servidor donde el Control de Servidor de
Aplicaciones está ejecutándose” (o algo similar). Use el navegador de archivos para
seleccionar el archivo fop.war y haga clic en el botón “Siguiente”.

5. En la página “Desplegar: Atributos de Aplicación” defina el nombre de la aplicación


como “fop” y limpie o desmarque la opción “Context root”, luego haga clic en el
botón “Siguiente”.

6. En “Desplegar: Definiciones de desplegado” haga clic en el botón “Desplegar”.

Paso 2: Configurar Apex para utilizar la impresión PDF y JSP

Una vez que tiene FOP instalado, accese los parámetros de Impresión de Reporte:

1. Acceda a la página de Administración de Servicios

2. Seleccione “Administrar Servicio”

3. Seleccione “Definiciones de Instancia” , bajo Administrar Definiciones de Ambiente

4. Haga clic en Impresión de Reportes, para enfocarse en los atributos de Impresión de


Reportes únicamente

Ahora, especifique los siguientes atributos:

 Oracle BI Publisher: Soporte Estándar

 Protocolo Servidor de Impresión: HTTP o HTTPS (dependiendo de su configuración


particular)

 Dirección de host de Servidor de Impresión: el nombre de la computadora donde el


contenedor java está ejecutándose – por ejemplo: micompu.micompañia.com

 Puerto del Servidor de Impresión: el puerto en que el OC4J está escuchando – por
ejemplo 8888

 El script del Servidor de Impresión: /fop/apex_fop.jsp

Asegúrese de ingresar las definiciones del servidor de aplicaciones como se especifica,


no use http:// delante de su nombre de computadora, no use dos puntos (:) en el
puerto y no utilice “/” después del nombre del JSP, solo por
delante:“/fop/apex_fop.jsp”.
Nota:Las imagenes utilizadas en este artículo son propiedad de la Corporación Oracle.

Mensajes de ayuda en caja “pop-up”


Una de las cosas más importantes en toda aplicación, es proporcionar al usuario final, la
mayor ayuda posible, de la manera más sencilla. Es por eso que en esta ocasión, les
ofrezco una alternativa para mostrar al usuario mensajes de ayuda en una ventana que
se levanta al pasar el puntero del mouse sobre un enlace, el cual puede ser del tipo
texto, o bien, una imagen.

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. Descargue el archivo con el código javascript de aquí: cajatip.js

2. Descargue la hoja de estilo en cascada para la caja: pista.css

3. Cargue el archivo pista.css en la aplicación:

1. Ingrese a la aplicación.

2. Luego a Componentes Compartidos

3. Por último a Archivos estáticos y siga el asistente para cargar el archivo.

Ahora cargue el archivo cajatip.js en 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

0. Nuevamente en Componentes Compartidos

1. Ingrese a Imágenes y complete el asistente para cargar la imagen anterior.

Ahora, para cada página que contenga campos de ingreso de datos y que desee que
contenga cajas de ayuda para sus campos:

0. En la definición de la página, en Encabezado HTML ingrese el siguiente código:

<script type="text/javascript" src="#WORKSPACE_IMAGES#cajatip.js">


</script>
<link rel="stylesheet" type="text/css"
href="#WORKSPACE_IMAGES#pista.css">

1. En cada elemento al que desee agregarle una caja de ayuda, en el artibuto “Texto
posterior al Elemento” agregue el siguiente código:

<a href="#" class="enlace_pista" onMouseover="muestrapista(


'Texto de ayuda.', this, event, '150px')">[?]</a>

Si desea un enlace de texto, o bien:

<a href="#" class="enlace_pista" onMouseover="muestrapista(


'Texto de ayuda.', this, event, '150px')">
<img src="#WORKSPACE_IMAGES#help.png"></a>

Si desea utilizar la imagen para acceder a la caja de ayuda.

2. En el código anterior, en cualquiera de los dos casos, cambie el código “Texto de


ayuda” por el mensaje que desea que sea mostrado para cada campo en particular.

3. También puede modificar el tamaño de la caja de ayuda, si cambia el cuarto parámetro de


la funcion muestrapista

Y eso es todo, ahora tiene una manera bonita e interesante de presentar al usuario final
ayuda de manera sencilla e interesante

Si lo desea, puede modificar el archivo pista.css para cambiar el color de fondo de la


caja, el tipo y tamaño de letra o cualquier otra característica de la caja.

Oracle Apex para desarrolladores de Oracle


Forms
Existe una marcada tendencia a buscar sistemas livianos, de bajo consumo de ancho de
banda en las redes de las empresas y que permitan el uso de estaciones de trabajo de
bajo costo, esto con el fin de bajar los costos de operación de las mismas y sobre todo
en estos momentos “de crisis”.

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).

Si su proyecto o departamento de TI cuenta con lo siguiente:

 Profesionales de TI con conocimientos considerables de SQL y PL/SQL

 Experiencia limitada en programación orientada a objetos

 Tablas almacenadas en una base de datos Oracle

Entonces debería considerar el uso del Apex en el desarrollo de sus aplicaciones. La


siguiente tabla muestra algunas diferencias y similitudes existentes entre Oracle Forms
y Apex.

Característica Oracle Forms Apex Descripción


4GL Si Si Oracle Forms presenta las
Declarativo aplicaciones usando metadata
almacenada en un archivo
.fmx. Apex presenta las
aplicaciones utilizando
metadata almacenada en una
base de datos Oracle.
Lenguajes SQL y PL/SQL SQL y PL/SQL Oracle Forms ejecuta
4GL PL/SQL del lado del cliente.
Apex utiliza PL/SQL del lado
del servidor.
Interface de Java HTML Oracle Forms es accesado
Usuario utilizando un navegador web
y su interface de usuario es
presentada usando un JVM.
Apex también se invoca
desde un navegador web pero
su interface de usuario es
HTML y JavaScript.
Dibujo de la Ventanas/Lienzos Páginas/Regiones Oracle Forms usa
página posicionamiento exacto y
Apex usa posicionamiento
relativo HTML.
Control de Desde Javascript y AJAX Oracle Forms provee
campos del Disparadores validación robusta y
lado del cliente procesamiento a nivel de
campo. Apex permite
validación y procesamiento
de eventos declarativos a
nivel de página. La validación
y el procesamiento de eventos
a nivel de campo requieren el
uso de Javascript y AJAX.
Apoyo a Si Si Ambos Oracle Forms y Apex
Servicios Web apoyan el llamado a servicios
Web, por ejemplo BPEL.
Gráficos BI Beans Flash Oracle Forms usa BI Beans
como su motor de gráficos
integrado. Apex usa Flash
Charts como su motor de
gráficos integrado.
Bloqueo Pesimista, Optimista, Oracle Forms permite un
Optimista, Personalizado rango de modelos de bloqueo
Personalizado con el modelo pesimista por
omisión. Debido a su
arquitectura asincrónica,
Apex usa un modelo de
bloqueo optimista.
Conexión a Sincrónica Asincrónica Oracle Forms utiliza
Base de Datos conexiones sincrónicas para
permitir a las transacciones
abarcar múltiples
interacciones en pantalla.
Apex no permite abarcar
transparentemente
transacciones por vistas de
página. Apex permite a
transacciones abarcar vistas
de página usando
colecciones.
Apoyo a Conexión a base Conectividad a Cada usuario conectado a
Usuarios de datos por base de datos solo Oracle Forms mantiene una
concurrentes usuario sostenida durante el conexión sincrónica a la base
por sesión procesamiento de de datos Oracle. Los usuarios
la solicitud de Apex son
asincrónicamente conectados
a la base de datos Oracle.
Arquitectura 3 Capas 2 Capas Con Oracle Forms, la lógica
de la aplicación es procesada
en la base de datos Oracle, un
servidor de capa media Forms
Server, o en el cliente
robusto. Con Apex, la lógica
de la aplicación en PL/SQL
es procesada dentro de la base
de datos Oracle. La lógica del
lado del cliente es
implementada utilizando
JavaScript. Las
comunicaciones HTTP son
facilitadas usando Apache y
Mod/PLSQL.

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:

¿Qué es Oracle Apex?


Creando una aplicación con Oracle Apex – Parte 1
Creando una aplicación con Oracle Apex – Parte 2
Creando una aplicación con Oracle Apex – Parte 3
Creando una aplicación con Oracle Apex – Parte 4
Creando una aplicación con Oracle Apex – Parte 5

Controlando el aspecto de los campos


Una pregunta frecuente, es ¿cómo se puede controlar la manera en que lucen los
campos en una forma realizada con Oracle Apex?
A continuación una breve explicación de como se puede modificar la apariencia que
tiene cada campo un nuestras páginas, de manera que podamos realzar los campos que
queremos que el usuario note fácilmente. Para esto, se debe conocer un poco de hojas
de estilo.

Una vez creada su página, el procedimiento a seguir para personalizar la apariecia de


cualquier campo de una forma es:

1. Seleccione el campo que desea personalizar

2. En la página de propiedades del campo seleccionado, busque la sección “Elemento”.

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.

6. Para finalizar haga clic en el botón Aplicar cambios.

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”.

Creando un calendario con enlaces


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. 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.

5. En el campo “Plantilla de Calendario” seleccione la opción“Calendar, Alternative 1″.

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ó.

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 = 9_DEPTNO and meetid = 9_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. En el campo “Destino de URL”, debe ingresar el siguiente
código: f?p=&FLOW_ID.:9:&SESSION.::&DEBUG.::P9_DEPTNO,P9_MEETID:#DEPT
NO#,#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).

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.

Espero que les sea de mucha utilidad.

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.

Por este motivo, en esta ocasión quisiera presentarles el uso de patrones de


expresiones regulares javascript, para realizar algunas de estas tareas de verificación.

Un patrón o expresión regular es, básicamente, una cadena de caracteres simples y


especiales que utilizamos para definir el contenido de una constante o una variable, y
por ende, de un campo de datos.

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:

1. Ingrese a la página de propiedades del campo al que desee agregar la validación.

2. Dirijase a la sección Elemento.

3. En el campo Atributos de Elemento de Pantalla HTML ingrese el siguiente


código: onChange=”javascript:patronRe = /patron/;if (!patronRe.test(this.value))
{alert(‘Mensaje de error’);} else {html_GetElement(‘P99_SIGUIENTE’).focus();}”

4. Haga clic en el botón Aplicar cambios


El resultado de un dato erróneamente introducido sería algo similar a lo que se muestra
en la siguiente ilustración.

Algunas consideraciones a tomar en cuenta:

 Reemplace en el código de arriba, la cadena “patron”, por el patrón correspondiente al dato


a verificar.

 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.

 Patrón para permitir solo el ingreso de letras (mayúsculas y minúsculas) y espacios en


blanco, para una cadena que debe tener al menos 10 caracteres de largo.

/[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))$/

Solo me resta invitarlos a ver un ejemplo implementado en mi espacio de trabajo


en OTN.

¿Con cuál registro estoy trabajando?


En muchas ocasiones dentro de una misma página tenemos una estructura padre/hijo,
donde los resultados de un reporte dependen del registro seleccionado en la región
padre, el problema que se da, es que si no queremos mostrar en la región hijo, los
datos del padre seleccionado, no sabemos entonces a que “padre” corresponden los
registros de la región hijo.

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

2. Cree un elemento oculto llamado P99_FILTRO

3. Haga clic en el enlace “Informe” de la región del reporte anterior

4. Haga clic en el icono “Editar” del campo de llave primaria del reporte creado

5. En la sección “Enlace de columna”

=> En el campo “Texto de enlace” escriba:


<img src=”#IMAGE_PREFIX#calmag.gif” alt=”Consultar” title=”Consultar”>

=> En la línea “Elemento 1″ ingrese el siguiente par de valores:P99_FILTRO,


#FILTRO#
=> Haga clic en el botón “Aplicar Cambios”

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:

where filtro = 99_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

Definiendo el tamaño de las regiones


Una de las características importantes de una aplicación es su apariencia. No es lo
mismo, por ejemplo, un reporte que sigue y sigue hacia la derecha, más allá de lo que
la pantalla del computador puede mostrar, o bien, que se extienda indefinidamente
hacia abajo de la página.

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>

En el código anterior estamos definiendo dos tipos de región, una de tipo


reporte (RegionScroll_report) con un ancho de 665 píxeles y 320 píxeles de altura,
que en caso de que el reporte se extienda más allá de estos bordes, agregará barras de
deslizamiento en donde sea necesario; laterales para subir y bajar por el reporte, o
inferior, para moverse a izquierda o derecha. Además se le indica no agergar un borde a
la región. La otra definición es para utilizar en una región de tipo árbol de 200 x 345
píxeles (RegionScroll_tree).

2. En el campo “Cabecera de Región” de la región debe agregar el siguiente código:

<div class="RegionScroll_report">

3. Finalmente, en el campo “Pie de página de Región”, de la región indicada, agregue:

</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:

width:200px; Define el ancho de la región en 200 píxeles


height:345px; Define la altura de la región en 345 píxeles
Indica que se debe agregar las barras de deslizamiento de manera
overflow:auto;
automática, en caso de que sean necesarias
border:solid Indica dibujar un borde sólido a la región de 0 píxeles (no se dibuja
0px un borde)

Pueden agregar otras características a la región y modificar las anteriores de acuerdo a


sus deseos y necesidades (necesitan dar una revisión a algún tutorial de CSS.

¿Cómo agregar un logo a una aplicación Apex?


En muchas ocasiones, el uso de un logo que identifique a la empresa, es importante
como uno de los elementos de nuestras aplicaciones, por tal motivo, a continuación les
dejo la manera de incluir estos logos en nuestras aplicaciones.

Solo siga los siguientes pasos:

1. Importe la imagen del logo a utilizar:

1. Ingrese a la aplicación donde desea incluir el logo.

2. Haga clic en el botón “Componentes compartidos”.

3. En la sección de “Archivos”, haga clic en el enlace“Imágenes”.

4. Haga clic en el botón “Crear”.

5. Haga clic en el botón “Examinar” del campo “Cargar Nueva Imagen”

6. Seleccione el archivo que va a utilizar como logotipo de la aplicación.

7. Haga clic en el botón “Cargar”.

Una vez cargada la imagen del logotipo, en la página de componentes compartidos,


haga clic en el enlace “Definición”.

En la sección “Logotipo” de la página mostrada, en el campo“Logotipo” escriba lo


siguiente:#WORKSPACE_IMAGES#logo.jpg, donde logo.jpg es el nombre de la imagen
cargada en el punto anterior.

Haga clic en el botón “Aplicar Cambios”.

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.

¿Cómo mostrar u ocultar campos en una forma


de mantenimiento?
Cuando creamos una página de mantenimiento utilizando el ayudante de Apex,
normalmente tenemos muy poco control sobre la funcionalidad de la misma. Muchas
veces queremos permitir el ingreso o no de ciertos campos en la tabla, dependiendo del
valor de algún campo, por ejemplo, cuando estamos hablando de procesar alguna
solicitud, si por ejemplo esta es rechazada quisiéramos que se incluya el motivo por el
cual se rechazó, campo que no deberÃa ser incluido si es aceptada.

Para ocultar o mostrar campos en una forma de mantenimiento, se debe utilizar


javascript; solo utilice el siguiente procedimiento:

En la cabecera de la página, se debe agregar el siguiente código:


<script>
function Show_On_Radio_Value(pThis, pThat, pValue){
var rv = html_RadioValue(pThis);
if (rv == pValue) {
$x_ShowItemRow(pThat);
} else {
$x_HideItemRow(pThat);
}
}
</script>

Luego, en el pie de página de la región que contiene los campos a mostrar/ocultar, se


debe agregar lo siguiente:

<script language="JavaScript" type="text/javascript">


Show_On_Radio_Value('P4_CAMPOX','P4_CAMPO1','S');
Show_On_Radio_Value('P4_CAMPOX','P4_CAMPO2','S');
</script>

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.

En en campo P4_CAMPOX, en la propiedad “Atributos de Elemento de Pantalla HTML”,


se incluye lo siguiente:

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:

en el código <span class=”t6OptionalLabel”, se debe conservar el número existente


después de =”•t el cual corresponde a la plantilla utilizada, esto es, si está usando la
plantilla 10, debe cambiar el 6 por el 10.
Y eso es todo.

Espero que les sea de utilidad. Como siempre, pueden ver un ejemplo funcionando en la
siguiente dirección de OTN

Cómo manejar llaves primarias de más de dos


columnas con Oracle Apex
Una de las limitantes con las que cuenta Oracle Application Express, es que no puede
manejar llaves primarias de más de dos columnas, esto nos pone ante un dilema, sobre
todo cuando enfrentamos un proceso de traslado de sistemas o aplicaciones existentes,
por ejemplo, aplicaciones desarrolladas con Oracle Forms, las cuales contienen tablas
con llaves primarias compuestas por más de dos columnas.

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.

¿Qué usuario está conectado a mi aplicación


Apex?
En muchas ocaciones, en las tablas que utilizamos para almacenar datos, debemos
guardar el usuario que realizó una tarea específica, tal como, incluir un nuevo registro,
o modificar alguno de los datos existentes.

Tradicionalmente, estamos acostumbrados a utilizar el valor de la variable Oracle USER,


sin embargo, si hacemos uso de esta variable en una aplicación Apex, siempre vamos a
registrar el mismo valor, sin importar cual usuario estemos utilizando, este valor
es“APEX_PUBLIC_USER”.

Ahora bien, cuando definimos estructuras y código, no lo hacemos pensando solo en


utilizarlos dentro de Apex, podemos también querer usarlos por ejemplo en sqlplus,
Forms, funciones, procedimientos, paquetes, o cualquier otro lugar, por lo que también
podemos necesitar el valor de la variable USER.

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.

Haciendo Oracle XE disponible desde


ubicaciones remotas
Cuando se instala la base de datos Oracle XE, normalmente, solo está disponible en la
computadora en la que realizamos la instalación. Sin embargo, no queremos una base
de datos para poder accesarla de manera local únicamente, es importante poder
acceder a ella desde otras computadoras en nuestra red particular (privada), o bien,
desde Internet.

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.

Este primer procedimiento lo puede ejecutar únicamente en la computadora en la que


realizó la instalación, de manera gráfica y con la ayuda de un navegador, y es el que
detallo a continuación:

1. Inicie la base de datos Oracle XE:

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”.

Vaya a la página inicial de la base de datos Oracle XE:

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”.

En la página de Ingreso de la base de datos Oracle XE, ingrese el usuario SYSTEM,


la contraseña definida al momento de la instalación y finalmente haga clic en el
botón “Conectar”.

Al ingresar a la página de la base de datos Oracle XE, haga clic en el


enlace “Administración”
Bajo “Tareas”, haga clic en el enlace “Administrar Acceso HTTP”.

Seleccione la opción: Disponible en servidor local y desde clientes remotos.

Haga clic en el botón “Aplicar cambios”.

El segundo método es utilizando la línea de comandos de SQL, de acuerdo al siguiente


procedimiento, el cual aplica tanto para bases de datos recién instaladas, como para
aquellas en las que ya se hizo una actualización de Apex.

1. Inicie SQL*Plus y conéctese como SYSTEM:

$ sqlplus system
Ingrese contraseña: Contraseña_SYSTEM

2. En el indicador SQL, ingrese la siguiente instrucción:

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

Funciones de Navegación: Creando listas de


valores
Una de las mejores características de Apex, es la facilidad con que se pueden realizar
las tareas. Para ello, Apex nos presenta una serie de características predefinidas que
son de mucha utilidad y de muy sencillo uso. Una de estas características, son las listas
de valores, las cuales podemos utilizar tanto en las formas como en los reportes, ya sea
para mostrar la descripción de un valor específico en un reporte, o bien, para
seleccionar este valor a partir de una descripción comprensible en una forma de
mantenimiento.
Las listas de valores que podemos definir y utilizar con Apex, son de dos tipos, estáticas
y dinámicas.

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.

1. Una vez ingresado a su aplicación, haga clic en el botón“Componentes Compartidos”,


tal y como se muestra en la siguiente imagen.

2. Al ingresar en la página siguiente, busque a la derecha el enlace “Listas de Valores” y haga


clic sobre este. (Observe la imagen).
3. A continuación, haga clic en el botón “Crear >”.

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:

1. Escriba el nombre de la lista de valores y haga clic en el botón“Siguiente >”.

2. Escriba en la columna de la izquierda la descripción que se mostrará en la lista, y en la


columna de la derecha el código o valor correspondiente.
3. Finalmente haga clic en el botón “Crear Lista de Valores”que se muestra en la imagen
anterior.

Para crear una lista de valores dinámica:

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.

2. Finalmente haga clic en el botón “Crear Lista de Valores”.


Una vez creada una lista, en la página aparecerá un icono con el nombre de dicha lista,
tal como lo muestra la imagen siguiente.

Ahora que está creada la lista de valores, lo único que resta por hacer, es utilizarla,
pero eso es tema de otro “post”.

Informes: Número variable de líneas a mostrar


Existen dentro de las secciones de cada página de la herramienta Apex, campos que la
mayoría de las veces no utilizamos, y que en muchos de ellos, ni siquiera nos
imaginamos para que sirven o cuál es su función.

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.

Para definir un reporte con el número de líneas a mostrar definidas interactivamente:

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ó

Diríjase a la sección Diseño y Paginación y en el campo Número de Filas


(Elemento), haga una de las siguientes acciones:

0. Escriba el nombre del campo creado (P_FILAS), o bien,

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)

Haga clic en el botón Aplicar Cambios

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í.

Manejo de imágenes en una aplicación Apex –


Parte 1: Cargando las imágenes
Una de las grandes facilidades que nos proporciona Oracle Apex, es el poder utilizar de
manera sencilla, imágenes que nos ayuden a hacer nuestras aplicaciones más
atractivas. En esta ocasión voy a iniciar con una serie de dos publicaciones en las que
explico cómo cargar las imágenes que necesitamos utilizar en nuestras aplicaciones y en
una segunda entrega, explicaré cómo hacer uso de estas imágenes.

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:

1. Haga clic en el botón “Componentes Compartidos”.


2. En la página de “Componentes Compartidos”, diríjase a la sección “Archivos” y haga clic
en el enlace “Imágenes”.

3. Una vez adentro, haga clic en el botón .

4. Cuando la página de carga de imágenes aparezca (ver imagen abajo), haga clic en el

botón , navegue por su dispositivo de almacenamiento hasta la imagen


deseada y selecciónela.

5. Para completar la carga de la imagen, haga clic en el botón .

Repita los pasos 3 al 5 del procedimiento anterior, para cada imagen que desee cargar a
su aplicación.

Como pueden ver, es un proceso muy sencillo de efectuar, e igualmente de sencillo es


utilizar en nuestras aplicaciones estas imágenes que cargamos.

En breve, en mi próxima publicación, les estaré explicando como utilizar estas imágenes
dentro de nuestras aplicaciones. Estén atentos.

Manejo de imágenes en una aplicación Apex –


Parte 2: Utilizando las imágenes
En la publicación anterior, expliqué cómo cargar imágenes a nuestros espacios de
trabajo, ya sea que las definamos como parte de una aplicación específica en ese
espacio de trabajo, o bien, que no especifiquemos la imagen como parte de una
aplicación.

El utilizar estas imágenes en nuestras aplicaciones es muy sencillo, lo único que


debemos hacer es utilizar el tag html <IMG>, el truco está en la manera en que
hacemos referencia a la imagen dentro de este tag.

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?

La respuesta es muy sencilla:

WORKSPACE_IMAGES Utilizamos esta cadena para hacer referencia a las imágenes


que definimos como de uso general del espacio de trabajo,
esto es, todas aquellas imágenes que al momento de
crearlas, no las definimos como parte de una aplicación
específica.
APP_IMAGES Usamos esta cadena de substitución, para referenciar
imágenes que creamos como parte de una aplicación
específica.

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.

En el caso de la primer imagen: foto.png, la podemos utilizar tanto en la aplicación 110,


como en cualquier otra aplicación que tengamos definida en nuestro espacio de trabajo,
y lo hacemos de la siguiente manera:

<img src=”#WORKSPACE_IMAGES#foto.png”>

Ahora bien, segunda imagen: photo.png, la vamos a poder referenciar solamente en la


aplicación 110, y lo hacemos en la forma:

<img src=”#APP_IMAGES#foto.png”>

Básicamente, lo que hacemos al usar estas cadenas de substitución, es evitarnos el


tener que utilizar todo el camino a donde se encuentran las imágenes, al ejecutar
nuestras aplicaciones Apex, estas cadenas son substituidas por el correspondiente
camino, así que no debemos preocuparnos por esto.
Espero que les sea de utilidad y que regresen pronto para nuevos tips, noticias y
artículos acerca de Oracle Apex.

Componentes Compartidos: Introducción


Gracias por estar de vuelta.

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.

Para ingresar a los componentes compartidos, debemos hacer clic sobre el


botón “Componentes compartidos”, en la página principal de la aplicación.

Una vez seleccionada la página de Componentes Compartidos, vamos a poder observar


8 grupos diferentes de componentes que podemos definir, los cuales se explican
brevemente a continuación.

El primer grupo de componentes es el de Aplicación, y nos permiten definir los


conceptos generales de la aplicación, así como agregar cualquier comentario que
consideremos pertinente.
Luego tenemos el grupo de Lógica, en donde podemos definir todos los aspectos
lógicos de la aplicación, tales como elementos, procesos y cálculos a nivel de aplicación,
y referencias a servicios web entre otros.

Como tercer grupo de componentes compartidos, vamos a encontrar los componentes


de Seguridad relacionados con la aplicación. ¿Que esquemas de autenticación? ¿Cuáles
esquemas de autorización? etcétera.

A continuación tenemos el cuarto grupo de componentes, el deGlobalización, el cual


tiene que ver con la parte de internacionalización de la aplicación. El generado de los
archivos de traducción, idioma principal de la aplicación y alguna otra información más.

El quinto grupo de componentes corresponde a los deNavegación, donde tenemos la


posibilidad de crear diferentes“estructuras” que nos van a servir como ayuda en la
manera en que se navegará en nuestra aplicación.
Seguidamente, nos vamos a encontrar con el sexto grupo de componentes, los
de Interfaz de Usuario, los cuales tienen que ver con todos los elementos que definen
la apariencia de la aplicación, asuntos tan variados como temas, plantillas, etcétera.

Como séptimo grupo de componentes compartidos tenemos losInformes, los cuales


son documentos imprimibles que podemos utilizar en la aplicación y llamarlos desde un
enlace o un botón, por ejemplo.

El último grupo de elementos corresponde al de Archivos, en el cual podemos definir y


cargar al espacio de trabajo de la aplicación: imágenes, archivos de estilo en cascada o
cualquier otro tipo de archivo estático que necesitemos utilizar en nuestra 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.

Esto es en realidad muy sencillo, e involucra el uso de la funcióndbms_lob.getlength().

El procedimiento a seguir es el siguiente:

1. Cree una nueva página en su aplicación de tipo Informe

2. Incluya una consulta SQL similar a la siguiente:

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"

Observe la inclusión de la función dbms_lob.getlength()

3. Complete el informe

4. Haga clic en el enlace Informe en la sección de regiones

5. Ahora haga clic en el icono de edición de la columna correspondiente a la imagen

6. En la sección de Formato de Columna, en el campo Formato Numérico/Fecha agregue


el siguiente texto:

IMAGE:DEMO_PRODUCT_INFO:PRODUCT_IMAGE:PRODUCT_ID::::::inline:Descargar
en donde:

1. DEMO_PRODUCT_INFO, es el nombre de la tabla del reporte,

2. PRODUCT_IMAGE, es el nombre de la columna BLOB que contiene la imagen a mostrar,

3. PRODUCT_ID, es el nombre de la columna llave de la tabla.

Finalmente haga clic en el botón

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.

Pueden observar un reporte igual al descrito en mi aplicación de ejemplo en OTN.

Componentes Compartidos II: Aplicación –


Nombre

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.

A partir de este momento, voy a tratar en detalle el primero de ellos: Aplicación.

Para luego ir explicando cada uno de los restantes componentes de los Componentes
Compartidos.

Dentro de este elemento tenemos dos divisiones principales:

1. Definición

2. Comentarios
Definición

La primera de estas divisiones es la de Definición. Esta elemento se compone de nueve


secciones diferentes:

 Nombre

 Disponibiliad

 Notificación global

 Sustituciones

 Logotipo

 Opciones de creación

 Tema

 Valores por defecto de plantilla

 Valores por defecto de componente

A continuación una explicación de la primera de ellas.

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.

Nombre Proporciona una abreviatura descriptiva para la aplicación para distinguirla de


otras aplicaciones en el entorno de desarrollo.

Alias Asigna un identificador de aplicación alfanumérico alternativo. Puede utilizar


este identificador en lugar del identificador de aplicación.

Versión Incluye el número de versión de la aplicación en una página. También puede


unir automáticamente la versión a la fecha de la última modificación utilizando
las siguientes máscaras de formato:

* YYYY.MM.DD
* MM.DD.YYYY
* DD.MM.YYYY

Si la versión de la aplicación utiliza “YYYY.MM.DD”, Application


Express sustituye esta máscara de formato por la fecha de la última
modificación de cualquier atributo de aplicación.
Prefijo de Determina la ruta de acceso virtual que el servidor Web utiliza para apuntar al
Imagen directorio de imágenes distribuido con Application Builder. Durante la
instalación, la ruta de acceso virtual se configura como /i/. Si no está seguro,
póngase en contacto con el administrador.

Al embeber una imagen en texto estático (por ejemplo, en cabeceras o


pies de página de región o página), puede hacer referencia a la imagen
con la cadena de sustitución /i/. Por ejemplo, para hacer referencia a la
imagen go.gif, debe utilizar la sintaxis siguiente:

<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.

Si los valores de page-level y application-level para el tipo de medio


físico son NULL, se utiliza text o html.
Servidor Utilice este campo para especificar un servidor Proxy.
Proxy
Por ejemplo, Application Builder puede necesitar un servidor Proxy
cuando se utilice un tipo de origen de región de dirección URL. El
origen de región de dirección URL embebe el resultado de la dirección
URL (es decir, la página que se devuelve al navegar a la dirección
URL) como el origen de región. Si utiliza un firewall y el destino de
una dirección URL esta fuera del firewall relativo a Application
Builder, puede que necesite especificar un servidor Proxy.

Puede hacer referencia a los valores introducidos en este campo desde


PL/SQL con la variable de paquete PL/SQL
APEX_APPLICATION.G_PROXY_SERVER. Por ejemplo:

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.

La desactivación del registro puede ser aconsejable para aplicaciones


de grandes volúmenes.
Depuración Determina si el modo de depuración está activado. Las opciones disponibles
incluyen:

* Sí: Permite a la aplicación ejecutarse en modo de depuración.


* No: Impide que la aplicación se ejecute en modo de depuración.

La ejecución de una aplicación en modo de depuración es útil si está en


desarrollo. Sin embargo, para una aplicación de producción, es
aconsejable desactivar la depuración para evitar así que los usuarios
visualicen la lógica de la aplicación.
Esquema de Especifica el esquema con el que se analizarán todos los SQL y PL/SQL de la
Análisis aplicación. Puede utilizar la cadena de sustitución #OWNER# para hacer
referencia a este valor en consultas SQL y en PL/SQL (por ejemplo, en una
región o en un proceso).

Sustituciones Determina si están soportadas las sustituciones exactas. Utilice sustituciones


Exactas exactas. Las sustituciones no exactas es una función anticuada.

Las sustituciones exactas utilizan la sintaxis:

&ITEM.

Las sustituciones no exactas utilizan la sintaxis:

&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:

 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

Continuando con esta serie, le toca el turno al siguiente elemento:

Disponibilidad

En esta sección definimos el estado de disponibilidad de la aplicación; esto es, si está


disponible para utilizar o no y para quien o quienes está disponible.

Está compuesta por los siguientes campos:

Estado Especifica si la aplicación está disponible para su uso. Las opciones


incluyen:

* Disponible: La aplicación está disponible sin restricción.


* Disponible con Enlaces de Edición: La aplicación está
disponible para su uso. Para los desarrolladores, la barra de
herramientas del desarrollador aparece en la parte inferior de
cada página. Es necesario que el desarrollador esté conectado
a Application Builder en la misma sesión del explorador.
* Disponible Sólo para Desarrolladores: La aplicación está
disponible para los usuarios que tienen privilegios de
desarrollador.
* Acceso Restringido: La aplicación está disponible para los
desarrolladores especificados en Limitar a lista de usuarios
separados por comas.
* No Disponible: La aplicación no se puede ejecutar ni editar.
Aparece el mensaje de Mensaje para aplicación no disponible
cuando los usuarios intentan acceder a la aplicación.
* No Disponible (Estado Mostrado con PL/SQL): La
aplicación no se puede ejecutar ni editar.
* No Disponible (Redirigir a URL): La aplicación no se
puede ejecutar. El usuario se enlaza a la dirección URL
introducida en Mensaje para aplicación no disponible.
Estado de Creación Identifica el estado de creación de la aplicación actual. Las opciones
incluyen:

* Sólo Ejecutar Aplicación: Los usuarios sólo pueden


ejecutar la aplicación. Esta opción está destinada a
aplicaciones de una instancia de producción.
* Ejecutar y Crear Aplicación: Los desarrolladores y
usuarios pueden ejecutar y desarrollar la aplicación.
Mensaje para Utilice este atributo junto con el estado.
aplicación no
disponible Si define el estado en No Disponible, No Disponible (Estado
Mostrado con PL/SQL) o No Disponible (Redirigir a
URL), se muestra el texto introducido en este atributo.

Si define el estado en Disponible, no se muestra el texto


introducido en este atributo.
Limitar a lista de Utilice este atributo junto con el estado Acceso Restringido. Si define
usuarios separados por el estado en Acceso Restringido, sólo los usuarios mostrados en este
comas (el estado debe atributo pueden ejecutar la aplicación.
ser Acceso Restringido)
Para utilizar este atributo:

1. De la lista Estado, seleccione Acceso Restringido.


2. Introduzca una lista delimitada por comas de los usuarios
que pueden ejecutar la aplicación en el campo proporcionado.

Los espero en la siguiente entrega de esta serie.

Componentes Compartidos II: Aplicación –


Notificación Global
Hasta el momento, he presentado información acerca de los siguientes tópicos acerca
de los Componentes Compartidos de una aplicación Apex:
 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

 Componentes Compartidos II: Aplicación – Disponibilidad

Es el momento del siguiente de ellos:

Notificación Global

En esta sección se define el mensaje que se utiliza par sustitur la cadena


#GLOBAL_NOTIFICATION#, para ello se utiliza el siguiente campo:

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.

Componentes Compartidos II: Aplicación –


Sustituciones
Recapitulando en lo publicado a la fecha sobre el tema de los Componentes
Compartidos de una aplicación Apex, he escrito acerca de los siguientes temas:

 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

 Componentes Compartidos II: Aplicación – Disponibilidad


 Componentes Compartidos II: Aplicación – Notificación Global

Llego el momento de ver un nuevo tema:

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í.

Cada cadena de sustitución está conformada por:

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.

Componentes Compartidos II: Aplicación –


Logotipo
Recapitulando en lo publicado a la fecha sobre el tema de los Componentes
Compartidos de una aplicación Apex, he escrito acerca de los siguientes temas:

 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre


 Componentes Compartidos II: Aplicación – Disponibilidad

 Componentes Compartidos II: Aplicación – Notificación Global

 Componentes Compartidos II: Aplicación – Sustituciones

Ahora el siguiente elemento:

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#.

Esta sección está compuesta por:

Tipo de Para el tipo de logotipo, seleccione un tipo de imagen:


Logotipo
* Seleccione Imagen para utilizar una imagen para el logotipo de
aplicación.
* Seleccione Texto para utilizar texto para el logotipo de aplicación.
Logotipo En el logotipo, introduzca lo siguiente:

* Para una imagen, introduzca el nombre completo de la imagen,


incluida la extensión de nombre de archivo, por ejemplo:

/i/oracle.gif

* Para un texto, introduzca la cadena de texto completa, por ejemplo:

Aplicación de Ejemplo
Atributos de En los atributos de logotipo, introduzca los atributos para el logotipo.
Logotipo
Ejemplo de imagen:

width=”100″ height=”20″ alt=”Logotipo de Compañía”


Ejemplo de texto:

style=”font-family:Arial; color:#000000; font-size:18; white-


space:nowrap; font-weight:bold;”

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.

Componentes Compartidos II: Aplicación –


Opciones de Creación
Acerca de los Componentes Compartidos de una aplicación Apex, he escrito acerca de
los siguientes temas:

 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

 Componentes Compartidos II: Aplicación – Disponibilidad

 Componentes Compartidos II: Aplicación – Notificación Global

 Componentes Compartidos II: Aplicación – Sustituciones

 Componentes Compartidos II: Aplicación – Logotipo

Hoy le toca el turno a:

Opciones de Creación

Las opciones de creación son valores predefinidos que determinan si un componente


está activado dentro de una aplicación.

Utilice las opciones de creación para mostrar de forma condicional la funcionalidad


específica en una aplicación.

Si existieran opciones de creación definidas, aquí aparecerían mostradas.


El tema de las opciones de creación lo voy a tocar con mayor detalle más adelante, en
donde además explicaré como definirlas.

Sigan al pendiente.

Componentes Compartidos II: Aplicación –


Tema
Hasta la fecha, les he escrito acerca de los siguientes elementos de los Componentes
Compartidos:

 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

 Componentes Compartidos II: Aplicación – Disponibilidad

 Componentes Compartidos II: Aplicación – Notificación Global

 Componentes Compartidos II: Aplicación – Sustituciones

 Componentes Compartidos II: Aplicación – Logotipo

 Componentes Compartidos II: Aplicación – Opciones de Creación

En esta ocasión voy a escribir del elemento:

Tema

Identifica una recopilación de plantillas que definen el aspecto de la aplicación.

En esta sección vamos a encontrar una lista de los diferentes temas que hemos
seleccionado como posibles de utilizar en la aplicación.

Esta sección es solamente de información, no se puede modificar en ella ningún dato.

Componentes Compartidos II: Aplicación –


Valores por defecto de plantilla
Si no han tenido la oportunidad de leer las entregas anteriores de esta serie, a
continuación la lista de ellos:
 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

 Componentes Compartidos II: Aplicación – Disponibilidad

 Componentes Compartidos II: Aplicación – Notificación Global

 Componentes Compartidos II: Aplicación – Sustituciones

 Componentes Compartidos II: Aplicación – Logotipo

 Componentes Compartidos II: Aplicación – Opciones de Creación

 Componentes Compartidos II: Aplicación – Tema

Hoy es la oportunidad del siguiente de ellos:

Valores por Defecto de Plantilla

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 Plantilla de página por defecto para visualizar páginas. Si no selecciona de


Página por forma explícita una plantilla para cada página, el sistema Application Express
Defecto utiliza la plantilla especificada aquí.

Plantilla de Identifica la plantilla que se utilizará cuando el sistema Application Express


Página de esté en modo Versión para Impresora. Al llamar al sistema Application
Modo de Express para que presente una página, puede identificar un atributo de
Impresión versión para impresora con los valores Sí• y NO. Si selecciona Sí, se utiliza la
plantilla de versión para impresora especificada aquí para mostrar la página.

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.

Estamos cerca de terminar con el primer grupo de elementos de los Componentes


Compartidos, así que los invito a seguir atentos.
Componentes Compartidos II: Aplicación –
Valores por defecto de componente
Si es tu primera vez en esta serie, a continuación los enlaces a las anteriores entregas
de la misma:

 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

 Componentes Compartidos II: Aplicación – Disponibilidad

 Componentes Compartidos II: Aplicación – Notificación Global

 Componentes Compartidos II: Aplicación – Sustituciones

 Componentes Compartidos II: Aplicación – Logotipo

 Componentes Compartidos II: Aplicación – Opciones de Creación

 Componentes Compartidos II: Aplicación – Tema

 Componentes Compartidos II: Aplicación – Valores por defecto de plantilla

Y una vez visitadas todas ellas, les invito a continuar con esta serie, que en esta
oportunidad trata acerca de:

Valores por Defecto de Componente

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.

Etiqueta Plantilla de etiqueta por defecto utilizada al crear nuevos elementos de


página. Podrá sustituir este valor por defecto.

Informe Plantilla de informe por defecto utilizada al crear regiones de consulta


SQL. 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.

Componentes Compartidos II: Aplicación –


Comentarios
Y llegamos al último elemento de la primera sección de los Componentes Compartidos,
pero antes de ocuparme de él, les dejo los enlaces a las entregas anteriores:

 Componentes Compartidos: Introducción

 Componentes Compartidos II: Aplicación – Nombre

 Componentes Compartidos II: Aplicación – Disponibilidad

 Componentes Compartidos II: Aplicación – Notificación Global

 Componentes Compartidos II: Aplicación – Sustituciones

 Componentes Compartidos II: Aplicación – Logotipo

 Componentes Compartidos II: Aplicación – Opciones de Creación

 Componentes Compartidos II: Aplicación – Tema

 Componentes Compartidos II: Aplicación – Valores por defecto de plantilla

 Componentes Compartidos II: Aplicación – Valores por defecto de componente

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:

Aplicación Este atributo identifica la aplicación actual.

Comentarios Introduzca comentarios o notas aquí. Estos comentarios no aparecen cuando se


está ejecutando la aplicación

Espero que les sea de utilidad y los espero en la siguiente entrega de esta serie tutora.

Componentes Compartidos III: Lógica –


Introducción

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.

En este grupo de componentes compartidos, se encuentran las siguientes categorías:


 Elementos de aplicación

 Procesos de aplicación

 Cálculos de aplicación

 Referencias de servicio web

 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.

Componentes Compartidos III: Lógica –


Elementos de Aplicación

En la entrega anterior, di inicio a esta nueva serie acerca de los componentes


compartidos de una aplicación Oracle Apex. Hoy vamos a iniciar con el primero de los
elementos de la sección de Lógica de los componentes compartidos:

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:

1. Se pueden utilizar para mantener el estado de la sesión.

2. Los elementos de la aplicación se pueden definir mediante cálculos o procesos, o bien


transfiriendo valores en una dirección URL.

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.

La segunda de ellas es “Historial”, que muestra las modificaciones recientes realizadas


en los elementos de aplicación de la aplicación en que está trabajando.

Cómo crear un elemento de aplicación

Para crear un nuevo elemento de aplicación:

1. Haga clic en el botón

2. Escriba el nombre del elemento en el campo “Nombre”

3. En “Seguridad” defina el tipo de protección de estado de la sesión

4. Si existe alguna opción de creación creada que se aplique al elemento, selecciónelo


en “Configuración”.
5. Opcionalmente, agregue un comentario referente al elemento, en el campo correspondiente
a tal fin.

6. Por último, haga clic en el botón .

Y eso es todo, ya tiene un nuevo elemento de aplicación, el cual puede referenciar o


manipular en cualquier página de su aplicación.

Componentes Compartidos III: Lógica – Procesos


de Aplicación

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:

 Componentes Compartidos III: Lógica – Introducción

 Componentes Compartidos III: Lógica – Elementos de Aplicación

Hoy voy a continuar con el siguiente de los elementos que conforman este grupo de
componentes:

Los Procesos de Aplicación


Los procesos de aplicación ejecutan lógica PL/SQL en puntos específicos para cada
página de una aplicación, o como definan las condiciones en las que están definidas
para arrancarse. Tenga en cuenta que los procesos “A Petición” sólo se arrancan cuando
se llaman desde páginas concretas.

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”:

Este es un informe que muestra los procesos de aplicación “A Petición” utilizados en la


aplicación actual.

La última de las pestañas, es la de “Historial”, en la que se muestran las


modificaciones recientes realizadas en los procesos de aplicación de la aplicación que
estamos trabajando.

Una vez definido lo anterior, es importante saber cómo crear un proceso de aplicación.
Para ello utilizamos el siguiente procedimiento:

1. Haga clic en el botón .

2. En la sección de “Identificación”:

1. Ingrese el nombre del proceso en el campo “Nombre”.

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.

4. Haga clic en el botón .

3. Ahora, en la sección de “Origen”:

1. Ingrese el código del proceso en el campo “Texto de Proceso”.

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”.

3. Haga clic en el botón .

4. En la sección “Condicionalidad”:

1. Defina las condiciones que se deben cumplir para que el proceso se ejecute (de ser
necesario).

2. Haga clic en el botón .

Una vez creado un proceso, lo puede editar, haciendo clic sobre el icono
correspondiente de la pantalla de “Procesos de Aplicación”.

Algunas características interesantes acerca de los procesos de aplicación:


1. Se pueden utilizar los procesos de aplicación para realizar acciones necesarias en todas las
páginas.

2. Se puede hacer referencia a elementos de página y aplicación mediante la sintaxis


:ITEM_NAME (variable ligada).

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”.

Saludos a todos y los espero en la siguiente entrega de esta serie:

Navegando registros en una forma de


mantenimiento
Debido a múltiples consultas acerca de cómo se puede realizar la consulta de registros
tal como se hace en Oracle Forms con las teclas F6 y F7, he decidido escribir este
artículo, en donde detallo cómo realizar algo similar, aunque no exactamente igual, pero
que les puede ser de gran ayuda.

Antes de iniciar con el procedimiento, algunos comentarios que resultan de importancia


en cuanto a lo que se va a exponer.

Esta funcionalidad, únicamente trabaja cuando la forma de mantenimiento se encuentra


en estado de edición, ya sea para modificar o eliminar registros.

Tomando en cuenta lo anterior, necesitamos un reporte desde el cual ingresar a la


forma en modo de mantenimiento.

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.

1. Haga clic en el botón


2. Ahora seleccione la aplicación en la que va a crear las páginas. Haga clic en el botón

correspondiente a la aplicación

3. Inicie la creación de las páginas haciendo clic en el botón

4. A continuación, después de cada paso descrito, haga clic en el botón

5. Seleccione Pantalla en la página siguiente

6. Ahora seleccione Pantalla Basada en Tabla con Informe

7. Elija el esquema al que pertenece la tabla

8. Escoja la tabla sobre la que desea trabajar


9. Defina las características del reporte

10. Defina el tipo de separadores para el reporte (en caso de utilizarlos)

11. Escoja las columnas que va a incluir en el reporte


12. Defina el icono a utilizar para ingresar a editar los registros de la tabla

13. Ingrese las definiciones generales de la pantalla de mantenimiento


14. Elija la columna de la tabla definida como llave primaria de la misma

15. Escoja la forma en que se va a controlar el poblado de la llave primaria


16. Seleccione las columnas que se van a incluir en la página de mantenimiento

17. Defina las diferentes operaciones de mantenimiento que va a permitir la forma

18. Haga clic en el


botón
para crear ambas páginas

19. Para finalizar la creación de las páginas haga clic en el botó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

23. Seleccione el esquema de la tabla a la que se le va a agregar la funcionalidad de


navegación de registros

24. Elija la tabla correspondiente

25. Indique el campo de la página que contiene la llave primaria de la tabla


26. Defina la región en la que se va a agregar la funcionalidad y columna o columnas por la
que se va a ordenar la navegación de registros

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.

La imagen abajo muestra la manera en que se debería estar viendo la página de


mantenimiento.

Puede ver un ejemplo funcionando en mi aplicación de ejemplo enOTN.

Das könnte Ihnen auch gefallen