SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Continuación de la creación de reportes con JasperReport
Para poder convertir a otro formato el documento o reporte y mostrarlo mediante un visor, se
incorporan las librerías necesarias para ello, se aconseja utilizar las que se encuentran en este
enlace LIBRERIAS JAR. (presionar ctrl+click para activar el enlace)
En librerías de la ventana de proyecto se importan estas librerías mediante el menú contextual
que se genera en la carpeta libreries. Se selecciona el comando add jar/folders y en la ventana que
se abre se navega hasta conseguir las librerías, se seleccionan y se presiona el botón abrir
Si se abre la carpeta libreries se pueden visualizar estos documentos.
Ahora se crea en donde está el empaquetado, botón izquierdo y seleccionando new=>Java Class,
se crea una class llamada VisorReporte
En esta clase vamos a crear el código para mostrar el reporte en PDF y enlazarlo al ejemplo
anterior con el botón reporte del formulario.
Ya se habían incorporado a las librerías las necesarias para lograr esto. Si se diseña el código
quedaría algo como esto
public abstract class VisorReporte {
private static JasperReport reporte;
private static JasperPrint reportecargado;
private static JasperViewer visor;
public static void crearReporte(String path,Connection c)
{
try {
reporte = (JasperReport) JRLoader.loadObjectFromFile( path );
reportecargado=JasperFillManager.fillReport(reporte,null,c); }
catch( JRException ex ) {
System.out.println("NO CARGO EL REPORTE");
ex.printStackTrace();
}
}
public static void MostrarVisor()
{
visor = new JasperViewer(reportecargado);
visor.setVisible(true);
JasperViewer ventanaVisor = new JasperViewer(reportecargado,false) ;
ventanaVisor.setTitle("LISTADO DE SERVICIOS");
ventanaVisor.setVisible(true);
}
public static void exportaraPDF( String destination )
{
try {
JasperExportManager.exportReportToPdfFile(reportecargado,destination);
}
catch( JRException ex ) {
ex.printStackTrace();
}
}
}
Se pueden observar muchos alertas, esto es debido a las librerías faltantes que hay que importar
para que se puedan ejecutar los métodos.
Si se presiona cada alerta la primera opción es generalmente import librería_que_se_necesita.jar;,
Se clickea esa opción y se va resolviendo el problema.
Si quedan warning (bombillo con triangulito amarillo) no hay problemas
Después de irse incorporando las librerías ya tenemos la clase que permite cargar el reporte con el
método CrearReporte, que lo ensambla con la información de la base de datos. La clase que
monta el reporte PDF ya completo con los datos en el visor, llamada mostrarVisor, y un método
adicional que permite descargarlo en alguna carpeta en el computador , llamado exportaraPDF.
Se vuelve a la class Formulario1, la cual se vio como se creaba en la primera parte de este ejemplo
El botón reporte había sido programado para incorporar un registro a la base de datos, se elimina
ese código (solo el del evento de botón) y se reprograma de la siguiente manera
import java.sql.Connection;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Usuario
*/
public class Formulario1 extends javax.swing.JFrame {
/**
* Creates new form Formulario1
*/
public Formulario1(Connection cn) {
VisorReporte.crearReporte("C:UsersUsuarioDesktopEjemplosrcreporte.jasper",cn);
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("Reporte");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(169, Short.MAX_VALUE)
.addComponent(jButton1)
.addGap(160, 160, 160))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(121, 121, 121)
.addComponent(jButton1)
.addContainerGap(156, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
VisorReporte.MostrarVisor();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//</editor-fold>
/* Create and display the form */
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}
El constructor de esta clase no solo se usa para inicializar el JFrame, si se observa el código
public Formulario1(Connection cn) {
VisorReporte.crearReporte("C:UsersUsuarioDesktopEjemplosrcreporte.jasper",cn);
initComponents();
}
El constructor tiene un parámetro tipo Connection para llenar el reporte con los datos de la base
de datos y la ubicación o path del reporte ejecutable extensión jasper.
Dentro del constructor se aprecia el método que llena el reporte llamado crearReporte, este
método se encuentra antecedido del nombre de la clase abstracta que es VisorReporte, ya que
esta no se instancia.
En el evento del botón Reporte se observa el siguiente código
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
VisorReporte.MostrarVisor();
}
Aquí se llama al método que permite mostrar el reporte a través de un visor, este reporte se
muestra como PDF.
Se eliminan las variables que no son necesarias ya que este ejemplo no modifica los datos de la
base de datos, cosa que ya se ha explicado, sino que genera reportes.
La clase Conexcion, donde se establece la conexión con la base de datos, se puede hacer abstracta
para evitar la instanciación y hacerla global, el código cambia a este, donde solo se establecen las
variables como prívate static y la clase como publis abstract
import java.awt.HeadlessException;
import java.sql.*;
import javax.swing.JOptionPane;
public abstract class Conexcion {
private static Connection con=null;
private static Statement stat=null;
private static ResultSet reg=null;
public static Connection conectar(){
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost/bd","root","");
} catch(ClassNotFoundException | SQLException | HeadlessException e){
JOptionPane.showMessageDialog(null,"No Conectado");
System.exit(0);
}
return con;
}
public static void manejar(Connection con, String sql){
try {
stat=con.createStatement();
stat.executeUpdate(sql);
JOptionPane.showMessageDialog(null,"DATOS INCLUIDOS");
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"DATOS NO INCLUIDOS");
}
}
public static ResultSet leer(Connection con,String query) {
try{
stat=con.createStatement();
reg=stat.executeQuery(query);
} catch (SQLException e) {
}
return reg;
}
}
Quedando de esta forma
En la clase principal, llamada public class Main se modifica un poco el código para poder
establecer la conexión a base de datos
import java.sql.Connection;
public class Main {
static Connection c;
public static void main(String[] args) {
c=Conexcion.conectar();
Formulario1 form1=new Formulario1(c);
form1.setVisible(true);
}
}
Y ya está listo
Al ejecutarse el programa se obtiene esto
Se presiona el botón reporte
Y Listo!!!
En la clase VisorReporte está otro método para descargar el reporte PDF en la dirección que el
programador decida.
Prof. Juan Sosa

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Conexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysqlConexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysql
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
 
JPA en Netbeans
JPA en NetbeansJPA en Netbeans
JPA en Netbeans
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence API
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Conexion del jpa con mysql
Conexion del jpa con mysqlConexion del jpa con mysql
Conexion del jpa con mysql
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
Connection
ConnectionConnection
Connection
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Presentación1
Presentación1Presentación1
Presentación1
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 

Destacado

WWI Unit Plan (LinkedIn)
WWI Unit Plan (LinkedIn)WWI Unit Plan (LinkedIn)
WWI Unit Plan (LinkedIn)Martin Rowley
 
Aπόκριες 2014
Aπόκριες 2014Aπόκριες 2014
Aπόκριες 2014vidi3241
 
Positivo negativo y lo que aprenderé del
Positivo negativo y lo que aprenderé delPositivo negativo y lo que aprenderé del
Positivo negativo y lo que aprenderé delmanuel Alvarez
 
Recursos educativos digitales
Recursos educativos digitalesRecursos educativos digitales
Recursos educativos digitalesandressantacruz88
 
poorjames article revised
poorjames article revisedpoorjames article revised
poorjames article revisedPamela Delupio
 
Проектирование презентация
Проектирование презентацияПроектирование презентация
Проектирование презентацияAleksandr Tsurikov
 
Речные сплавы по чусовой
Речные сплавы по чусовойРечные сплавы по чусовой
Речные сплавы по чусовойURFU
 
Mioquimia palpebral-temblor-parpados
Mioquimia palpebral-temblor-parpadosMioquimia palpebral-temblor-parpados
Mioquimia palpebral-temblor-parpadosDiego Tondonia
 
Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...
Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...
Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...Sushil Gupta
 
Cardiac cycle &amp; sound
Cardiac cycle  &amp; soundCardiac cycle  &amp; sound
Cardiac cycle &amp; soundKanthlal SK
 
10 Ways to Innovate the Retail Industry with Engagement and Gamification
10 Ways to Innovate the Retail Industry with Engagement and Gamification10 Ways to Innovate the Retail Industry with Engagement and Gamification
10 Ways to Innovate the Retail Industry with Engagement and GamificationFabio Viola
 
Apostila de atividades para o 1º ano
Apostila de atividades para o 1º anoApostila de atividades para o 1º ano
Apostila de atividades para o 1º anoValéria Poubell
 

Destacado (16)

O que há de novo
O que há de novoO que há de novo
O que há de novo
 
WWI Unit Plan (LinkedIn)
WWI Unit Plan (LinkedIn)WWI Unit Plan (LinkedIn)
WWI Unit Plan (LinkedIn)
 
Aπόκριες 2014
Aπόκριες 2014Aπόκριες 2014
Aπόκριες 2014
 
Positivo negativo y lo que aprenderé del
Positivo negativo y lo que aprenderé delPositivo negativo y lo que aprenderé del
Positivo negativo y lo que aprenderé del
 
Recursos educativos digitales
Recursos educativos digitalesRecursos educativos digitales
Recursos educativos digitales
 
poorjames article revised
poorjames article revisedpoorjames article revised
poorjames article revised
 
Проектирование презентация
Проектирование презентацияПроектирование презентация
Проектирование презентация
 
Речные сплавы по чусовой
Речные сплавы по чусовойРечные сплавы по чусовой
Речные сплавы по чусовой
 
Mioquimia palpebral-temblor-parpados
Mioquimia palpebral-temblor-parpadosMioquimia palpebral-temblor-parpados
Mioquimia palpebral-temblor-parpados
 
Funcion social de la escuela
Funcion social de la escuelaFuncion social de la escuela
Funcion social de la escuela
 
Humilty
HumiltyHumilty
Humilty
 
Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...
Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...
Final presentation on Sericulture,Apiculture,Vermicomposting and Mushroom cul...
 
Cardiac cycle &amp; sound
Cardiac cycle  &amp; soundCardiac cycle  &amp; sound
Cardiac cycle &amp; sound
 
10 Ways to Innovate the Retail Industry with Engagement and Gamification
10 Ways to Innovate the Retail Industry with Engagement and Gamification10 Ways to Innovate the Retail Industry with Engagement and Gamification
10 Ways to Innovate the Retail Industry with Engagement and Gamification
 
200508 - Bases de Datos
200508 - Bases de Datos200508 - Bases de Datos
200508 - Bases de Datos
 
Apostila de atividades para o 1º ano
Apostila de atividades para o 1º anoApostila de atividades para o 1º ano
Apostila de atividades para o 1º ano
 

Similar a Continuación 3 de la creación de reportes con jasper report

Similar a Continuación 3 de la creación de reportes con jasper report (20)

Flow layout
Flow layoutFlow layout
Flow layout
 
REPORTES
REPORTESREPORTES
REPORTES
 
PLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys GrafcetPLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys Grafcet
 
Programacion en JAVA 2
Programacion en JAVA 2Programacion en JAVA 2
Programacion en JAVA 2
 
Reportes
ReportesReportes
Reportes
 
I report
I reportI report
I report
 
I report
I reportI report
I report
 
Reportes
ReportesReportes
Reportes
 
Guia BD conexión Mysql con Java usando Netbeans
Guia BD conexión Mysql con Java usando NetbeansGuia BD conexión Mysql con Java usando Netbeans
Guia BD conexión Mysql con Java usando Netbeans
 
Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Java tema06a
Java tema06aJava tema06a
Java tema06a
 
Programación i
Programación iProgramación i
Programación i
 
Jasreport
JasreportJasreport
Jasreport
 
Java class library
Java class libraryJava class library
Java class library
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidas
 
Doctrine symfony
Doctrine symfonyDoctrine symfony
Doctrine symfony
 
Doctrine symfony
Doctrine symfonyDoctrine symfony
Doctrine symfony
 
Computación 3
Computación 3Computación 3
Computación 3
 
Conexion mysql con java usando netbeans
Conexion mysql con java usando netbeansConexion mysql con java usando netbeans
Conexion mysql con java usando netbeans
 

Más de jbersosa

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standarjbersosa
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepcionesjbersosa
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catchjbersosa
 
Clasen1java
Clasen1javaClasen1java
Clasen1javajbersosa
 
Programación java1
Programación java1Programación java1
Programación java1jbersosa
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistopjbersosa
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacionjbersosa
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principaljbersosa
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2jbersosa
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891jbersosa
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticajbersosa
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)jbersosa
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónjbersosa
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...jbersosa
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosjbersosa
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una redjbersosa
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2jbersosa
 
Simular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariaSimular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariajbersosa
 

Más de jbersosa (20)

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standar
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catch
 
Main
MainMain
Main
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Programación java1
Programación java1Programación java1
Programación java1
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistop
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacion
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principal
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentación
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Php
PhpPhp
Php
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una red
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2
 
Simular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariaSimular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentaria
 

Último

dermatitis de contacto dermatologia irritativa
dermatitis de contacto dermatologia irritativadermatitis de contacto dermatologia irritativa
dermatitis de contacto dermatologia irritativaDamiiHernandez
 
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptxSISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptxGenaroElmerSifuentes6
 
PROYECTO 3 4 5 AÑOS del nivel inicial
PROYECTO    3 4 5 AÑOS del nivel inicialPROYECTO    3 4 5 AÑOS del nivel inicial
PROYECTO 3 4 5 AÑOS del nivel inicialArtemisaReateguiCaro
 
Sesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdfSesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdfLas Sesiones de San Blas
 
TEMA 6 LA II REPÚBLICA (1931-1936)_.pdf
TEMA 6         LA II REPÚBLICA (1931-1936)_.pdfTEMA 6         LA II REPÚBLICA (1931-1936)_.pdf
TEMA 6 LA II REPÚBLICA (1931-1936)_.pdfanagc806
 
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.pptCAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.pptSandraCardenas92
 
Clase de Aines - Terapeutica médica eToxicologia
Clase de Aines - Terapeutica médica eToxicologiaClase de Aines - Terapeutica médica eToxicologia
Clase de Aines - Terapeutica médica eToxicologiaRaphaelCruz46
 
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...MarcoFlores940553
 
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptxIndicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx Estefa RM9
 

Último (9)

dermatitis de contacto dermatologia irritativa
dermatitis de contacto dermatologia irritativadermatitis de contacto dermatologia irritativa
dermatitis de contacto dermatologia irritativa
 
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptxSISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
 
PROYECTO 3 4 5 AÑOS del nivel inicial
PROYECTO    3 4 5 AÑOS del nivel inicialPROYECTO    3 4 5 AÑOS del nivel inicial
PROYECTO 3 4 5 AÑOS del nivel inicial
 
Sesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdfSesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdf
 
TEMA 6 LA II REPÚBLICA (1931-1936)_.pdf
TEMA 6         LA II REPÚBLICA (1931-1936)_.pdfTEMA 6         LA II REPÚBLICA (1931-1936)_.pdf
TEMA 6 LA II REPÚBLICA (1931-1936)_.pdf
 
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.pptCAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
 
Clase de Aines - Terapeutica médica eToxicologia
Clase de Aines - Terapeutica médica eToxicologiaClase de Aines - Terapeutica médica eToxicologia
Clase de Aines - Terapeutica médica eToxicologia
 
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
 
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptxIndicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
 

Continuación 3 de la creación de reportes con jasper report

  • 1. Continuación de la creación de reportes con JasperReport Para poder convertir a otro formato el documento o reporte y mostrarlo mediante un visor, se incorporan las librerías necesarias para ello, se aconseja utilizar las que se encuentran en este enlace LIBRERIAS JAR. (presionar ctrl+click para activar el enlace) En librerías de la ventana de proyecto se importan estas librerías mediante el menú contextual que se genera en la carpeta libreries. Se selecciona el comando add jar/folders y en la ventana que se abre se navega hasta conseguir las librerías, se seleccionan y se presiona el botón abrir Si se abre la carpeta libreries se pueden visualizar estos documentos.
  • 2. Ahora se crea en donde está el empaquetado, botón izquierdo y seleccionando new=>Java Class, se crea una class llamada VisorReporte En esta clase vamos a crear el código para mostrar el reporte en PDF y enlazarlo al ejemplo anterior con el botón reporte del formulario.
  • 3. Ya se habían incorporado a las librerías las necesarias para lograr esto. Si se diseña el código quedaría algo como esto public abstract class VisorReporte { private static JasperReport reporte; private static JasperPrint reportecargado; private static JasperViewer visor; public static void crearReporte(String path,Connection c) { try { reporte = (JasperReport) JRLoader.loadObjectFromFile( path ); reportecargado=JasperFillManager.fillReport(reporte,null,c); } catch( JRException ex ) { System.out.println("NO CARGO EL REPORTE"); ex.printStackTrace(); } } public static void MostrarVisor() { visor = new JasperViewer(reportecargado); visor.setVisible(true); JasperViewer ventanaVisor = new JasperViewer(reportecargado,false) ; ventanaVisor.setTitle("LISTADO DE SERVICIOS"); ventanaVisor.setVisible(true); } public static void exportaraPDF( String destination ) { try { JasperExportManager.exportReportToPdfFile(reportecargado,destination); } catch( JRException ex ) { ex.printStackTrace(); } } }
  • 4. Se pueden observar muchos alertas, esto es debido a las librerías faltantes que hay que importar para que se puedan ejecutar los métodos. Si se presiona cada alerta la primera opción es generalmente import librería_que_se_necesita.jar;, Se clickea esa opción y se va resolviendo el problema. Si quedan warning (bombillo con triangulito amarillo) no hay problemas
  • 5. Después de irse incorporando las librerías ya tenemos la clase que permite cargar el reporte con el método CrearReporte, que lo ensambla con la información de la base de datos. La clase que monta el reporte PDF ya completo con los datos en el visor, llamada mostrarVisor, y un método adicional que permite descargarlo en alguna carpeta en el computador , llamado exportaraPDF. Se vuelve a la class Formulario1, la cual se vio como se creaba en la primera parte de este ejemplo El botón reporte había sido programado para incorporar un registro a la base de datos, se elimina ese código (solo el del evento de botón) y se reprograma de la siguiente manera import java.sql.Connection; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /**
  • 6. * * @author Usuario */ public class Formulario1 extends javax.swing.JFrame { /** * Creates new form Formulario1 */ public Formulario1(Connection cn) { VisorReporte.crearReporte("C:UsersUsuarioDesktopEjemplosrcreporte.jasper",cn); initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  • 7. jButton1.setText("Reporte"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(169, Short.MAX_VALUE) .addComponent(jButton1) .addGap(160, 160, 160)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(121, 121, 121) .addComponent(jButton1) .addContainerGap(156, Short.MAX_VALUE)) ); pack(); }// </editor-fold>
  • 8. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { VisorReporte.MostrarVisor(); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  • 9. } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Formulario1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ } // Variables declaration - do not modify private javax.swing.JButton jButton1; // End of variables declaration } El constructor de esta clase no solo se usa para inicializar el JFrame, si se observa el código public Formulario1(Connection cn) { VisorReporte.crearReporte("C:UsersUsuarioDesktopEjemplosrcreporte.jasper",cn); initComponents(); }
  • 10. El constructor tiene un parámetro tipo Connection para llenar el reporte con los datos de la base de datos y la ubicación o path del reporte ejecutable extensión jasper. Dentro del constructor se aprecia el método que llena el reporte llamado crearReporte, este método se encuentra antecedido del nombre de la clase abstracta que es VisorReporte, ya que esta no se instancia. En el evento del botón Reporte se observa el siguiente código private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { VisorReporte.MostrarVisor(); } Aquí se llama al método que permite mostrar el reporte a través de un visor, este reporte se muestra como PDF. Se eliminan las variables que no son necesarias ya que este ejemplo no modifica los datos de la base de datos, cosa que ya se ha explicado, sino que genera reportes. La clase Conexcion, donde se establece la conexión con la base de datos, se puede hacer abstracta para evitar la instanciación y hacerla global, el código cambia a este, donde solo se establecen las variables como prívate static y la clase como publis abstract import java.awt.HeadlessException;
  • 11. import java.sql.*; import javax.swing.JOptionPane; public abstract class Conexcion { private static Connection con=null; private static Statement stat=null; private static ResultSet reg=null; public static Connection conectar(){ try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost/bd","root",""); } catch(ClassNotFoundException | SQLException | HeadlessException e){ JOptionPane.showMessageDialog(null,"No Conectado"); System.exit(0); } return con; } public static void manejar(Connection con, String sql){ try { stat=con.createStatement(); stat.executeUpdate(sql); JOptionPane.showMessageDialog(null,"DATOS INCLUIDOS"); }catch(SQLException e){ JOptionPane.showMessageDialog(null,"DATOS NO INCLUIDOS");
  • 12. } } public static ResultSet leer(Connection con,String query) { try{ stat=con.createStatement(); reg=stat.executeQuery(query); } catch (SQLException e) { } return reg; } } Quedando de esta forma
  • 13. En la clase principal, llamada public class Main se modifica un poco el código para poder establecer la conexión a base de datos import java.sql.Connection; public class Main { static Connection c; public static void main(String[] args) { c=Conexcion.conectar(); Formulario1 form1=new Formulario1(c); form1.setVisible(true); } } Y ya está listo Al ejecutarse el programa se obtiene esto
  • 14. Se presiona el botón reporte
  • 15. Y Listo!!! En la clase VisorReporte está otro método para descargar el reporte PDF en la dirección que el programador decida. Prof. Juan Sosa