Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

Code Army Bolivia

14/1/11

Reportes con iReport y Netbeans [Basico - Parte 2]

JAN29

Dando continuacion al tutorial "Reportes con iReport [Basico - Parte 1]", en esta segunda parte utilizaremos los archivos generados con iReport, rSample.jasper y rSample.jrxml que vimos en la primera parte y los cuales implementaremos en Netbeans para visualizar estos desde este IDE.

¿Que nececitamos?
  • Los archivos "rSample.jasper" y "rSample.jrxml" vistos en la primera parte de este tutorial
  • Las librerias necesarias para ejecutar un reporte con iReport son:
  1. commons-beanutils-1.8.2.jar
  2. commons-collections-3.2.1.jar
  3. commons-digester-1.7.jar
  4. commons-javaflow-20060411.jar
  5. commons-logging-1.1.jar
  6. groovy-all-1.5.5.jar
  7. iText-2.1.7.jar
  8. jasperreports-3.7.2.jar
Descarga y añade estos JAR en una nueva libreria, si no sabes como, date una vuelta por aqui: Añadir/Instalar nuevas librerias en Netbeans.
  • Tambien necesitamos la libreria : MySQL JDBC Driver. para la conexion a la base de datos.
Para realizar este tutorial se supone que tienes un nivel intermedio en el lenguaje Java, se daran muchas cosas por entendidas ya que si eres un novato en Java y pretendes comenzar este lenguaje haciendo reportes, dejame decirte que aprende primero a gatear y despues ponte a caminar.


El Proyecto.

1. Crea un nuevo proyecto en netbeans, "iReport_Sample".

2. Añade las librerias mencionadas más arriba

3. Crea una clase iReportClass.java

4. Crea una clase conexion.java

5. Los archivos "rSample.jasper" y "rSample.jrxml"debes colocarlos en la misma carpeta del proyecto, osea:
6. Ahora ya debes tener algo como esto en Netbeans:

Si no es asi, revisa los pasos anteriores para poder continuar.

7. El codigo necesario para la clase conexion.java, es:


package ireport_sample;
import java.sql.*;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class conexion {
   static String bd = "dbSample";
   static String login = "USUARIO";
   static String password = "PASSWORD";
   static String url = "jdbc:mysql://localhost/"+bd;

   Connection conn = null;

   /** Constructor de DbConnection */
   public conexion() {
      try{
         //obtenemos el driver de para mysql
         Class.forName("com.mysql.jdbc.Driver");
         //obtenemos la conexión
         conn = DriverManager.getConnection(url,login,password);
         if (conn!=null){
            System.out.println("Conexión a base de datos "+bd+". listo");
         }
      }catch(SQLException e){
         System.out.println(e);
      }catch(ClassNotFoundException e){
         System.out.println(e);
      }
   }
   /* Permite retornar la conexión */
   public Connection getConnection(){
      return conn;
   }
   /* termina la conexion a la base de datos */
   public void desconectar(){
      conn = null;
      System.out.println("La conexion a la  base de datos "+bd+" a terminado");
   }
}

Esta clase es la que nos ayuda a conectarnos con la base de datos, puedes saber mas de ella en: Clase conexion a base de datos.

8. El codigo para la clase iReportClass.java, es:


package ireport_sample;
/* librerias de ireport*/
import java.net.URL;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class iReportClass {
    //se estable una conexion con la base de datos
    private conexion con = new conexion();    
     /* reporte sencillo con conexion a base de datos MySQL, 
      * el reporte no cuenta con parametros */
     public void reporte(){         
     JasperReport reporte;
     JasperPrint reporte_view;     
     try{
         //direccion del archivo JASPER
          URL  in = this.getClass().getResource("rSample.jasper");
          reporte = (JasperReport) JRLoader.loadObject( in );           
          reporte_view= JasperFillManager.fillReport( reporte, new HashMap(), con.getConnection() );
          JasperViewer.viewReport( reporte_view ); 
          //terminamos la conexion a la base de datos
          con.desconectar();
   }catch (JRException E){
     E.printStackTrace();
          }
    }
}

Nuestro reporte es sencillo, no cuenta con parametros de entrada ni imagenes, lo unico que hacemos es instanciar nuestro archivo JASPER para luego lanzar el JASPERVIEWER y ver nuesotro reporte desde netbeans.

9.  Finalmente el codigo para llamar esta clase desde el Main, es:


package ireport_sample;
public class Main {

    public static void main(String[] args) {
        new iReportClass().reporte();
    }

}
10. Compilamos y ejecutamos el proyecto,
FIN

Los archivos utilizados para este proyecto estan en el siguiente enlace:


Enlace actualizado al 19 de noviembre de 2011

http://link.jc-mouse.net/?id=IRJAVSAMP7

19 comentarios:

Anónimo dijo...

xfa necesitamos saber como llamamos un Reporte, desde un formulario, con elementos de menu...

juancho dijo...

lo hice tal cual como está y no funciona :(

juancho dijo...

este es el error

Exception in thread "main" java.lang.NullPointerException
at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1666)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1322)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:141)
at ireport_sample.iReportClass.reporte(iReportClass.java:26)
at ireport_sample.Main.main(Main.java:4)
Java Result: 1

jc Mouse dijo...

el error te sale porque no encuentra las librerias para los reportes, te esta pidiendo la libreria llamda "reporte, que es como yo llame a la libreria de jaspert,si tu tienes las librerias con otro nombre con otro nombre debes llamarla con ese nombre y eliminar la referencia a "reporte"

Angel Eduardo Marin dijo...

Por favor explicanos un poco mas sobre el error, creo que todos los que lo hemos intentado nos hemos topado con el mismo problema, ayudanos por favor

Angel Eduardo Marin dijo...

Bueno ya lo logre, es el mejor tutorial que encontre y revise muchisimos, para los que no les funcione revisen que la versión de ireports sea la misma de jasperreports, y descarguen el jasperreports.zip completo y usen las librerias que vienen ahi, gracias

Anónimo dijo...

esta bueno tu tuto.. pero el link ya no existe seria bueno k lo volvas a subir...

Anónimo dijo...

hola e exo too = pero me salen estos errorres:

Conexión a base de datos Alumno. listo
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/runtime/callsite/CallSiteArray
at null_1308597235046_417097.$createCallSiteArray(calculator_null_1308597235046_417097)
at null_1308597235046_417097.$getCallSiteArray(calculator_null_1308597235046_417097)
at null_1308597235046_417097.(calculator_null_1308597235046_417097)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Java Result: 1
GENERACIÓN CORRECTA (total time: 17 seconds)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

Anónimo dijo...

Hola

muchas gracias por el tutorial
me salio todo bien pero al implementar el código de la clase main me sale este error:

error: cannot find symbol
new ireportClass1().reporte();
symbol: method reporte()
location: class ireportClass1

por favor si puedes decirme que esta mal

gracias¡¡¡¡

Anónimo dijo...

Alert!

http://freakshare.com/files/iusdlkkm/iReportSample.rar.html

Podrias remplazar el link por que en este no Existe el archivo de descarga.


Nomas esi acerte notar .. Una OjEada con el link

Anónimo dijo...

Ya encontre la solucion efectivamente, el error sale porque yo lo editaba en ireport 4.1.3 y estaba hecho era en 3.7.2 y las librerias no son las mismas haganlo en 3.7.2 y solo editenlo

Eleazar dijo...

MUCHAS GRACIAS POR ESTE TUTORIAL, me detengo para agradecerte a usted por este blog, ya que me salvo con este problema para la escuela...

me gustaria que todo sepan que para realizar este ejmplo: deben de contar con la version 3.7.2 del jasper y las librerias 3.7.2.... yo tambien lo hize con la mas reciente y marca error.. saludos

Neonemesis15 dijo...

Hola muchas gracias por el tutorial, a la primera no me funcionó, e intentando una y otra vez como siempre suele sucederme, copie el codigo que venia para descargar y lo pegue tal como está lo unico que hay que cambiar es el usuario y el pass para la conexion con mysql.
Gracias la verdad siempre vi este proceso muy engorroso, ahora lo veo mas compresible gracias a usted.
Saludos.

Atte.
Pablo

Anónimo dijo...

oye una pregunta y para crearlo jar como le haces para los reportes.

ayudame porfavor

ANTHONYNOE dijo...

HOLA JC RESPONDE ESTE COMENTARIO..DANDOLE VUELTAS A ESTE ERROR Y NO LO ENCUENETRO CON BASE D DATOS CONECTADA Y SIGUIENDO TUS PASOS INCLUYENDO TODAS LAS LIBRERIAS NO SE DOND ESTA EL ERROR X FA AYUDA..



Conexión a base de datos dbfactura. listo
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/runtime/callsite/CallSiteArray
at null_1369677276840_534773.$createCallSiteArray(calculator_null_1369677276840_534773)
at null_1369677276840_534773.$getCallSiteArray(calculator_null_1369677276840_534773)
at null_1369677276840_534773.(calculator_null_1369677276840_534773)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:374)
at java.lang.Class.newInstance(Class.java:327)
at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.java:98)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator(JRAbstractCompiler.java:320)
at net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:240)
at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:421)
at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:428)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:76)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:86)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:56)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at iReportClass.reporte(iReportClass.java:32)
at iReportClass.main(iReportClass.java:43)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.callsite.CallSiteArray
at java.lang.ClassLoader.findClass(ClassLoader.java:522)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 22 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

mouse dijo...

nunca me salio ese error. pèro podria deberse a la incompatibilidad de versiones, hacemos el reporte en una version y desde netbeans usamos otra version y ahi es donde salen los errores :/

Anónimo dijo...

No son muy conocedor del tema, pero si les aclaro algo, la version del iReport que usan para crear el reporte, debe ser igual a las versiones de los iReport.jar de las librerias que se carguen en Netbeans
Att Juank

Unknown dijo...

amigo me sale que no tiene paginas y mi reporte si tiene

Unknown dijo...

Gracias por el aporte, este si me funciono :D

Post recomendado