documento tecnico desarrollo en apex

96
Desarrollo Web en Apex Oracle Versión: 1.0 IEI Universidad Nacional de Colombia Fecha:22-11-2010 Noviembre de 2010 Página 1 de 96 DOCUMENTO TÉCNICO IEI – UNIVERSIDAD NACIONAL DE COLOMBIA DESARROLLO WEB EN ORACLE APEX DAPEX_1.0 Versión 1.0 Noviembre de 2010

Upload: relacion-serias

Post on 30-Nov-2015

166 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 1 de 96

DOCUMENTO TÉCNICO

IEI – UNIVERSIDAD NACIONAL DE COLOMBIA

DESARROLLO WEB EN

ORACLE APEX

DAPEX_1.0

Versión 1.0

Noviembre de 2010

Page 2: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 2 de 96

TABLA DE CONTENIDO INSTALACIÓN DE ORACLE Y APEX .............................................................................................................................5

Planear la instalación ............................................................................................................................................5

Verificar los requerimientos: ............................................................................................................................5

Instalar el esquema ..........................................................................................................................................6

Realizar las tareas posteriores a la instalación. ................................................................................................6

Temas adicionales de la Instalación .................................................................................................................8

Preparación del servidor ......................................................................................................................................8

Instalación del motor de bases de datos Oracle v. 10g ............................................................................................9

Configuración Del Puerto .................................................................................................................................. 17

Preparación De La Instalación ........................................................................................................................... 17

Instalación de APEX ........................................................................................................................................... 17

Configurar el servidor HTTP para poder acceder el Oracle HTMLDB ................................................................ 19

Crear Usuarios ................................................................................................................................................... 20

CONCEPTOS DETRÁS DE ORACLE APEX ............................................................................................................. 22

Visión General de la Funcionalidad Oracle APEX .............................................................................................. 23

Interacción con la Base de Datos mediante el Taller de SQL ........................................................................ 25

Creación de una Aplicación ............................................................................................................................... 29

Creación de una Región Nueva ...................................................................................................................... 30

Creación de un Elemento Nuevo ................................................................................................................... 31

Adición de un Botón Nuevo ........................................................................................................................... 31

Creación de un Proceso de Página ................................................................................................................ 32

Creando Formas ............................................................................................................................................ 33

Creando Informes .......................................................................................................................................... 49

Crear Informes dinámicos ............................................................................................................................. 51

Trabajo con Ítems .......................................................................................................................................... 54

Select list ........................................................................................................................................................ 56

Pop up ............................................................................................................................................................ 60

Check boxes ................................................................................................................................................... 61

Radio buttons ................................................................................................................................................ 61

Graficos .......................................................................................................................................................... 61

Page 3: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 3 de 96

GUÍA BÁSICA DE CONFIGURACIÓN DE IREPORT .................................................................................................... 66

Introducción ...................................................................................................................................................... 66

DTD de JasperReport ......................................................................................................................................... 68

Como Generar Plantillas de Informes ................................................................................................................... 69

Introducción ...................................................................................................................................................... 69

Crear un Informe, paso a paso .......................................................................................................................... 69

Explicación de cada banda................................................................................................................................. 70

Parámetros ($p) . ............................................................................................................................................... 71

Campos ($F). ...................................................................................................................................................... 73

Variables ($V). ................................................................................................................................................... 75

Elementos de Texto ........................................................................................................................................... 78

Elementos de Datos ........................................................................................................................................... 80

Imágenes. .......................................................................................................................................................... 82

Grupos. .............................................................................................................................................................. 83

Subinformes....................................................................................................................................................... 83

Informe Principal. .......................................................................................................................................... 83

Subinforme. ................................................................................................................................................... 89

Juntándolo todo. ........................................................................................................................................... 90

Paginar un informe. ........................................................................................................................................... 91

Compilar un informe. ........................................................................................................................................ 93

Ajustes por Desbordamiento ................................................................................................................................. 94

Síntomas del problema ...................................................................................................................................... 94

¿Para qué sirve el ajuste por desbordamiento? ................................................................................................ 94

¿A qué se debe el problema? ¿Qué es lo que lo origina? ................................................................................. 94

Cómo solucionar el problema ........................................................................................................................... 95

VERSIÓN 1.0 Vigente desde: 22 de Noviembre de 2010

ELABORÓ: Equipo de Trabajo IEI Miguel Gamboa Eliecer Daza

REVISÓ: Ing. Juan Carlos Torres

APROBÓ: IEI Unal

FECHA: 17 de Noviembre de 2010 FECHA: 22 de Noviembre de 2010 Noviembre de 2010

Page 4: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 4 de 96

Historial de Revisiones

Fecha Versión Descripción Autor Revisor

01/04/2010 0.0 Documento Preliminar: Instalacion Apex Miguel

Gamboa Grupo de Trabajo

01/06/2010 0.1 Adición de Generación de una Aplicación Miguel

Gamboa Grupo de Trabajo

05/10/2010 1.0 Configuracion IREPORT Eliecer Daza Grupo de Trabajo

Page 5: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 5 de 96

INSTALACIÓN DE ORACLE Y APEX

Planear la instalación

Es necesario conocer todo el procedimiento para disponer de la información y recursos necesarios para llevarla

a buen fin.

Son principalmente dos tareas:

a. Instalar el esquema

b. Configurar el servidor HTTP

Verificar los requerimientos:

a. De Base de datos

Versión superior o igual a 9.2.0.3 SHARED_POOL_SIZE de al menos 100mb Mirar: UtilitiesAbout DatabaseParameters

SQL> SHOW PARAMETER PFILE;

SQL> SHOW PARAMETER SHARED_POOL_SIZE

SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='100M' SCOPE=spfile;

SQL> SHUTDOWN

SQL> STARTUP

b. De Servidor HTTP

mod_plsql Companion CD 10g release 1 o 2 / ias 1.0.2.2

c. De espacio

460 mb en ORACLE_HOME

d. De opciones de la DB (Oracle XML DB y Oracle Text)

Revisar el Oracle Universal Installer

e. De navegador

IE 6 o superior

Page 6: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 6 de 96

Netscape 7.2 o superior Mozilla 1.2 o superior Firefox 1 o superior

Instalar el esquema

Crear tablespace para el APEX

CREATE SMALLFILE TABLESPACE "TEMP" LOGGING DATAFILE 'C:\ORACLE\ORADATA\SNW\TEMP.ora' SIZE 5M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

a. Hacer backup b. Bajar los servicios c. Subir la base de datos objetivo

d. Descomprimir el zip

e.

sqlplus sys/SYS_password as sysdba @apexins password tablespace_apex tablespace_files tablespace_temp images connect

Donde:

Password: contraseña de admin_apex

tablespace_apex

tablespace_files

tablespace_temp

images: directorio virtual de apache /i/.

connect: para instalación local usar none o NONE.

Realizar las tareas posteriores a la instalación.

Revisar el Log Recompilar paquetes PL/SQL inválidos: Conectado como SYS

SQL> @?/rdbms/admin/utlrp.sql

Copiar el directorio de imágenes en apache/images o en Oracle Configurar el servidor http en una nueva instalación Modificar C:\oracle\compa_102\Apache\modplsql\conf\Dads.conf

Alias /i/ "C:\oracle\apex\images/" AddType text/xml xbl AddType text/x-component htc

Page 7: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 7 de 96

<Location /pls/apex> Order deny,allow PlsqlDocumentPath docs AllowOverride None PlsqlDocumentProcedure wwv_flow_file_manager.process_download PlsqlDatabaseConnectString localhost:1521:snw PlsqlNLSLanguage AMERICAN_AMERICA.AL32UTF8 PlsqlAuthenticationMode Basic SetHandler pls_handler PlsqlDocumentTablename wwv_flow_file_objects$ PlsqlDatabaseUsername APEX_PUBLIC_USER

PlsqlDefaultPage apex

PlsqlDatabasePassword Siner4

Allow from all

</Location> Arrancar los servicios detenidos

Reiniciar el servidor HTTP ORACLE_BASE\ORACLE_HOME\opmn\bin\opmnctl stopproc ias-component=HTTP_Server

ORACLE_BASE\ORACLE_HOME\opmn\bin\opmnctl startproc ias-component=HTTP_Server

Instalar APEX en otros idiomas Idioma del registro EjecutarRegeditHKEY_LOCAL_MACHINESOFTWAREORACLE

Idioma del dads Managing JOB_QUEUE_PROCESSES

SELECT VALUE FROM v$parameter WHERE NAME = 'job_queue_processes'

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = <number> (20) como sys Obfuscating PlsqlDatabasePassword Parameter

set ORACLE_HOME=new_ORACLE_HOME_path

set PATH=%ORACLE_HOME%\Apache\modplsql\conf;%PATH%

set PATH=%ORACLE_HOME%\perl\5.6.1\bin\MSWin32-x86;%PATH%

set PATH=%ORACLE_HOME%\bin;%PATH%

cd $ORACLE_HOME/Apache/modplsql/conf perl dadTool.pl -o

Logging in to Oracle Application Express http://hostname:port/pls/database_access_descriptor/

USUARIO: admin

CONTRASEÑA: Suministrada en la instalación

Page 8: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 8 de 96

Temas adicionales de la Instalación

Preparación del servidor

Consiste en planear y adecuar el servidor de manera que soporte las instalaciones de los demás productos

necesarios. En esta etapa se debe tener en cuenta la configuración de los discos (particiones), entre otros.

1. Configurar el Sistema Operativo y sus actualizaciones.

2. Configurar el Firewall: Activar el Firewall y abrir los puertos de iSQL PLUS (5560), Enterprise Manager (5500),

Base de Datos (1521), Apache (7777)

2. Configurar el Antivirus y actualizarlo: preferiblemente descargarlo e instalarlo con anterioridad junto con el

último archivo de definiciones de virus, antes de conectarlo a la red.

4. Configurar la red preferiblemente una dirección IP estática.

Page 9: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 9 de 96

Instalación del motor de bases de datos Oracle v. 10g

Para el funcionamiento del sistema se puede instalar Oracle con los componentes mínimos, para esto

seleccionamos instalación avanzada.

Definir la ubicación de Oracle HOME, procurando separar los programas de los datos dentro de la misma

partición.

Page 10: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 10 de 96

Se selecciona el tipo de instalación personalizada y se instalan los componentes mínimos que son: La base de

datos, el Enterprise Manager y opcionalmente iSQL PLUS

Se solicita la creación asistida de la base de datos con parámetros de idioma Spain Spanish siempre que sea

requerido con el juego de caracteres AL32UTF8.

Durante el proceso de instalación es normal que se presenten fallos relacionados con la obtención de una

dirección IP, el servicio OracleCCService que se pueden ignorar.

Page 11: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 11 de 96

Seleccionar en el asistente la realización de una configuración típica del Listener, lo cual definirá el protocolo

TCP puerto 1521 como predeterminados para el motor de la base de datos.

Configuración de opciones de la base de datos seleccionar como personalizada.

Page 12: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 12 de 96

Se debe tener cuidado con el manejo de contraseñas, almacenarlas en un lugar donde se puedan recordar de

manera confidencial.

Configuración de opciones de almacenamiento

Configuración de opciones de creación de base de datos.

Page 13: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 13 de 96

El asistente de configuración de la BD entregará un resumen de la creación de la BD correcta con los siguientes

accesos a direcciones URL.

Se han desplegado las siguientes aplicaciones J2EE y se puede acceder a ellas en las siguientes direcciones URL.

Los archivos de configuración de la base de datos se han instalado en E:\oracle\product\10.1.0 mientras que

los demás componentes seleccionados se han instalado en E:\oracle\product\10.1.0\siei. Tenga cuidado de no

suprimir por accidente estos archivos de configuración.

URL de Ultra Search:

http:// 168.176.81.166:5620/ultrasearch

Page 14: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 14 de 96

URL de Herramienta de Administración de Ultra Search:

http:// 168.176.81.166:5620/ultrasearch/admin

URL de iSQL*Plus:

http:// 168.176.81.166:5560/isqlplus

http:// 168.176.81.166:5500/em

Para tener acceso a dichas aplicaciones deberán estar iniciados los siguientes servicios:

Para la instalación del servidor Web se deberá seleccionar un nombre de destino y ruta de acceso diferente al

de la base de datos.

Page 15: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 15 de 96

Se deberán seleccionar los paquetes de instalación correspondientes a los productos Companion – Servidor

HTTP de Oracle – Apache Standalone 9.0.4.0.0

Page 16: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 16 de 96

Al finalizar la instalación se despliega la información respectiva para el acceso al servidor

http://localhost:7777

Page 17: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 17 de 96

Configuración Del Puerto

En el archivo APACHE_HOME\Apache\Apache\conf\httpd.conf podemos cambiar el puerto por omisión 7777 al puerto

80 para que no sea necesario digitarlo en la URL

# # Port: The port to which the standalone server listens. Certain firewall # products must be configured before Apache can listen to a specific port. # Other running httpd servers will also interfere with this port. Disable # all firewall, security, and other services if you encounter problems. # To help diagnose problems use the Windows NT command NETSTAT -a # Port 7777 Listen 7777

Preparación De La Instalación

SCHEMA

TABLESPACE

DATAFILE

Instalación de APEX

Para su instalación deben seguirse los siguientes pasos preliminares:

Inicialmente conectarse a la base de datos vía SQL PLUS con el usuario system,

SHOW PARAMETER SHARED_POOL_SIZE ALTER SYSTEM SET SHARED_POOL_SIZE='100M' SCOPE=spfile;

Cambiar el orden de las rutas de acceso de directorio, definiendo el nombre de directorio de la base de Datos

como primera en la lista, para evitar que al bajar el servicio Listener la utilidad sqlplus de línea de comando siga

funcionando.

Page 18: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 18 de 96

Hacer una copia de seguridad.

Parar todos los servicios de ORACLE

- Iniciar el servicio de la base de datos donde queremos instalar APEX

- Extraer el contenido del instaldor y dirigirse a la raíz del directorio extraído.

c:\> sqlplus “sys/SYS_password as sysdba” @htmldbins password tablespace_htmldb tablespace_files

tablespace_temp images connect

Donde:

password Is the password for the Oracle Apex administrator account, the APEX schema owner, and the APEX files schema owner. The APEX schema owner is the user or schema into which Oracle Apex database objects will be installed. The APEX files schema owner is the user or schema where uploaded files are maintained in Oracle Apex.

tablespace_htmldb Is the name of tablespace for the Oracle Apex application user.

tablespace_files Is the name of tablespace for the Oracle Apex files user.

tablespace_temp Is the name of the temporary tablespace.

images Is the virtual directory for Oracle Apex images. To support future Oracle Apex upgrades, define the virtual image directory as /i/.

connect Is the Oracle Net connect string to the database. If this is a local install, use none or NONE.

Ejemplo:

Page 19: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 19 de 96

sqlplus "sys/syspass as sysdba" @htmldbins password SYSAUX SYSAUX TEMP /i/ none

Recompiling Invalid PL/SQL Packages SQL> @?/rdbms/admin/utlrp.sql

Restarting Processes En configuración de Windows

Copiar la carpeta /images C:\htmldb/images

para APACHE_HOME/Apache\Apache

Al finalizar la instalación del aplicativo es necesario pasar del directorio de instalación al directorio del servidor

apache.

Configurar el servidor HTTP para poder acceder el Oracle HTMLDB

Oracle HTTP Server Release 9.0.3

Modificar el archivo APACHE_HOME\apache\modplsql\conf\dads.conf

Agregándole el siguiente contenido:

Alias /i/ "C:\oracle\product\10.1.0\db_1_apache\Apache\Apache\images/"

Alias /i/ "APACHE_HOME\Apache\Apache\images/" <Location /pls/htmldb> SetHandler pls_handler Order deny,allow Allow from all AllowOverride None PlsqlDatabaseUsername HTMLDB_PUBLIC_USER PlsqlDatabasePassword (clave especificada como parametro en la instalacion) PlsqlDatabaseConnectString localhost:1521:siei PlsqlDefaultPage htmldb PlsqlDocumentTablename wwv_flow_file_objects$ PlsqlDocumentPath docs PlsqlDocumentProcedure wwv_flow_file_manager.process_download PlsqlAuthenticationMode Basic PlsqlNLSLanguage SPANISH_SPAIN.AL32UTF8 </Location>

SQL>SELECT parameter,value

FROM nls_database_parameters

Page 20: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 20 de 96

WHERE PARAMETER IN ('NLS_CHARACTERSET','NLS_LANGUAGE','NLS_TERRITORY');

En el siguiente archivo.

ORACLE_BASE\ORACLE_HOME\Apache\Apache\conf\httpd.conf

Reiniciar el servicio correspondiente al servidor HTTP desde los accesos directos para iniciar y para el servidor.

La aplicación puede ser accedida desde los siguientes URLs:

http://168.192.1.51:7777/pls/htmldb/htmldb_admin

Crear Usuarios

Para hacer la aplicación accesible, es necesario crear usuarios. El camino más fácil para crear usuarios es

acceder a la página “Manage User” dentro del Workspace al que pertenece la aplicación. Para hacer esto hay

que tener garantizados los derechos de administrador para acceder a esta página. (admin)

Para crear un nuevo usuario:

Navegar a la página de entrada de APEX

Page 21: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 21 de 96

En la región “Workspace administration” al lado derecho de la página seleccionar “Manage Users”

Seleccionar “Create New User”.

En la región “User Identification” registrar la información requerida. Si se usa autenticación de Oracle Apex,

hace el nombre de usuario y la dirección de correo electrónico idénticas.

En la región “Developer” seleccionar No para desarrollador y NO para administrador, de esta forma el usuario

podrá ejecutar la aplicación sin acceder al ambiente de desarrollo. Presionar el botón de crear usuario.

Page 22: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 22 de 96

CONCEPTOS DETRÁS DE ORACLE APEX

¿Qué es Oracle APEX (APEX)?

Es una herramienta de ORACLE para desarrollar aplicaciones Web centradas en la base de datos.

¿Qué Puedo Hacer con Oracle Apex?

Aplicaciones Web centradas en bases de datos, que incluyen los siguientes componentes:

Servicios de Informes (breaks, export to csv, sorting, grouping, linking)

Servicios de Templates (temas, CSS)

Servicios de navegación (manejo de sesión)

Servicios de proceso (Condiciones de proceso )

Servicios de autorización (LDAP, database)

Servicios DML

Page 23: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 23 de 96

Además permite crear:

Reportes

Formularios

Gráficos (pasteles, barras)

Realizar carga de datos desde hojas de calculo

Manejo de estado de Sesión

Navegación y control de flujo

Parametrización de todos los elementos

Interfaces externas (envio de emails, Consumo de webservies)

Impresión de reportes en formatos como pdf, XML.

Herramientas para trabajo en SQL

Visión General de la Funcionalidad Oracle APEX

Conexión al Espacio de Trabajo de Oracle Apex

Page 24: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 24 de 96

Identificación de los Componentes de Interfaz de usuario de Oracle Apex

Page 25: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 25 de 96

Interacción con la Base de Datos mediante el Taller de SQL

Acceso al Taller de SQL

Page 26: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 26 de 96

Ejecución de Comandos SQL con el Procesador de Comandos SQL

Creación de Archivos de Comandos mediante el Repositorio de Archivos de Comandos

Interacción con Objetos de Base de Datos mediante el Explorador de Base de Datos

Page 27: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 27 de 96

Generador de Consultas

Creación de Objetos de Base de Datos

Page 28: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 28 de 96

Gestión de Valores por Defecto de la Interfaz de Usuario

Page 29: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 29 de 96

Creación de una Aplicación

Creación de una Aplicación desde Cero

Page 30: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 30 de 96

Creación de una Región Nueva

Page 31: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 31 de 96

Creación de un Elemento Nuevo

Adición de un Botón Nuevo

Page 32: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 32 de 96

Creación de un Proceso de Página

Crear las siguientes tablas:

CREATE TABLE Departamento ( Cod_Dept INTEGER, Nombre VARCHAR2(25), CONSTRAINT PK_DEPARTAMENTO PRIMARY KEY (Cod_Dept) ); CREATE TABLE Categoria ( Cod_Cat INTEGER, Nombre VARCHAR2(25), CONSTRAINT PK_CATEGORIA PRIMARY KEY (Cod_Cat) ); CREATE TABLE Empleados ( DNI VARCHAR2(50), CATEGORIA Integer, SUELDO INTEGER, DEPARTAMENTO INTEGER, CONSTRAINT PK_EMPLEADOS PRIMARY KEY (DNI), CONSTRAINT EMP_FK_DEPT FOREIGN KEY (departamento) REFERENCES departamento(Cod_Dept), CONSTRAINT EMP_FK_CAT FOREIGN KEY (categoria) REFERENCES categoria(Cod_Cat) );

Se crean las secuencias

Page 33: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 33 de 96

create sequence "DEPTO_SEQ" start with 1 increment by 1 maxvalue 9999999999999999999999999999 minvalue 1 nocache nocycle noorder

Creando Formas

Oracle HTMLDB incluye varios Wizard con los cuales se pueden crear formas automáticamente, o si se desea se pueden

crear formas manualmente.

Creando una Forma que Usa a un Wizard

La manera más fácil de crear una forma es usando un Wizard. Estos son los pasos a seguir:

a) Navegue a la página de Workspace.

b) De la lista de las Aplicaciones, seleccione una aplicación. El Creador de la aplicación aparece.

Page 34: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 34 de 96

c) Pulse el botón Crear Página. d) Seleccione Página con Componente.

e) Seleccione Pantalla.

Page 35: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 35 de 96

f) Seleccione uno de los Wizard descritos en la tabla siguiente:

Pantalla Basada en Procedimiento

Construye una forma basada en argumentos de un procedimiento almacenado.

Pantalla Basada en Consulta SQL

Crea una forma basada en las columnas devueltas por una consulta SQL

Pantalla Basada en Tabla o Vista

Crea una forma que le permite a los usuarios actualizar una sola fila en una tabla de la base de datos

Pantalla Basada en Tabla con Informe, 2 Páginas

Crea dos páginas. Una página muestra un informe. Cada fila proporciona un enlace a la segunda página para permitirles a los usuarios actualizar cada registro. Nota: Este Wizard no soporta tablas que tienen más de 127 columnas. Seleccionando más de 127 columnas generarán un error.

Pantalla Maestro/Detalle

Crea una forma que despliega una fila Maestra y múltiple filas de detalle dentro de una sola forma de HTML. Con esta forma, los usuarios pueden consultar, insertar, actualizar, y eliminar valores de dos tablas o vistas

Página de Resumen Crea una versión Read-only de una forma. Comunmente usado para proporcionar una página de confirmación al final de un Wizard

Pantalla Tabular Crea una forma en la que los usuarios pueden actualizar múltiples filas en una base de datos

Page 36: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 36 de 96

g) Siga las instrucciones en pantalla.

Creando una Forma Tabular

Es una forma en la que los usuarios pueden actualizar múltiples filas en una base de datos.

El Wizard crea una forma para realizar actualización, inserción, y eliminación

Para crear una forma tabular:

a) Navegue a la página de Workspace, seleccione la aplicación apropiada. b) Pulse el botón Crear Página. c) Seleccione Página con Componente. d) Seleccione Pantalla. e) Seleccione Pantalla Tabular. El Wizard de la Pantalla Tabular aparece. f) Identificar Propietario de Tabla / Vista :

Especifique el dueño de la tabla o vista en los que usted quiere basar su forma tabular.

Page 37: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 37 de 96

Seleccione el tipo de forma tabular que usted quiere crear en cuanto a actualización, inserción, y eliminación.

Seleccione una tabla.

g) En Identificar Columnas a Mostrar:

Especifique si desea usar valores por defecto de interface de usuario. Los valores por defecto de interface de usuario le permiten que asigne propiedades de interface de usuario

predefinidas a una tabla, columna, o dentro de un esquema especificado.

Seleccione las columnas (actualizables y no actualizables) para incluir en la pantalla. Usted puede modificar el orden de la columna o sus consultas después de que usted ha creado la página.

Page 38: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 38 de 96

h) En Identificar Llave Primaria, seleccione la Llave Primaria.

i) En los Valores por defecto para la Llave Primaria y las Llave Foránea, seleccione el origen para la Llave Primaria.

j) En Columnas de Actualización, seleccione qué columnas deben ser actualizables.

Page 39: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 39 de 96

k) Identifique Página y Atributos de la Región.

Especifique página e información de la región.

Seleccione una plantilla de la región.

Seleccione una plantilla del informe.

l) Especifique un Tab de la aplicación para esta página.

Page 40: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 40 de 96

m) En Etiquetas del Botón, ingrese el texto que aparecerá en los botones Cancelar, Aplicar Cambios ,Eliminar y Agregar Fila.

n) En Identificar Bifurcación, especifique las páginas de bifurcación después de que el usuario pulse los botones de Aplicar Cambios y Cancelar.

o) Pulse el botón Finalizar.

Page 41: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 41 de 96

Construyendo una Forma Master/Detail

Una forma Master/Detail refleja una relación uno-a-muchos entre dos tablas en una base de datos. Comúnmente una

Master/Detail despliega una fila de la tabla Maestro y múltiple filas del detalle dentro de una sola forma de HTML. Con

esta forma, los usuarios pueden insertar, pueden actualizar, y pueden eliminar valores de dos tablas o vistas.

Para crear una forma Master/Detail:

a) Navegue a la página de Workspace, seleccione la aplicación apropiada. b) Pulse el botón Crear Página. c) Seleccione Página con Componente. d) Seleccione Pantalla. e) El Wizard Master/Detail aparece. f) Defina la Tabla Maestra:

Seleccione a el dueño de la tabla o vista

Seleccione una tabla o vista

Seleccione las columnas a mostrar

g) Defina la tabla de Detalle:

Especifique para mostrar sólo tablas relacionadas

Seleccione el dueño de la tabla o vista

Seleccione la tabla o nombre de vista

Page 42: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 42 de 96

Seleccione las columnas para desplegar h) En Defina la Llave Primaria, seleccione la Llave Primaria para la tabla Maestro y luego la Llave Primaria para la

tabla de detalle.

i) Defina las relaciones entre la tabla Maestro y detalle.

Page 43: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 43 de 96

j) Especifique el origen para la tabla maestro y de detalle de las columnas de Llave Primaria.

k) Especifique sí para incluir navegación de fila de la tabla Maestro. l) Si usted incluye navegación de fila de la tabla Maestro, defina las columnas de orden de navegación. Si la

columna de orden de navegación no se define, la forma de actualización de la tabla Maestro navegará por la columna de la llave primaria.

Page 44: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 44 de 96

m) Especifique el esquema de las páginas de detalle y Maestro. Usted puede incluir el detalle como una forma tabular en la misma página, o agrega el detalle en una página

separada.

n) En Atributos de Página, revise y edite los atributos de las páginas y la información de las mismas.

o) Identifique Tabs.

Page 45: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 45 de 96

p) Pulse el botón Crear.

Construyendo una Forma basada en Tabla con Informe, 2 Páginas Se Crean dos páginas. La primera página muestra un informe, en este cada fila proporciona un enlace a la segunda página

para permitirles a los usuarios actualizar cada registro.

Para crear una forma tabular:

a) Navegue a la página de Workspace, seleccione la aplicación apropiada. b) Pulse el botón Crear Página. c) Seleccione Página con Componente. d) Seleccione Pantalla. e) Seleccione Pantalla basada en Tabla con Informe, 2 Páginas. El Wizard aparece. f) Identificar Propietario de Tabla / Vista :

Especifique el dueño de la tabla o vista en los que usted quiere basar su forma

Seleccione una tabla. g) Identifique Página y Atributos de la Región para el informe.

Especifique página e información de la región.

Seleccione una plantilla de la región.

Seleccione una plantilla del informe.

Seleccione el tamaño de la paginación.

h) Identifique Tabs. i) Especifique las columnas del informe, se puede especificar una cláusula WHERE.

Page 46: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 46 de 96

j) Seleccione una imagen de enlace de edición. Esta imagen funcionará como enlace para seleccionar la fila que se va a editar.

k) Identifique Página y Atributos de la Región para la forma.

Especifique página e información de la región.

Seleccione una plantilla de la región.

Seleccione una plantilla del informe. l) Identifique Tabs. m) En Identificar Llave Primaria, seleccione la Llave Primaria.

Page 47: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 47 de 96

n) Especifique el origen de la Llave primaria para la tabla. o) Identifique las Columnas para la Pantalla

Seleccione las columnas que desea incluir en la página de pantalla

p) Identifique las opciones de proceso de esta página de pantalla

Page 48: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 48 de 96

q) Pulse el botón Terminar

Construyendo una Forma Simple basada en una tabla o vista Esta forma que le permite a los usuarios actualizar una sola fila en una tabla de la base de datos.

Para crear una forma basada en una tabla o vista:

a) Navegue a la página de Workspace, seleccione la aplicación apropiada. b) Pulse el botón Crear Página. c) Seleccione Página con Componente. d) Seleccione Pantalla. e) Seleccione Pantalla Basada en Tabla o Vista. El Wizard aparece. f) Identificar Propietario de Tabla / Vista :

Especifique el dueño de la tabla o vista en los que usted quiere basar su forma g) Seleccione una tabla. h) Identifique Página y Atributos de la Región.

Especifique página e información de la región.

Seleccione una plantilla de la región. i) Identifique Tabs j) En Identificar Llave Primaria, seleccione la Llave Primaria. k) Especifique el origen de la Llave primaria para la tabla. l) Identifique las Columnas para la Pantalla

Seleccione las columnas que desea incluir en la página de pantalla

m) Identifique las opciones de proceso de esta página de pantalla

n) En Identificar Bifurcación, especifique las páginas de bifurcación después de que el usuario pulse los botones de Aplicar Cambios y Cancelar.

o) Pulse el botón Terminar

Page 49: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 49 de 96

Creando Informes

En Oracle HTMLDB un informe es el resultado de una consulta. Usted puede generar informes seleccionando y ejecutando

una consulta o definiendo una región del informe basada en una consulta SQL.

Creando un Informe que Usa a un Wizard

Para crear un informe:

a) Navegue a la página de Workspace, seleccione la aplicación apropiada. b) Pulse el botón Crear Página. c) Seleccione Página con Componente. d) Seleccione Informe. e) Seleccione uno de los tipos de informe siguientes:

El Informe Sencillo - no requiere conocimiento de SQL. Simplemente seleccione el esquema apropiado, las tablas, el conjunto de resultados y las columnas a mostrar.

El informe con Pantalla – genera la combinación de dos páginas, un informe y una forma. La primera página les permite a los usuarios que especifiquen la fila a ser actualizada. La segunda página incluye una forma para actualizar la tabla seleccionada o vista.

Informe SQL - Crea un informe basado en una consulta SQL o una función PL/SQL que devuelve una consulta SQL.

f) Siga las instrucciones en pantalla.

Informe Sencillo a) Navegue a la página de Workspace, seleccione la aplicación apropiada. b) Pulse el botón Crear Página. c) Seleccione Página con Componente.

Page 50: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 50 de 96

d) Seleccione Informe. e) Seleccione informe Sencillo f) Identifique Página y Atributos de la Región para el informe.

Especifique página e información de la región.

Seleccione una plantilla de la región.

Seleccione una plantilla del informe.

Seleccione el tamaño de la paginación.

g) Identifique Tabs. h) Especifique el propietario de la tabla o vista, el nombre de la tablao vista y las columnas a mostrar en el informe

i) Seleccione una plantilla de informe de la lista e introduzca el número de filas que desea mostrar por página. Seleccione Usar Ordenación de Cabecera de Columna para que los usuarios puedan hacer clic en una cabecera de columna y realizar la ordenación

Page 51: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 51 de 96

j) Pulse el botón Crear Página de informe

Crear Informes dinámicos

Page 52: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 52 de 96

Page 53: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 53 de 96

Page 54: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 54 de 96

Trabajo con Ítems

LOVS

Son listas de valores que se usan para trabajar con la mayoría de Ítems. Son determinados por una lista de valores definida

a través de una sentencia SELECT… Por ejemplo:

select ename d, empno r

from emp

order by 1

Para crear una lista de valores:

a) Navegue a la página de Workspace, seleccione la aplicación apropiada. b) Pulse el botón Componentes compartidos

c) Seleccione listas de valores

Page 55: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 55 de 96

d) Pulse el botón crear e) Identifique el origen de la lista de valores, Puede crear una lista de valores nueva o copiar una existente de otra

aplicación

f) Introduzca un nombre para la lista de valores y especifique si desea que sea estática o dinámica

g) Si selecciona dinámico, Introduzca una consulta SQL que devuelva dos columnas.

Page 56: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 56 de 96

h) Pulse el botón Crear Lista De Valores Con Nombre

Select list

Se usa para mostrar una lista de valores y escoger alguno de ellos. Se pueden especificar un valor del despliegue NULO y

un Valor del retorno NULO.

Este es un ejemplo de una lista de valores:

SELECT ename display_text, empno return_value FROM emp

Existen varios tipos de listas de selección:

Con Submit – Envina la pagina deacuerdo al valor seleccionado.

Con Redirect – Recarga la pagina y pone SÓLO el valor recientemente seleccionado de la lista en el estado de la sesión.

Devuelve URL con submit- Esta basado en una lista de valores con URLs como valor de retorno. Cambiando el valor de la lista, el browser carga la URL correspondiente.

Con bifurcación a una pagina - Esta basado en una lista de valores con números de página como valor de retorno. Cambiando el valor seleccionado en la lista se carga la pagina correspondiente.

Para agregar un Select list a una pagina:

a) Navegue a la página de Workspace. b) De la lista de las Aplicaciones, seleccione una aplicación. El Creador de la aplicación aparece. c) Seleccione la página en la que desea agregar el Item o cree una nueva. d) En la definición de la página seleccione el icono con forma de + en la seccion de elementos

Page 57: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 57 de 96

e) Seleccione Lista de selección

Page 58: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 58 de 96

f) Selecciones lista de selección

g) Identifique el nombre del elemento y su posición de visualización

h) Seleccione una lista de valores existente o introduzca una sentencia SQL que devuelva exactamente dos columnas o utilice la sintaxis STATIC

Page 59: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 59 de 96

i) Identifique una etiqueta de elemento opcional, alineación de etiqueta, ancho de campo y alineación de campo

j) Identifique el origen del elemento, puede ser columna de base de datos, una sentencia SQL o un valor Nulo ente otros.

Page 60: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 60 de 96

k) Determine el origen que debe tener prioridad para este elemento, el valor del estado de sesión o el valor del "origen", Los elementos gestionan el estado de sesión automáticamente.

i) Pulse el botón Crear Elemento

Pop up

Se muestra como un campo de texto con un icono al lado de él, donde al dar clic el usuario puede seleccionar un valor de

una ventana popup. La lista en la ventana del popup es manejada por una lista de valores. Su uso es similar al de las listas

de selección pero son más convenientes de usar cuando la lista de valores retorna demasiados valores.

Page 61: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 61 de 96

Check boxes

Al igual que los ítems anteriores, estos utilizan listas de valores para mostrarse. El valor que corresponde a las opciones de

selección en un check box puede también ser un string delimitado por dos puntos.

El ejemplo siguiente demuestra cómo crear una sencillo check box que retorna SÍ. Este ejemplo desplegaría una check box

y" una etiqueta al lado.

SELECT NULL display_text, 'YES' return_value FROM DUAL;

Este ejemplo incluye el texto adicional "Pulse el botón para seleccionar."

SELECT 'Click to select' display_text, 'YES' return_value FROM DUAL;

Radio buttons

Se muestra como un radio group, basado en una lista de valores. Si se desea que al seleccionar un valor del radio button

se cargue otra página debe seleccionar al momento de la creación de este item Radiogroup with Submit

Graficos

Page 62: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 62 de 96

Page 63: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 63 de 96

Page 64: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 64 de 96

Page 65: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 65 de 96

Page 66: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 66 de 96

GUÍA BÁSICA DE CONFIGURACIÓN DE IREPORT

Introducción

iReport es una herramienta visual que sirve para generar ficheros XML (plantillas de informe) que se puedan

utilizar con la herramienta de generación de informes JasperReports.

iReport inicialmente se ha desarrollado en J++ por lo que su entorno de ejecución se limita a plataformas

Microsoft. En sus últimas versiones se ha publicado una versión 100% java con lo cual se limita la restricción

existente.

Este manual explica cómo configurar iReport para poder generar tanto ficheros XML (plantillas base para

JasperReport), como ficheros “.jasper” (plantillas compiladas).

Configuración del classpath

Antes de poder trabajar con iReport hay que configurar sus variables de classpath para conseguir

compilaciones de las plantillas con éxito.

Para configurar el classpath seleccionamos el menú “Entorno -> Classpath...”

Aparece un cuadro de diálogo como éste:

Page 67: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 67 de 96

Según se indica en la web de iReport, la configuración de la versión actual sigue los siguientes pasos:

1 Seleccionar la entrada classpath del menu Database

2 Completar el MS JVM para los drivers JDBC

3 Completar el Java VM classpath para los drivers JDBC, tools.jar y ficheros jar de JasperReports: (los

ficheros que indica el ejemplo son)

X:\path\to\jasperreports-0.4.2-project\JasperReports\lib\commons-beanutils.jar

X:\path\to\jasperreports-0.4.2-project\JasperReports\lib\commons-collections.jar

X:\path\to\jasperreports-0.4.2-project\JasperReports\lib\commons-digester.jar

X:\path\to\jasperreports-0.4.2-project\JasperReports\lib\itext-0.92.jar

X:\path\to\jasperreports-0.4.2-project\JasperReports\lib\jasperreports.jar

X:\path\to\jasperreports-0.4.2-project\JasperReports\lib\xerces.jar

4 Set Java home

Page 68: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 68 de 96

DTD de JasperReport

En la carpeta “dtds” se incluyen dos ficheros DTD necesarios para la validación de las plantillas XML que genera

iReport (“jasperprint.dtd” y “jasperreport.dtd”).

Por omisión, iReport coloca una url del DTD con una dirección de Internet. Al parsear la plantilla desde

JasperReport, esta herramienta intenta acceder a la url (Internet) para validar la plantilla. En caso de que no

pueda acceder la operación de validación falla. Esto es especialmente importante para cuando colguemos las

plantillas generadas en el servidor WebLogic, ya que es muy posible que la máquina donde está instalado el

servidor Weblogic no tenga acceso a Internet.

Lo que se pretende con la propiedad DTD_HOME del punto anterior es especificar una url local que evite el

salir a Internet para validar una plantilla XML.

Los dos ficheros DTD deberán copiarse a la ubicación accesible mediante la url especificada en la propiedad

DTD_HOME.

Page 69: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 69 de 96

Como Generar Plantillas de Informes

Introducción

Este capítulo trata de explicar cómo generar plantillas para crear informes. Hace un pequeño recorrido por los

diferentes elementos y opciones de la herramienta iReport para explicar cuáles son sus cometidos y sus

funciones.

Es un tutorial eminentemente práctico pensado para una persona con conocimientos técnicos a nivel de

desarrollo con tecnología XML y Java, así como cierta desenvoltura en el manejo de editores

Crear un Informe, paso a paso

Menú Informes -> Nuevo

Aparece un cuadro de diálogo :

Figura 1 Cuadro de diálogo de crear nueva plantilla de informe

“Nombre del informe”: Nombre interno que va a tener el informe en iReport. Debe coincidir con el nombre del

fichero XML

Page 70: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 70 de 96

“Tamaño de la página”: Normalmente A4

Hay que entrar en la pestaña “Más…”. Ahí aparece “Codificación XML”. Se debe poner ISO-8859-1. Eso hace

que se puedan escribir “ñ” y no de error.

Después de pulsar “OK”, es buena idea guardar el informe y ya se crea el “.XML” con el mismo nombre que has

puesto antes en el informe.

Explicación de cada banda.

Cuando has pulsado OK, se ha creado una pantalla como la que se muestra en la figura.

Figura 2 Bandas del informe

En ella aparecen marcadas diferentes áreas que llamaremos a partir de ahora “bandas”.

Cada banda se comporta de un modo diferente.

Hay que pensar que un informe de iReport está pensado a nivel de página. Lo que se define es el aspecto

general de una página y no se pueden definir (a priori) elementos fuera del tamaño de la página.

Page 71: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 71 de 96

El significado de cada banda es el siguiente:

Title : Esta banda se mostrará sólo una vez al principio del informe tenga las páginas que tenga el mismo.

PageHeader : Esta banda es la cabecera de la página; se repite cada vez que se pinta una página nueva.

ColumnHeader : Esta banda es la cabecera de las columnas. Inicialmente nosotros hemos definido sólo una columna, por lo que su comportamiento es análogo a PageHeader.

Detail : Esta banda es la encargada de mostrar los elementos que tienen alguna repetición, estos elementos se mostrarán en los subinformes que explicaremos más adelante. En esta banda solo se deben insertar los subinformes, ya que los mismos son los encargados de hacer las repeticiones.

ColumnFooter : Pie de la columna. Su comportamiento es análogo a ColumnHeader.

PageFooter : Pie de página, se repite una vez por página. Su comportamiento es análogo a PageHeader.

Sumary : Sólo se repite una vez por informe en la última página del mismo. Su comportamiento es análogo a Title.

Parámetros ($p) .

Los parámetros se usan para definir la aparición o no de textos o para mostrar algún valor concreto que no se

pasa como campo($F).

Cuando los parámetros se usan para mostrar o no un texto, tiene un valor “true” o “false”, porque tanto los

parámetros como los campos ($P y $F respectivamente) se pasan como textos (strings).

Para introducir los parámetros se pulsa sobre y aparece este cuadro de diálogo:

Page 72: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 72 de 96

Figura 3 Cuadro de diálogo de parámetros

Page 73: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 73 de 96

Para añadir un parámetro ($P), se pulsa sobre “Nuevo” y aparece otro cuadro de diálogo:

“Nombre de parámetro”: Nombre que se quiere dar al

parámetro. A partir de ahora, cuando en el proyecto te

quieras referir a dicho parámetro, lo nombrarás como

$P{nombre parámetro}.

“Tipo de parámetro”: Siempre java.lang.String

“Expresión del valor por defecto”: Si se quiere un valor por

defecto, aquí se escribe como una cadena de texto,

entrecomillado. Ej.: ”true”

“Descripción de parámetro”: Si se quiere una descripción

del parámetro.

Figura 4 Cuadro de diálogo de propiedades de parámetros

Campos ($F).

Siempre se van a definir como datos de tipo texto.

Serán los campos que se recuperen de la base de datos y se pasen en un objeto DataSource que entienda

Jasper.

Para introducir los campos se pulsa sobre y aparece este cuadro de diálogo:

Page 74: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 74 de 96

Figura 5 Cuadro de diálogo de campos

Para añadir un campo ($F), se pulsa sobre “Nuevo” y aparece otro cuadro de diálogo:

“Nombre del Campo”: Nombre que se quiere dar al

campo. A partir de ahora, cuando en el proyecto te

quieras referir a dicho campo, lo nombraras como

$F{nombre campo}.

“Tipo de campo”: Siempre java.lang.String

“Descripción del campo”: Si se quiere una descripción

del campo.

Figura 6 Cuadro de diálogo de propiedades de campo

Page 75: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 75 de 96

Variables ($V).

Se utilizan para hacer cálculos dentro del informe, como por ejemplo calcular una suma de campos o un

paginado.

Para introducir una variable se pulsa sobre y aparece este cuadro de diálogo:

Figura 7 Cuadro de diálogo de variables

Page 76: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 76 de 96

Para añadir una variable, se pulsa sobre “Nueva” y aparece otro cuadro de diálogo:

“Nombre de variable”: Nombre que se quiere dar. A

partir de ahora, cuando en el proyecto te quieras referir

a dicha variable, la nombraras como $V{nombre

variable}.

“Tipo de variable”: Depende de la salida que genere

“Cálculo”: Si se quiere hacer un cálculo, aquí se dice

cual.

“Reset type”: Aquí se decide cuándo quiere evaluarse la

variable

“Reset group”: Aquí se decide el grupo (se debe definir con anterioridad)

Figura 8 Cuadro de diálogo de añadir variable

“Expresión” y “Valor inicial de expresión”: aquí se escribe una expresión. Haciendo clic al botón derecho

aparece un cuadro de diálogo que es el “Editor de expresiones”.

Page 77: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 77 de 96

Figura 9 Editor de expresiones

En este editor se pueden crear expresiones “complejas” del tipo “si A=2 entonces X sino Y”.

Este “Editor de expresiones” puede abrirse desde cualquier área de texto donde se pueda escribir un $F, un

$V o un $P.

Page 78: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 78 de 96

Elementos de Texto

Sólo guardan texto. Se usarán cuando se quiera poner un texto largo que como mucho se pueda elegir

mostrarlo o no dependiendo del $P asociado a él.

Se pulsa sobre el icono

Se coloca en la banda en la que se quiera mostrar y se hace doble click sobre él. Aparece el siguiente cuadro de

diálogo:

Figura 10 Cuadro de diálogo de elemento de texto

En la pestaña “Texto Estático” escribe el texto (sin comillas, ya que iReport sabe que sólo puedes escribir

texto).

Page 79: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 79 de 96

En la caja “Imprime cuando sea verdadera la expresión”, hay que poner una expresión de tipo booleano:

“new Boolean ($P{nombre_parámetro})” (sin comillas), sabiendo que $P vale “true” o “false”. Esa expresión

puede ser compleja usando tanto && (and) como || (or).

Page 80: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 80 de 96

Elementos de Datos

Se usarán para mostrar los $F, $P y $V que previamente se han definido.

Se pulsa sobre el icono

Se coloca en la banda en la que se quiera mostrar y se hace doble click sobre él. Aparece el siguiente cuadro de

diálogo:

Figura 11 Cuadro de diálogo de elementos de datos. Pestaña Comunes

En la caja “Imprime cuando sea verdadera la expresión”, hay que poner una expresión de tipo booleano: “new

Boolean($F{CAMPO} != null)” (sin comillas). Esa expresión puede ser compleja usando tanto && (and) como || (or).

En “Posición” se puede decidir si la posición del elemento será fija o por el contrario flotante, con lo que se

moverá según se hagan más o menos grandes los elementos que le preceden.

Las demás opciones de esta pestaña son intuitivas, menos la de “Imprimir cuando cambie el grupo”, que se

explicará al mismo tiempo que los grupos.

Page 81: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 81 de 96

Si se pulsa sobre la siguiente pestaña “Campos de texto”, aparece el siguiente cuadro de diálogo:

Figura 12 Cuadro de diálogo de elementos de datos. Pestaña Campos de Texto

En “Expresión del Campo de Texto” se introduce el texto que se quiere mostrar y se le concatena (+) el campo

asociado a dicho texto.

Del resto de las opciones de la pantalla es reseñable el “Ajuste en desbordamiento”. Esta opción no funciona

correctamente si en la anterior pantalla se ha definido la posición como “float”.

La pestaña “Propiedades Texto” sirve para definir los textos

La pestaña “Hiperenlace” permite crear un hiperenlace asociado tanto a una página web como a un ancla

dentro del propio documento. Esta opción no será usada apenas porque el fin último de casi todos los informes

es la impresión en papel.

Page 82: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 82 de 96

Imágenes.

Todas las imágenes necesarias para las plantillas se encuentran en un mismo directorio en un sistema de

ficheros T3. Esa ruta ya está fijada dentro de Jasper, por lo que cuando desde la plantilla se quiera introducir

una imagen los pasos a seguir son los siguientes:

Dejar el fichero de imagen en “T3/modulos/plantillas/imagenes”

Escribir en el elemento de imagen de la plantilla en la casilla “Expresión de imagen” el nombre del fichero con

su extensión.

Por ahora, si se introducen imágenes en el informe éste sigue compilando, pero el “Viewer” de Jasper falla por

lo que no se puede mostrar, así que lo lógico será hacer las plantillas sin imágenes, compilarlas y más tarde

añadir las imágenes cuando se quiere ver el resultado final.

Se pulsa sobre el icono

Se coloca en la banda en la que se quiera mostrar y se hace doble click sobre él. Aparece el siguiente cuadro de

diálogo:

”Expresión de Imagen”: Se escribe el nombre

del fichero con su extensión .

Figura 13 Cuadro de diálogo de propiedades de imagen

Page 83: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 83 de 96

Grupos.

Actualmente este recurso de iReport sólo se usa para hacer que los subinformes funcionen tal como nosotros

queremos en cada informe. La explicación del funcionamiento de los grupos va asociada al funcionamiento de

los subinformes por lo que serán explicados junto con los mismos.

Subinformes.

Se usarán sólo cuando se quieran mostrar “n” ocurrencias de varios campos agrupados de alguna forma

determinada.

Hasta ahora hemos visto un informe como un fichero XML que guarda la información necesaria para crear el

mismo.

Ahora con los subinformes hay que cambiar ligeramente ese punto de vista. Si un informe es lo

suficientemente complejo para tener varios grupos de repetición, por ejemplo un demandante al que se le

quieren mostrar todos los idiomas que habla con sus características (grupo1) y todos los trabajos que ha

realizado con sus fechas de alta y baja en los mismos (grupo2), hay que usar subinformes.

Un subinforme no es más que otro fichero XML asociado al fichero XML principal y que comparte todos o parte

de sus datos.

Tanto el informe como el/los subinforme/s se deben definir de un modo determinado para que cumplan unos

requisitos predeterminados por Jasper.

Primero vamos a enumerar los requisitos que debe cumplir el XML principal. Para hacer más entendible la

explicación vamos a seguir el proceso de creación del informe antes mencionado.

Informe Principal.

En el informe principal se crearán tantos grupos como subinformes se necesiten. En este caso serán 2, uno para

idiomas y otro para ocupaciones.

Para crear el grupo se opera del siguiente modo:

Se pulsa sobre el icono y aparece el cuadro de diálogo:

Figura 14 Cuadro de diálogo de grupos

Page 84: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 84 de 96

Se pulsa sobre el botón “New” y aparece este otro cuadro de diálogo:

Figura 15 Cuadro de diálogo de configuración de grupos

”Nombre del grupo”: Nombre significativo para reconocer el grupo (por ejemplo Idiomas u Ocupaciones)

“Expresión del grupo”: aquí se escribe literalmente “$V{REPORT_COUNT}” (sin las comillas). Esto hace que se

generen correctamente los saltos de página dentro del informe.

“Altura de la banda cabecera”: En esta casilla se debe poner una altura suficiente como para meter el

elemento de subinforme (Por ejemplo 20)

“Altura de la banda pie”: Inicialmente la pondremos a 0 porque no vamos a utilizarla.

El resto de las opciones deben quedar si chequear excepto “Empieza en nueva página” si lo que queremos es

que cada grupo empiece en una página nueva (eso dependerá de la colocación que se quiera en cada informe).

Page 85: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 85 de 96

Una vez tengamos creado el grupo, éste aparecerá en nuestra pantalla del siguiente modo:

Figura 16 Pantalla con el grupo de idiomas

Ahora tenemos que crear un elemento de subinforme dentro de ese grupo al que posteriormente le

asociaremos un fichero XML con el subinforme apropiado.

Page 86: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 86 de 96

Se pulsa sobre el icono

Se coloca en la banda de cabecera del grupo y se hace doble click sobre él. Aparece el siguiente cuadro de

diálogo:

Figura 17 Cuadro de diálogo de propiedades de subinforme 1

Se define en “Expresión de la conexión /Fuente de Datos” el parámetro del sistema

“$P{REPORT_DATA_SOURCE}” (sin comillas) que hace que se le pase al subinforme el objeto DataSource

completo (todos los campos) que hemos definido para el informe principal.

Pulsando sobre la pestaña “Sub informe 2” aparece:

Page 87: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 87 de 96

Figura 18 Cuadro de diálogo de propiedades de subinforme 2

En “Expresión del subinforme” se escribe la ruta donde está el subinforme compilado (.jasper), ya que un

subinforme no es más que un informe pre-compilado que se alimenta del contenido del informe de llamada.

Si se quieren pasar parámetros a un subinforme, se pulsa sobre el botón derecho en el cuadro de “Parámetros

del subinforme” y aparece el siguiente cuadro de diálogo:

“Nombre”: Nombre que se dará al parámetro en el

subinforme

“Expresión”: Valor del parámetro. Este valor puede ser

una expresión y si pulsas en el botón derecho puedes abrir

el “Editor de expresiones”.

Figura 19 Cuadro de diálogo de parámetros de subinfome

Page 88: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 88 de 96

Después de hacer esto, el aspecto de la pantalla será el siguiente:

Figura 20 Pantalla con el subinforme de idiomas

Page 89: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 89 de 96

Repitiendo el proceso de nuevo para el segundo grupo y su subinforme (ocupaciones) el aspecto final del

informe principal sería el siguiente:

Figura 21 Pantalla con el subinforme de idiomas y el subinforme de ocupaciones

Como se puede apreciar, hemos eliminado la banda de detalle porque el detalle lo va a hacer el subinforme y

por lo tanto ya no es necesaria.

Subinforme.

Un subinforme no es más que un informe normal pero que toma todos sus datos de otro informe y es llamado

desde él.

Jasper sólo puede tener asociado un fichero fuente (XML) a la hora de la generación del informe, por lo que

todos los ficheros de subinformes deberán estar pre-compilados (.jasper) para que Jasper los entienda.

Page 90: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 90 de 96

El fichero XML en el que definamos el subinforme debe llamarse igual que el fichero “.jasper” que hemos

definido en la llamada al subinforme desde el informe principal. En el caso de idiomas el fichero se llamará

“datos_idiomas.XML”. Cuando compilemos este fichero se generará el fichero “datos_idiomas.jasper” que será

el que utilizaremos para que Jasper genere el informe.

Hacemos el subinforme de la forma normal, pero teniendo en cuenta lo siguiente:

Cuando definimos el tamaño del informe, el ancho del mismo a de ser el mismo que el ancho del elemento “subreport” que hemos pintado en la pantalla del informe principal.

Hay que ponerle todos los márgenes a 0, ya que los márgenes ya los tiene el informe principal.

No se debe paginar. De eso se tiene que encargar el informe principal.

Los elementos que queramos que se repitan tienen que ir en la banda de detalle.

Juntándolo todo.

Ahora solo queda generar los ficheros “.jasper” para que los pueda usar el informe principal.

Para eso, lo primero que tenemos que hacer es compilar nuestro fichero XML (en nuestro caso

“datos_idiomas.xml”) para generar el fichero “.jasper” (en nuestro caso “datos_idiomas.jasper”).

Una vez compilado, se copia el fichero jasper a la ruta que previamente se a definido en el elemento de

subreport dentro del informe principal.

Este proceso lo haremos tantas veces como subinformes tengamos definidos (en nuestro caso dos).

Page 91: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 91 de 96

Paginar un informe.

Normalmente utilizaremos la banda del pie de página, aunque también se puede utilizar la cabecera de la

página ya que esas dos bandas se repiten una vez por página.

Primero definimos un elemento de campo “Field Tool” y en “Expresión del Campo de Texto“ escribimos

“Página “ + String.valueOf($V{PAGE_NUMBER}) + “ de “.

El “Momento de evaluación” es muy importante ya que decide en qué momento se tiene que pintar el valor de

la variable asociada. En este caso debemos seleccionar “Now” para que nos indique en que página nos

llegamos en ese momento.

Figura 22 Cuadro de diálogo de creación de paginación I

Con esto ya tenemos la primera parte del paginado.

Ahora nos falta la segunda parte, que es saber cuántas páginas va a tener nuestro informe. Para eso, operamos

de igual manera que la vez anterior:

A continuación del primer elemento de campo, definimos un segundo elemento. Y en la “Expresión del Campo

de Texto“ escribimos:

Page 92: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 92 de 96

““ “ + String.valueOf($V{PAGE_NUMBER})”

Pero esta vez “Momento de Evaluación” ha de ser “Report”, lo que hace que esa variable se escriba una vez

terminado el informe, con lo que contendrá el número de páginas del mismo.

Figura 23 Cuadro de diálogo de creación de paginación y II

El resultado final para la página 3 de nuestro informe de 10 páginas será:

“Página 3 de 10”.

Page 93: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 93 de 96

Compilar un informe.

Se pulsa sobre el icono

Aparece el cuadro de diálogo siguiente:

Figura 24 Cuadro de diálogo de compilación de informe

Aquí se puede elegir si sólo se quiere compilar (generar el .jasper) o además se quiere pasar el informe a algún

formato determinado (leer la lista desplegando la caja de selección).

Tanto el fichero “.jasper” (sólo compilar), como los ficheros de exportación se guardan en el mismo directorio

en el que esté la plantilla del informe (.XML).

Page 94: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 94 de 96

Ajustes por Desbordamiento

Síntomas del problema

El denominado "Problema de ajuste por desbordamiento" se detecta cuando al generar un informe se produce

un "corte" del texto a mostrar y ese "corte" está en relación con un campo de texto con el atributo de ajuste

por desbordamiento activo.

Visto desde el XML asociado a la plantilla de informe es el siguiente código:

<textField isStretchWithOverflow="true" ...>

...

</textField>

Otro síntoma de que hay este problema es que al rellenar el informe el sistema (servidor de aplicaciones) entra

en un bucle infinito (parece como que se queda "bloqueado") del que o bien tarda en salir con una excepción

de agotamiento de memoria o bien el servidor acaba cerrándose él solo.

Cuando se constata este síntoma hay que aplicar la "segunda etapa" del tratamiento obligatoriamente (ver

punto “como solucionar el problema”)

¿Para qué sirve el ajuste por desbordamiento?

Esta opción se utiliza cuando se tienen campos de texto en los que a priori no se conoce cual es su tamaño

vertical o altura.

Es decir, que al asignar el valor al campo cuando se rellena el informe, el tamaño de aquel puede ser más

grande que el asignado inicialmente en tiempo de diseño (ejemplo típico es el que ocupe varias líneas).

¿A qué se debe el problema? ¿Qué es lo que lo origina?

El problema está en los cálculos que se realizan en el proceso de "layout" del informe (cuando se está

rellenando).

Se utilizan propiedades de objetos "Font" (fuente de letra) para asignar espacio a los textos que se escriben en

el informe, estando acotado el espacio usable a las dimensiones de la plantilla y de las bandas de ésta.

Además, la combinación de dos distintas máquinas virtuales Java (en el servidor se utiliza Java 1.3 y en el

cliente Java 1.4), cuando entre ambas hay diferencia de unidades de medida en cuanto a dimensiones de

objetos gráficos (y las fuentes lo son :) junto con un "bug" (o como dirían otros, "funcionalidad") de "iReport",

que omite un información crucial en las plantillas generadas a partir de él, hace que en algunas situaciones se

produzca el terrible problema del malfuncionamiento del ajuste por desbordamiento.

Page 95: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 95 de 96

Cómo solucionar el problema

Hay dos etapas distintas que nos permiten solucionar este problema.

Si con la primera etapa se soluciona no va a ser necesario ir a la segunda.

1. Primera etapa:

Aplicable cuando se producen los cortes de texto.

Editar la plantilla de informe con la herramienta "iReport" versión 1.00 (1) ó superior. Y guardarla. Es decir,

la abres y la guardas (sobrescribiéndola)

(1) => A partir de esta versión de "iReport" se ha corregido la "funcionalidad" que omitía cierta información

que afectaba directamente a que se produjese el problema.

2. Segunda etapa:

Aplicable cuando el sistema entra en estado de bucle infinito.

Si estamos aquí, es que el informe tiene complejidad añadida.

Posiblemente la situación está en que el ajuste que se está realizando (el aumento de tamaño vertical) no

es suficiente para los datos que se están utilizando en el relleno del informe.

Para solucionarlo hay que editar la plantilla (con "iReport" versión 1.00 o superior o directamente el XML

con un editor) y aumentar el parámetro de altura del campo de texto.

Visto desde el XML asociado a la plantilla de informe es el siguiente código:

<textField isStretchWithOverflow="true" height="18" ...>

...

</textField>

Una manera de calcular qué altura (height) indicar es utilizar la siguiente fórmula:

tdl = tamaño de letra. Se corresponde con al atributo "size" de la etiqueta “<font>" el campo de texto.

Ejemplo: <font fontName="Helvetica" pdfFontName="Helvetica" size="8"...>

nafot = número aproximado de filas que se espera que ocupe el texto.

CB = Cte.. Su valor es 2 :

altura (height) = (tdl * nafot) + CB

Page 96: Documento Tecnico Desarrollo en Apex

Desarrollo Web en Apex Oracle Versión: 1.0

IEI – Universidad Nacional de Colombia Fecha:22-11-2010

Noviembre de 2010 Página 96 de 96

Por ejemplo, si esperamos que haya tres líneas de texto como máximo y nuestro tamaño de letra es 8, la altura sería:

altura = (8 * 3) + 2 = 26

Importante: esta fórmula da una estimación del valor a utilizar (). En caso de que el valor resultante no

fuese suficiente hay que incrementarlo.