“AÑO DE CONSOLIDACIÓN DEL MAR DE
GRAU”
ESCUELA PROFESIONAL DE:
INGENIERÍA
DE SISTEMAS Y TELEMÁTICA
TEMA: REPORTES
DOCENTE: MARCO AURELIO PORRO CHULLI.
ASIGNATURA: DESARROLLO DE SOFTWARE l
NOMBRE DEL
GRUPO: “JAVA”
INTEGRANTES:
MALDONADO IDROGO BETZABETH YAMELI
PÉREZ SAUCEDO YORDIN ALBERTO
CICLO: V
GRUPO: “B”
AÑO: 2016
BAGUA GRANDE-UTCUBAMBA
TEMA: REPORTES
1. CONTENIDO:
⧭INSTALACIÓN DE IREPORT EN NETBEANS:
Primero es
instalar iReport en netbeans. Este plugin en teoría no es necesario para
utilizar jasperReport por separado. Este plugin nos facilita el diseño de las
plantallas de jasperReport desde Netbeans.
Nos vamos a la página de netbeans y a la sección de plugins iReport y nos lo descargamos. No hay ninguno para la versión 8.0
de netbeans pero el último que hay que es el de la 7.4 nos sirve.
Una vez descargado nos vamos a Netbeans a Tools->Plugins (Herramientas->Plugins) y a
la pestaña de Downloaded. Le damos al botón "AddPlugins" y
buscamos la carpeta descomprimida del fichero que nos hemos descargado antes,
el de iReport.
Con esto ya tenemos
instalado el plugin y la librería principal de jasperReport. En Tools->Options (Herramientas->Opciones)
podemos verlo.
Ahora necesitamos añadir a la librería otros ficheros y
librerías para que nos funcione correctamente. Estos ficheros son una
recopilación que he ido guardando cuando me investigué como instalar
jasperreports, y son con los que me ha funcionado todo. En este enlace os lo
podéis descargar:
LIBRERIAS PARA JASPERREPORT
Ahora nos vamos a
las opciones de nuestro proyecto, botón derecho Properties,
seleccionamos Libraries, pinchamos en la de
jasperReports y le damos al botón Edit. Buscamos los
ficheros que os he mencionado antes y adjuntamos todo y le damos a guardar.
Ahora vamos a hacer una prueba para ver si
todo funciona. Lo primero de todo es crear un fichero jasper, que es como una
plantilla. Con el plugin de iReport para Netbeans es fácil. En nuestro
proyecto, en el paquete le damos a botón derecho y New. Elegimos Report y Empty Report. Se
abren en Netbeans unas pantallas para diseñar nuestro fichero. Lo vamos a
quedar vacío. En otro tutorial lo explicaré.
Por último un pequeño código que lo que
hace es leer este report (extensión jrxml) en un pdf. El código y el proyecto
de prueba lo tengo en este enlace para que os lo podais descargar:
⧭Configuracion de
DataSource:
Como es lógico el primer paso consiste en tener un recurso
configurado mediante JNDI, en mi caso particular he configurado un "data
source" de Oracle en Tomcat 6 (que basicamente es lo mismo que Tomcat 5 ó
5.5 por lo que he leído en el manual). Para ello en el fichero context.xml de
la configuración de Tomcat hay que incluir un bloque de configuración similar
al siguiente.
<Resource
name="jdbc/myDB" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:XE"
maxWait="-1" />
username="scott" password="tiger"
maxActive="20" maxIdle="10"
Como la mayoría habrá visto, este
bloque es simplemente la configuración de Oracle
y para que Tomcat pueda acceder a la
base de datos debes tener en la carpeta de
librerías de Tomcat el driver
adecuado.
Los ficheros que hayas de añadir a la carpeta
de librerías van en función
del recurso que estés configurando.
Llegados a este punto ya tenemos un
recurso JNDI que tendrémos que configurar en nuestra aplicación para poder
hacer uso del mismo. Como dice el título, esto lo haremos mediante Spring
Framework (en mi caso la version 2.5.x, pero en versiones anteriores se hacía
de manera similar). Para ello hay que añadir al fichero de configuración del
contexto de aplicación (algo que por norma se llamará applicationContext-*.xml
o similar) el siguiente bloque de código.
<bean
id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property
name="jndiName"
</bean>
value="java:comp/env/jdbc/myDB" />
Y con esto hemos terminado,
reconozco que para empezar he elegido una tarea bastante sencilla, aunque con
esto te ahorras tener que leerte los capítulos pertinentes de los manuales de
Spring y Tomcat ;)
⧭Creacion de Reportes
usando Wizard, archivo jrxml
Para esto vamos al menú "File -> New...".
Con esto se abrirá la ventana de "New File" en la que
seleccionaremos el formato de nuestro reporte. En mi caso seleccionaré la
plantilla "Wood" aunque pueden seleccionar la que ustedes
deseen, y hacemos clic en el botón "Launch Report Wizard"
Este wizard nos ayudará
a crear un reporte 100% funcional en 6 pasos (en realidad 5 ya
que empezamos directamente en el paso 2) que podremos ver desde el mismo iReport sin
necesidad de escribir una solo línea de código Java. Estos 7 pasos son:
1. Selección de la ubicación en la que
se guardará nuestro reporte.
2. Selección del datasource e
introducción del query para obtener los datos que nos interesan.
3. Selección de los datos que queremos
mostrar en el reporte.
4. Creación de grupos para el reporte
(se explicará en un post posterior).
5. Selección del layout o acomodo de
los datos en el reporte
6. Felicitación por tenerminar nuestro
reporte.
Los pasos
interesantes son el 3 y el 4, así que será en
estos en los que nos enfocaremos más.
El paso 1 se
realiza de forma automática, así que no tenemos mucho que hacer en él. En el
paso 2 (en donde comenzamos) seleccionamos el directorio en el que queremos
guardar nuestro reporte y el nombre que tendrá.
Nota: La extensión de documentos de reportes
generados por JasperReports es ".jrxml" que significa "jasper
reports xml", y es un documento xml que contiene los datos para generar un
archivo compilado (".jasper") que es el que usaremos principalmente
en nuestras aplicaciones Java (aunque también podriamos optar por compilar
nuestro archivo ".jrxml" desde la misma aplicación Java y así generar
el archivo ".jasper" correspondiente).
En este momento no
importa mucho en donde guardemos el archivo que se generará, ya que
posteriormente tendremos que moverlo para que nuestra aplicación java pueda
encontrarlo. Por mi parte llamaré al archivo "reporte1".
Hacemos clic en el
botón "Next" para continuar con el paso 3. En este paso
debemos seleccionar el datasource desde el que los datos del reporte serán
tomados. Por default está seleccionado el "Empty datasource". Así
que nosotros seleccionamos el datasource "Conexion MySQL Pruebas"
(el datasource que creamos anteriormente).
Al hacer el cambio
del datasource veremos que aparece un textarea con el título "Query(SQL)"
y en la parte inferior debemos tener un mensaje de error que dice "Invalid
query".
Esto ocurre porque,
efectivamente, en el textarea no tenemos una consulta válida (de hecho no
tenemos ninguna). Por lo que ahora corregiremos eso. Para esto tenemos 3
opciones:
1. Escribir una consulta nosotros
mismos de forma directa.
2. Cargar una consulta que tengamos
guardada en algún archivo .sql o .txt.
3. Crear una consulta usando el "diseñador
de consultas".
Nosotros haremos uso del diseñador de consultas. Hacemos clic
en el botón "Design query" con lo que se abrirá una nueva
ventana que está dividida en tres secciones.
La primera sección es la de la estructura de la consulta.
Aquí básicamente podremos cambiar entre las sentencias que estamos editando (SELECT, WHERE, ORDER
BY, etc.). La segunda sección es la de los elementos de nuestra base de
datos (tablas, vistas, y temporales locales). Aquí podremos seleccionar los
elementos de los que queremos obtener datos para la consulta. Finalmente la
tercer sección nos muestra los elementos que hemos seleccionado de la segunda
sección para que podamos seleccionar los datos a obtener.
La consulta que haremos será para obtener todos los datos de la tabla "participantes", con excepción del "ID". Para esto hacemos doble clic sobre el nombre de la tabla "participantes" en la segunda sección de la ventana que tenemos abierta. Con esto aparecerá en la tercer sección otra ventana con el título "participantes" y un conjunto de checkboxes, cada uno con un campo de nuestra tabla. Para generar la consulta que nos interesa solamente seleccionamos todos los checkboxes (con excepción del "ID") y veremos que la consulta se genera en la primer sección. Ya solo damos clic en el botón "OK".
La consulta que haremos será para obtener todos los datos de la tabla "participantes", con excepción del "ID". Para esto hacemos doble clic sobre el nombre de la tabla "participantes" en la segunda sección de la ventana que tenemos abierta. Con esto aparecerá en la tercer sección otra ventana con el título "participantes" y un conjunto de checkboxes, cada uno con un campo de nuestra tabla. Para generar la consulta que nos interesa solamente seleccionamos todos los checkboxes (con excepción del "ID") y veremos que la consulta se genera en la primer sección. Ya solo damos clic en el botón "OK".
Con esto ya tendremos nuestra consulta en el textarea
correspondiente y podemos continuar con el paso 4, para lo que hacemos clic en
el botón "Next".
En este paso solo tenemos que seleccionar cuáles campos del query generado en el paso anterior queremos que se muestren en el reporte. Como nosotros queremos que se muestren todos pasamos todos los campos del lado izquierdo al lado derecho y hacemos clic en el botón "Next".
En este paso solo tenemos que seleccionar cuáles campos del query generado en el paso anterior queremos que se muestren en el reporte. Como nosotros queremos que se muestren todos pasamos todos los campos del lado izquierdo al lado derecho y hacemos clic en el botón "Next".
Ahora en el paso 5 debemos seleccionar cómo queremos que los
datos sean agrupados. Esto lo explicaré en algún otro post, pero por el momento
dejemos todo en blanco y demos clic en el botón "Next".
El último paso es el solamente una felicitación por haber creado un nuevo reporte.
El último paso es el solamente una felicitación por haber creado un nuevo reporte.
Ahora hacemos clic en el botón "Finish" y ya
podremos ver la plantilla de nuestro reporte.
Si queremos ver como se verá el reporte final, en este caso,
podemos ver un preview con los datos reales si cambiamos a la vista de "preview"
en la ventana del editor.
⧭CAMPOS
CALCULADOS EN IREPORT.
Puede
crear, editar o ver un campo de objeto cuyo valor se calcula a partir de
valores de otros campos. Estos campos calculados pueden existir en el mismo
objeto o en otro objeto relacionado.
Los
campos calculados tienen las siguientes características:
·Son
siempre de sólo lectura.
·Se pueden utilizar en informes
·Se
pueden añadir a las vistas de Contexto, Detalles, Actividad, Lista, Lista
filtrada de la página de inicio, Lista filtrada, Actividad y Carpetas en la
interfaz de usuario IBM® OpenPages GRC Platform.
·Deben
tener nombres de campo exclusivos. La adición de más de un campo calculado con
el mismo nombre de campo en la misma vista dará como resultado un error.
Si desea importar (cargar) y exportar (volcar) definiciones
de campos calculados, debe utilizar la herramienta ObjectManager. Para
obtener detalles, consulte Importación de las definiciones de campo
calculado.
Los
campos calculados requieren un servidor Cognos instalado y activo ya
que utilizan Cognos Computation Handler. Si un campo calculado se
ejecuta en la aplicación y el servidor Cognos no está disponible, los
usuarios visualizan el siguiente mensaje: Cognos no está
disponible. Póngase en
contacto con el administrador del sistema.
Procedimiento
1.
En Report Studio, modele el campo
calculado en un objeto de cálculo. Para obtener detalles, consulte Modelado
de un nuevo campo calculado en Cognos.
2.
En la interfaz de usuario de la
aplicación OpenPages GRC Platform:
a.
Defina el campo calculado. Para
obtener detalles, consulte Definición de un campo calculado.
b.
Vuelva a generar el entorno de
creación de informes. Para obtener detalles, consulte Actualización del
entorno de creación de informes.
Hay dos formas de crear campos calculados en el Report
Designer. El primer método es agregar un cuadro de texto al informe e
ingresar una expresión en el mismo que se ejecutará cuando se genere el
informe. Los pasos para este método se describen a continuación, incluso los
ejemplos de expresión. El segundo método es agregar un campo Calculado no
delimitado al informe. Solo puede hacer esto desde el árbol Sección de
informes. Haga clic con el botón derecho del ratón en el nodo Calculado del
árbol y seleccione Agregar. Esto creará un campo no delimitado que se puede
utilizar en el informe. La expresión del campo no delimitado se debe establecer
en la propiedad Fórmula del campo. Una vez que se establece la Fórmula,
arrastre el campo sobre la sección en el informe en donde desea utilizarlo.
⧭EJECUCIÓN DE REPORTES,ARCHIVO JASPER:
Jasper Report es una librería para la generación de informes.
Está escrita en java y es libre. http://jasperforge.org/ El
funcionamiento consiste en escribir un xml donde se recogen las
particularidades del informe. Este xml lo tratan las clases del Jasper para
obtener una salida que pueden ser un PDF, XML, HTML, CSV, XLS, RTF, TXT.
Para generar el xml, o el compilado
.jasper les recomiendo descargar la herramienta iReport que es un Entorno
Gráfico que está implementado en java y se integra perfectamente con el Jasper
Report http://jasperforge.org/sf/projects/ireport
Aunque JasperReports se utiliza
principalmente para capacidades de reporte a las aplicaciones basadas en la Web
a través de la API de Servlet, no tiene absolutamente ninguna dependencia de la
API Servlet o cualquier otra biblioteca de Java EE. No hay nada que nos impida
la creación de aplicaciones de escritorio Java para generar informes con
JasperReports.
JasperReports nos permite separar
los datos en secciones. Estas secciones incluyen:
·El
título del informe, que aparecerá una vez en la parte superior del informe.
·Un
encabezado de página, que aparecerá en la parte superior de cada página.
·Una
sección de detalle, que normalmente contiene los datos de los informes
primarios.
·A
pie de página, que aparecerá en la parte inferior de cada página.
·Una
sección de resumen, que aparecerá al final del informe.
⧭ENLACE DE REPORTE
CON VENTANA JDIALOG.USO DE JASPERVIEWER Y EJEMPLOS:
Un JFrame permite crear una ventana con
ciertas características, por ejemplo podemos visualizarla en nuestra barra de
tareas, caso contrario de los JDialog, ya que estos últimos son
Ventanas de Dialogo con un comportamiento diferente, no se puede ver la ventana
en la barra de tareas ni posee los botones comunes de maximizar o minimizar....
Los JDialog pueden
ser hijos de JFrames o de otros JDialog mientras
que losJFrame no (Como así Hijos?), es decir, si tenemos claros
conceptos de programación podemos
relacionar esto de Hijos con el concepto de Herencia (Aunque
no directamente, es mas a nivel conceptual), con estos componentes podemos hacer
que una Ventana sea Padre de otra Ventana de tipo JDialog,
asignándole algún tipo de comportamiento o dejando la ventana padre como
Principal.
Los reportes son otras de las utilidades más importantes en
las aplicaciones ya que su función es dar al usuario información ordenada y
limpia así como un formato adecuado para poder ser llevado a impresión o
almacenarlo en algún tipo de fichero como .doc, .odt, pdf, etc.
Antes de continuar, debemos contar en el proyecto con la
librería:
jasperreports-3.7.6.jar
Si
antes se instaló el JasperReports es posible que la librería ya lo tengamos en
el ordenador, incluso el IDE de desarrollo lo tiene indexado, solo deberá ser
añadido a proyecto.
Otras
de la librerías que necesitaremos están comentados en el encabezado del código
de Ejemplo.
El
siguiente procedimiento va a recibir como parámetro la ubicación del reporte
dentro del proyecto, para ello será necesario incluir los reportes en algún
directorio dentro del proyecto en el que trabajamos, en mi caso la estructura
es la siguiente:
beastieux --> reports --> MyReporte.jrxml
private void abrirReporte(String archivo)
{
try {
JasperReport
report = JasperCompileManager.compileReport(archivo);
JasperPrint
print = JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());
JasperViewer.viewReport(print, false);
} catch (JRException
jRException) {
System.out.println(jRException.getMessage());
}
}
La linea de código encargada de general la ruta absoluta de
la ubicación del reporte es el siguiente:
getClass().getResource("/beastieux/reports/MiReporte.jrxml").getPath()
Además, algo muy importante que se necesita para abrir el
reporte es la conexión a la base de datos. En este ejemplo lo hice con
PostgreSQL, ustedes pueden hacerlo con el que gusten, pueden verlos
en los ejemplos de conexión a diferentes base de datos realizados
en los post anteriores de este tutorial. Como observarán, la función coneccionSQL() nos
retorna la conexión a la base de datos, el cual será usado directamente como
tercer parámetro en la linea:
JasperPrint print =
JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());
Código de Ejemplo:
jasperreports-3.7.6.jar
* commons-digester-1.7.jar
* commons-logging-1.0.4.jar
* commons-collections-2.1.1.jar
* commons-beanutils-1.8.0.jar
*/
package beastieux.gui;
import java.awt.CardLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JFrame;
import
net.sf.jasperreports.engine.JRException;
import
net.sf.jasperreports.engine.JasperCompileManager;
import
net.sf.jasperreports.engine.JasperFillManager;
import
net.sf.jasperreports.engine.JasperPrint;
import
net.sf.jasperreports.engine.JasperReport;
import
net.sf.jasperreports.view.JasperViewer;
/**
*
* @author beastieux
*/
public class Ejm20_JasperReport
extends JFrame {
public
Ejm20_JasperReport()
{
JButton
btn1=new JButton("Abrir Reporte");
btn1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn1ActionPerformed(evt);
}
});
this.add(btn1);
this.setLayout(new CardLayout());
this.setSize(200,100);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
private void
btn1ActionPerformed(java.awt.event.ActionEvent evt) {
abrirReporte(getClass().getResource("/beastieux/reports/MiReporte.jrxml").getPath());
}
private void
abrirReporte(String archivo)
{
try {
JasperReport report = JasperCompileManager.compileReport(archivo);
JasperPrint print = JasperFillManager.fillReport(report, new HashMap(),
coneccionSQL());
JasperViewer.viewReport(print, false);
} catch
(JRException jRException) {
System.out.println(jRException.getMessage());
}
}
private Connection
coneccionSQL()
{
try
{
String cadena;
cadena="jdbc:postgresql://127.0.0.1:5432/postgres";
Class.forName("org.postgresql.Driver");
Connection con =
DriverManager.getConnection(cadena,
"usuario","contraseña");
return con;
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
return null;
}
public static void
main(String args[])
{
Ejm20_JasperReport obj = new Ejm20_JasperReport();
obj.setVisible(true);
}
}
2.
Resumen:
⧭INSTALACIÓN DE IREPORT EN NETBEANS:
Primero es
instalar iReport en netbeans. Este plugin en teoría no es necesario para
utilizar jasperReport por separado. Este plugin nos facilita el diseño de las
plantillas de jasperReport desde Netbeans.
⧭Configuración de DataSource:
Como es lógico el primer paso consiste en tener un recurso
configurado mediante JNDI.
3. Summary:
⧭INSTALLATION OF IREPORT IN NETBEANS:
First is to install iReport in netbeans. This plugin
in theory is not necessary to use jasperReport separately. This plugin makes it
easy to design jasperReport templates from Netbeans.
⧭Configuración de DataSource:
Of course the first step is to have a resource
configured by JNDI.
Recomendaciones
·
Para los reportes tienes JarperReports que se puede
usar con iReport para más sencillez.Para la aplicacion de escritorio me parece
mucho (no 100% seguro) que NetBeans tiene un editor Wysiwyg para interfaces.
·
Para la parte web podrias usar MyEclipse con algun
framework web, ya sea Struts, Spring, etc. Tambien
podrias usar el mismo NetBeans con JSF.
Conclusiones
·
Este trabajo de investigación es sencillo pero se ve la forma de poder
conectarnos a diferentes bases de datos en este caso a SQL server, eso sí con
la limitación de tener que utilizar un informe por cada consulta. Esto no es
problema ya que podemos incluir tantos su informes como queramos obteniendo
finalmente el resultado que esperábamos en dicho reporte.
· Gracias a este Trabajo tenemos dos métodos y los llamo desde el
servlet en donde el login debe revisar que se encuentre el usuario y la
contraseña en la BD y también debe validar que nivel de usuario tiene para ver
a cuales paginas puede acceder tendrías algún ejemplo o algo así de cómo debe
ir el método en el dao.
Apreciación del Equipo
Apreciación del Equipo
El reporte con la base de datos es una ayuda
mutua y concreta para mostrar información desde una base de Dados y el driver/conector que
usemos para conectar con esa base de datos desde java, entonces
podemos usar con ello los reportes desde java.
Glosario de Términos
Glosario de Términos
PLUGIN: Firefox
42 se bloquea al intentar ejecutar el plugin de Java. NOTA: La solución alternativa se aplica a
Firefox 42 y requiere la instalación de Windows Java Versión 8 Actualización 66 Versión 18
o versiones posteriores.
JASPERREPORTS: Es una
biblioteca de creación de informes que tiene la habilidad de entregar contenido
enriquecido al monitor, a la impresora o a ficheros PDF, HTML, XLS, CSV y XML.
DATASOURCE: Esta norma propone el uso
de fuente de datos (DataSource), para
tal fin. La API JDBC (Java Data Base Connectivity) proporciona
una interfaz de programación para acceso a datos de Base de Datos Relacionales
desde el lenguaje de programación Java: El paquete java.sql es el corazón de la API JDBC 2.0.
JNDI: El Java Naming and Directory Interface (JNDI) es un interface de programación (API) que
proporciona funcionalidades de nombrado y directorio a las aplicaciones
escritas usando Java. Está definido para ser independiente de
cualquier implementación de servicio de directorio.
Linkografía
http://www.academia.edu/7646133/TESIS_DE_DISENO_E_IMPLEMENTACION_DE_UN_SISTEMA_DE_VENTASDIAPOSITIVAS: http://es.slideshare.net/YordinAlbertoPrezSau/reportes-70217754
VIDEO: