Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   ¡Pasos para Diseñar y Mostrar un reporte en Java! (http://www.forosdelweb.com/f45/pasos-para-disenar-mostrar-reporte-java-284225/)

ValerioJ 30/03/2005 13:03

¡Pasos para Diseñar y Mostrar un reporte en Java!
 
Buenas, amigos realmente estoy super perdido con esto de los informes, quería que colocaramos los pasos que se deben realizar para diseñar mostrar e imprimir un informe con IReport y Jasper report, porque la verdad se me hace bastante complejo.

De lo que puedo aportar en mi investigación colocaré los pasos que he dado, y quisiera que uds. colaboren conmigo para dejar aquí una guía para todos los que la necesiten, si alguno quiere colaborar puede postear su información y una vez concretado pasamos el procedimiento al área de FAQ les parece?


Bueno aquí voy:

Paso 1:
bajamos el IReport y el Jasper report.
y lo descomprimimos en el disco C:

Paso 2: creación de un reporte con el IReport de manera Visual
entendemos esto como la parte gráfica que permite diseñar el informe, conectarse a la base de datos, elaborar la consulta, parámetros, variables, etc.
Ahora bien que sucede cuando el IReport no tiene un driver de mi base de datos como por ejemplo el de InterBase?
Bueno la respuesta es la siguiente: nos bajamos el Driver de Interbase ¡Claro que esto es necesario cuando estamos en windows! es decir haríamos una conexión con un DSN de Sistema en nuestro equipo y esa la utilizamos en IReport 4.1.

Paso 3:

Utilizamos el wizard de IReport el cual nos pide un Sql String y construimos nuestro reporte.

Paso 4: Cómo podemos llamar al reporte desde JasperReport para visualizarlo?

ValerioJ 05/04/2005 10:18

Ok continuando en la investigación ya he podido dar los pasos restantes y aquí se los posteo: Paso 4: debemos tomar en cuenta varios aspectos:
4.1 la conexión a la base de datos debemos crear un objeto de tipo Connection: así:
import java.sql;
public class conectarDB{
static Connection conn;
public static miConexion(){
String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; //usamos el driver según el tipo de base de datos
String connectString = "jdbc.odbc:miservidor:/sistema/db/mibasededatos";
String user = "pepe";
String password = "123pepe";
Class.forName(driver);
conn = DriverManager.getConnection(connectString,user,pas sword);
//Retornamos la conexión establecida.
return conn;
}
// Y UN MÉTODO para cerrar la conexión

public void closeConexion(){
try
{
conn.close();
}
catch(SQLException onConClose)
{
System.out.println("error on closing");
onConClose.printStackTrace();
}
}

Paso 5: creamos nuestra clase para visualizar el reporte así:

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.JRException;
//Esta clase se usa para visualizar el reporte que generamos
import net.sf.jasperreports.view.JasperViewer;
//esta clase se usa para visualizar el diseño del reporte
import net.sf.jasperreports.view.JasperDesignViewer;
import net.sf.jasperreports.engine.JasperPrint;
import java.sql.*;
import java.io.*;
import java.util.*;

public class VisualizaReporte{
public VisualizaReporte(){
LlenarReporte();
}

public void LlenarReporte(){

try{
//Pasamos parametros al reporte Jasper.
Map parameters = new HashMap();
parameters.put("sql_query", new String("select * from TABLA1 Order By CAMPO1"));
//Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte).
conectarDB conec =new conectarDB();

JasperPrint reporte = JasperFillManager.fillReport("c:\\reportes\\report es\\src\\reportes\\Temiuso.jasper", parameters,conec.getConexion());
//Finalmente visualizamos el reporte.
JasperViewer.viewReport(reporte);
conec.closeConexion();
}catch(JRException ex){
System.err.println( ex.getLocalizedMessage());
}
}

public static void main(String args[]){
VisualizaReporte ver= new VisualizaReporte();
}

}

ValerioJ 07/04/2005 09:19

Otra manera de ubicar reportes cuando utilizamos <B>paquetes</b> es creando un InputStrem en el cual le pasamos la ruta completa donde se ubica el reporte:

debemos agregar lo siguiente a nuestra clase:

import java.io.InputStream;

reportJASStream = VisualizaReporte.class.getResourceAsStream("/carpetaA/carpetaB/MiReporte.jasper");
reporte = JasperFillManager.fillReport(reportJASStream,param eters,conec.getConexion());

laraos 10/04/2005 20:17

Tengo un problema al ejecutar..
 
esta linea

masterPrint = JasperFillManager.fillReport(masterReport, masterParams,
con);


...en un programa parecido al tuyo y sale este error :'( , por favor tengo entendido que falta esa clase org/eclipse/jdt/internal/compiler/env/INameEnvironment, la busque por internet y no esta , tu la tienes, es que supongo que si el codigo que enviaste lo ejecutaste y corrio bien, tu la debes tener, por fa enviamela, te lo agradezco, gracias

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/env/INameEnvironment
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Cla ss.java:2328)
at java.lang.Class.getConstructor0(Class.java:2640)
at java.lang.Class.newInstance0(Class.java:321)
at java.lang.Class.newInstance(Class.java:303)

ValerioJ 12/04/2005 12:09

Oye amigo , creo que escribiste mal la instrucción pero es:
JasperPrint = JasperFillManager.fillReport(masterReport, masterParams,
con);

y en cuanto a la clase desconozco ese archivo tal vez sea porque uso netbeans en vez de eclipse

jdrubio 29/04/2005 07:21

reporte hecho en ireport con codigo de barras programa pa
 
Hola a todos bueno , tengo el siguiente problema, sigo todos los pasos antes mencionados y genero la definicion del reporte
p.jrxml, pero cuando dentro de mi programa particulaar hago la llamada al compilador del jasper report se me produce una excepcion

net.sf.jasperreports.engine.JasperReport jasperReport=null;
net.sf.jasperreports.engine.design.JasperDesign jasperDesign=null;

jasperDesign=JasperManager.loadXmlDesign("C:\\p.jr xml");
*jasperReport = JasperCompileManager.compileReport(jasperDesign);

(en la linea con el * se produce la excepcion)

entonces decidi tratar de solucionarlo para ello baje el codigo fuente del compilador del jasper report y lo ejecute paso a paso para observar que sucedia, internamente se produce el siguiente error

1. it.businesslogic.ireport.barcode.BcImage cannot be resolved or is not a type
value =

(java.awt.Image)(it.businesslogic.ireport.barcode. BcImage.getBarcodeImage(5,((java.lang.Integer)fiel d_permiso.getValue()),false,false)

);
<-------------------------------------->
2. it.businesslogic.ireport.barcode.BcImage cannot be resolved or is not a type
value =

(java.awt.Image)(it.businesslogic.ireport.barcode. BcImage.getBarcodeImage(5,((java.lang.Integer)fiel d_permiso.getOldValue()),false,fal

se));
<-------------------------------------->
3. it.businesslogic.ireport.barcode.BcImage cannot be resolved or is not a type
value =

(java.awt.Image)(it.businesslogic.ireport.barcode. BcImage.getBarcodeImage(5,((java.lang.Integer)fiel d_permiso.getValue()),false,false)

);
<-------------------------------------->
3 errors

bueno esto es consecuencia de que incorpore un codigo de barras dentro de la definicion del reporte y como se puede observar esto hace referencia al ireport (it.bussiness...), el cual ser es importado desde el jasper report, pero mi pregunta es como hace entonces el compilador del jasper report q trae el ireport para funcionar con el codigo de barras porq la definicion no produce exepciones con ireport. Bueno la version del jasper report que trae ireport es mas vieja es la 0.64 y la que yo corri en frio es la 0.66 pero igual modifique el class path para seleccionar el 0.64 y nada . Entonces pienso que debe ser alguna opcion que debo configurar en el ireport para hacerlo compatible con todos los compiladores del jasper report.

bueno muchachos el problema es correr un reporte hecho en ireport con codigo de barras en un programa particular. hagan la prueba y me dicen y gracias de ante mano a quien pueda darme alguna solucion

gracias de antemano !!!

jdrubio 29/04/2005 08:00

Ya encontre la solucion para el codigo de barras
 
Bueno muchachos el problema ya lo solucione:

lo que hay que hacer es un .jar del paquete de ireport "it" e incluirlo en el class path del java para que cuando se haga la llamada al compilador del jasper report consiga la clase it.businesslogic.ireport.barcode.BcImage que es la del codigo de barras, bueno cualquier duda me pueden preguntar saludos !!!

ValerioJ 03/05/2005 06:14

Oye hermano quisiera que me enseñes si es posible a cerca de códigos de barra estoy ignorante en este tema me podrías dar un enlace para aprender "Códigos de Barra" en java? Gracias.. de antemano

jdrubio 13/05/2005 12:19

Bueno no es gran cosa lo del codigo de barras
 
Mira pana, lo unico q tienes q hacer es generar un reporte el cual incluya un codigo de barras, si quieres hacer la definicion con ireport lo unico q tienes q hacer es arrastrarlo y ponerlo en el reporte, lo q se hace un poco dificil de descubrir es como compilarlo cuando quieres usar la definicion (".jrxml") desde fuera del ireport es decir desde un programa particular hecho en java, bueno no es complicado lo unico q tienes q hacer es configurar el class path para q reconozca, el paquete de clases del ireport es decir el "it" especificamente la clase "it.businesslogic.ireport.barcode.BcImage". Disculpa en este momento no conozco ningun web site pero apenas sepa te escribo

Saludos a todos

KirsonX 13/05/2005 13:42

Para laraos
 
En el lib de ireports existe un jar que se llama jdt-compiler este debes incluirlo en tu classpath

jdrubio 14/05/2005 12:06

Problema para pasar el query
 
Hola a todos tengo una pregunta
como hago para pasarle a la definicion del reporte desde un programa en java el query q quiero q sea visualizado, estuve probando con las lineas de codigo

Map parameters = new HashMap();
parameters.put("queryString", new String("select * from nomina_historico where fk_id_nomina="+fk_id_nomina));

tambien probe con la linea

parameters.put("sql_query", new String("select * from nomina_historico where fk_id_nomina="+fk_id_nomina));

pero no me funciona, si alguien sabe como hacerlo por favor indiqueme cuales son las lineas de codigo a usar

Gracias de antemano :adios:

KirsonX 16/05/2005 10:27

Ayuda con reportes Jaspert + i Reports
 
Hola a todos voy a ser un poco más específico con mis dudas, pues sospecho que tengo uno de los escenarios más complicados de resolver dentro del foro y he de requerir de toda la ayuda posible para solventarlo.
Mi escenario es el siguiente:
Estoy desarrollando un esquema de generacion de reportes para una institucion publica. Se busca que sea lo mas generico y flexible posible .
Tengo varios retos importantes
1) Mis reportes van a ser generados por usuarios que desconocen por completo el esquema de la BDD, asi que el reporte no usa un objeto conexion sino un JRDatasource. Este datasource debia ser genérico pues no es la idea definir 1 objeto JRDatasource para todos los casos. Hice mi propia implementación basándome en los ejemplos de jasper y aparentemente funcionaria mi esquema.
2) Almacenar la plantilla del reporte en una BDD Oracle, recuperarlo cuando se requiera y sin descargarlo a disco ejecutar el reporte. Esta parte ya la resolvi gracias al uso de objetos BLOB y al metodo JasperReport report = (JasperReport)JRLoader.loadObject(barchivo.getBina ryStream()); que me permite cargar el reporte desde un inputstream.
3) Por la estructura de los documentos me veo obligado a usar subreportes. Ya logre un ejemplo con subreportes. Sin embargo desde mi aplicacion DEBO seleccionar varios datos de entradas y con ellos mandar a generar el reporte. Si tuviera q enviarlos de 1 en 1 NO tendria problemas, pero desean q si escoge 1 o varios datos, el resultado se muestre en un único PDF (en el browser) donde por cada nuevo dato se reinicie la numeración de las páginas.
Para esto yo envio al reporte maestro su propio datasource y desde el reporte maestro le paso otro datasource al subreporte(x parametros). los dos datasource solo tienen un dato en comun que puede ser un dato de identificacion de persona, pero el conjunto de informacion que presentan es completamente distinto. Debo resolver el tema de la numeracion de las paginas y lograr q para entradas múltiples se presente la información del SUBREPORTE para todos los casos. Actualmente solo el primer dato se carga con información en el subreporte y a los subsiguientes no les llega la información.
Espero haber sido claro y si tienen ayudas o sugerencias que me puedan proporcionar lo agradecere mucho
Saludos
KirsonX

ovejota 24/05/2005 13:33

hola. tengo un problema con mi reporte y espero puedan ayudarme: tengo creado un reporte con ireport, desde eclipse trato de ejecutalro mediante un codigo pero me salta el siguiente error:

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at net.sf.jasperreports.engine.fill.JRBaseFiller.<cli nit>(JRBaseFiller.java:128)
at net.sf.jasperreports.engine.fill.JRFiller.fillRepo rt(JRFiller.java:111)
at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:291)
at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:207)
at Reporte.reportero.LlenarReporte(reportero.java:138 )
at Reporte.reportero.<init>(reportero.java:98)
at Reporte.reportero.main(reportero.java:151)
Exception in thread "main"

por lo que veo el error esta en la siguiente línea:

JasperPrint reporte = JasperFillManager.fillReport("C:\\segundoreporte.j asper", parameters, getConnection());


Si alguien pudiera darme un mano le estaría muy agradecido ya que todabía no he podido hacerlo andar.

ovejota 24/05/2005 13:36

olvidé mencionar que copié el código de Valerioj, pero me salta este error

ValerioJ 25/05/2005 08:35

Oe revisa la librería que estas utilizando de jasreport porque la que o utilicé es la 0.6.5, por otra parte te recomiendo que revises la conexión, si el sql está correcto, luego si la librería de ".jar" jasper está siendo ubicada en el classpath de tu eclise, y si los parámetros están correctos

ovejota 26/05/2005 13:57

jdrubio: con respecto al codigo de barras, tengo el mismo problemas que vos tenías, agregué la siguiente lína a la variable CLASSPATH: C:\ProgramaSiges\iReport-0.4.1\classes\it\businesslogic\ireport\barcode\BcI mage.class


pero sigue el mismo error. Si me pudieras dar una ayuda te lo agradesco de antemano

jdrubio 05/06/2005 10:26

Respuesta para oveja de jrubio
 
Pues Ovejota de verdad es dificil q te pueda ayudar, creo q el problema q tienes sigue siendo el mismo, es decir q el compilador no puede encontrar esa clase, yo creo q lo q debes hacer es:

1-verifica q tu ide reconoce la clase, es decir coloca en tus lineas de codigo
it.bussnesslogic... y trata de listar la clase BcImage.class, sino te aparece es porq realmente la clase no se ve desde el ide y por ende del compilador no la reconoce. mira asi es el header de mi clase generadora del reporte:

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.view.JasperDesignViewer;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.*;
import it.businesslogic.ireport.*; <--- revisa si esto no te da error

2- Hay algo mas q yo hize, cree un .jar del del ireport y ese fue el q liste desde el classpath, ademas no coloque esa ruta tan larga solo coloque hasta el "it", quizas esto no tenga nada q ver pero de todas formas revisa.

3-si vas a correr un programa hecho por ti en una computadora q tenga solo la maquina virtual instalada, recuerda incluir en la carpeta lib/ext los .jar del jasperreport y el del ireport q creaste previamente.

4-Tambien trata de recompilar "rebuild" todo el proyecto

bueno me despido espero q puedas resolver tu problema...
cualquier cosa avisanos si lograste solucionarlo, para aprender gracias.

llakare 06/06/2005 07:31

Hola!!!
Estoy desarrollando un proyecto con struts + hibernate(para mapeo a la BD relacional).
Mi pregunta es: vi que para mostrar un reporte en pdf puedo usar el método

JasperRunManager.runReportToPdf(....)
el último parámetro de este método es la conexión a la BD, creada a través de la cadena de conexión, el DriverManager, etc...con eso no hay problema , lo probé y funciona bien. El tema es que usando hibernate, la conexión es transparente porque se maneja todo eso a través de archivos xml...
Si alguien tiene algún ejemplo que me pueda ayudar, estaré agradecida.
Saludos...

antony_fire 24/06/2005 12:39

Hola amigos...

Tengo un problema...
yo ya se hacer reportes desde la base de datos con el jasper y los conecto con java, ahora bien, el problema que tengo es que quiero hacer reporte que no nesecitan de la base de datos, en el ireport se pueden hacer y yo se como pero el problema que tengo es que no se como conectarlos con java...

por favor si alguien sabe digame como, lo agradesco de antemano

DR POMPEII 27/06/2005 17:00

Porque no te creas una pagina libre y pones ahi bonito y editado en un pDF todo tu manual? con fotos y todo eso, lo mas detalloso posble (conf, paths etc) para ke no esten preguntando cosas mezcladas

Saludos

franrc 20/07/2005 02:55

Jasperreports
 
Cita:

Iniciado por antony_fire
Hola amigos...

Tengo un problema...
yo ya se hacer reportes desde la base de datos con el jasper y los conecto con java, ahora bien, el problema que tengo es que quiero hacer reporte que no nesecitan de la base de datos, en el ireport se pueden hacer y yo se como pero el problema que tengo es que no se como conectarlos con java...

por favor si alguien sabe digame como, lo agradesco de antemano

Hola Anthony_fire. Yo tengo la misma, duda, y hasta ahora todo lo q he intentado no ha servido de nada. Me gustaria saber si has encontrado la solucion al problema y q me dijeras como lo has hecho.

Mil gracias

Un saludo

---Fran---

jdrubio 16/08/2005 06:11

Hola a todos me gustaria saber si alguno de uds por casualidad sabe como llamar desde java un reporte q contiene uno o mas subreportes, porque las lineas de codigo que empleo para generar un reporte simple para este tipo de reportes NO FUNCIONA. mi codigo es asi :

public static void generar_reporte_con_subreportes(long b)
{
JRResultSetDataSource jrRS=null;
net.sf.jasperreports.engine.JasperReport jasperReport=null;
net.sf.jasperreports.engine.design.JasperDesign jasperDesign=null;
JasperPrint print=null;

bd.accesobasedatos con=new bd.accesobasedatos();


String query="select * from x where a="+b;

Statement ins=con.conectar_basedatos();
try {
ResultSet rs = ins.executeQuery(query);
jrRS = new JRResultSetDataSource(rs);
}
catch (SQLException ex) {}

Map parameters = new HashMap();
try {
// se inicia la carga del reporte cabecera.jrxml y luego se compila todo
// para generar el jasper vale la pena destacar que este archivo contiene
// los subreportes definidos dentro de el

jasperDesign=JasperManager.loadXmlDesign("reportes//cabecera.jrxml");
jasperReport = JasperCompileManager.compileReport(jasperDesign);

//es a nivel de esta linea que se me produce la excepcion
//
print = JasperFillManager.fillReport(jasperReport, parameters, jrRS);


JasperViewer jasperViewer = null;

jasperViewer =new net.sf.jasperreports.view.JasperViewer(print, false);
jasperViewer.show();


}
catch (JRException ex1) {
System.out.println("Problemas al generar el reporte");
}
}

Gracias de ante mano saludos !!! :adios:

Ani Alamo 16/08/2005 08:28

Porqué no usar FOP de Apache?
O de pronto Style Reports de INETSOFT?

rente 25/10/2006 10:39

ayuda con reportes
 
Hola todos ya se como crear los reportes de echo e creado vario y los ejecuto desde clases en java el problema es que cunado quiero crear el jar de mi aplicación no me los llama ni siquiera me ejecuta la clase donde los llamo lo de mas si lo hace bien e creado los jar desde eclipse desde jbuilder x y nada funciona me pueden dar un consejo o una ayuda se los agradezco

angel_avril 17/01/2007 12:41

Re: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
HELP PLEASE...si alguien ve este mensaje necesito ayuda urgente con el iReport.. mi problema es el siguiente, soy novata en esto del iReport, cree un reporte sencillo para probar, hize el siguiente codigo

package objetos;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import utilidades.ConexionParam;
import datos.AccesoDatos;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
import objetos.Alumnos;

public class cExport_thread extends Thread{
private Alumnos alu;
private AccesoDatos con;

public cExport_thread() {

}

public void run(){
con = new AccesoDatos("root","hinata","com.mysql.jdbc.Driver ","localhost","siau");
con.iniciar();
Connection conn=con.getConnection();

try{
Map parameters = new HashMap();
parameters.put("P_alu_carrera","01");
JasperReport report = JasperCompileManager.compileReport("C:\\SIAU\\Repo rtes\\imagenes\\reporte1.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(report,parameters,con n);
//JasperViewer jviewer = new JasperViewer(jasperPrint,false);
JasperViewer.viewReport(jasperPrint);
} catch (JRException j){
System.out.println("Mensaje de Error:"+j.getMessage());
}
}

public static void main(String[] args) {
// TODO code application logic here
cExport_thread ob = new cExport_thread();
ob.start();
}

}

Me compila bien, el problema es que el reporte tarda mil años en cargar y cuando por fin termina de cargar, solo funciona unos momentos y despues se bloquea y ya no puedo pasar a otras paginas del reporte ni hacer nada...PLEASEEEE ALGUIEN ayudeme...para hacer todo esto ocupe el NetBeans, el iReport 1.3 y el jasperReport 1.3

Icarorlz 06/03/2007 16:24

Re: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
saludos!!

alguien sabe como uso ireport, y l oconecto con una fuente de datos DB4O???

colmejhor 26/05/2007 08:25

Re: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
Hola muchachos, se me presento la necesidad de generar reportes con formato pdf y xls (Excel de OpenOffice).

actualmente e generado reportes desde una aplicación en java haciendo uso los ficheros .jasper generados por el iReport, generando la salida con el JasperViwer (opción por defecto).

para generar una salida con formato PDF y xls deduje que tenia que compilar desde el iReport el reporte con cada uno de estos formatos, configurando esta opción desde barrar de erramientas->Build->formato de reporte, con la finalidad de que se genere el fichero con cada una de estas extensiones, pero luego cuando los invoco desde la aplicación no invoca a los ficheros con dicho formato, aqui esta el codigo que utilizo con las exepciones que arroja:

Definición de variables


//Declaracion de variables
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
JasperPrint reporte = null;

//Declaracion de la ubicacion de recursos
private String viwer = "/home/colmejhor/iReport-1.3.3/bin/ReporteUno.jasper";
private String pdf = "/home/colmejhor/iReport-1.3.3/bin/ReporteUno.pdf";
private String doc = "/home/colmejhor/iReport-1.3.3/bin/ReporteUno.xls";

Cargando El PDF


try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/universidad", "jhorland", "050984infodios");

//Parametro a enviar al reporte
Map parametro = new HashMap();
parametro.put("P_cedula", "1");

//Variable JasperPrint
reporte = JasperFillManager.fillReport(viwer, parametro ,conn);

JasperExportManager.exportReportToPdfFile(reporte, pdf);
}catch(JRException e){

}
catch(SQLException e){

}
catch(ClassNotFoundException e){

}


--------------------------------------------------
Exception in thread "AWT-EventQueue-0" net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : flatline.ttf
pdfEncoding : Cp1252
isPdfEmbedded : false
at net.sf.jasperreports.engine.export.JRPdfExporter.g etFont(JRPdfExporter.java:1488)
at net.sf.jasperreports.engine.export.JRPdfExporter.g etChunk(JRPdfExporter.java:1391)
at net.sf.jasperreports.engine.export.JRPdfExporter.g etPhrase(JRPdfExporter.java:1374)
at net.sf.jasperreports.engine.export.JRPdfExporter.e xportText(JRPdfExporter.java:1731)
at net.sf.jasperreports.engine.export.JRPdfExporter.e xportElements(JRPdfExporter.java:613)
at net.sf.jasperreports.engine.export.JRPdfExporter.e xportPage(JRPdfExporter.java:577)
at net.sf.jasperreports.engine.export.JRPdfExporter.e xportReportToStream(JRPdfExporter.java:520)
at net.sf.jasperreports.engine.export.JRPdfExporter.e xportReport(JRPdfExporter.java:306)
at net.sf.jasperreports.engine.JasperExportManager.ex portReportToPdfFile(JasperExportManager.java:126)
at com.jhor.reporte.Ventana.pdfBotonActionPerformed(V entana.java:201)
at com.jhor.reporte.Ventana.access$100(Ventana.java:3 0)
at com.jhor.reporte.Ventana$2.actionPerformed(Ventana .java:80)
at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.jav a:6038)
at javax.swing.JComponent.processMouseEvent(JComponen t.java:3260)
at java.awt.Component.processEvent(Component.java:580 3)
at java.awt.Container.processEvent(Container.java:205 8)
at java.awt.Component.dispatchEventImpl(Component.jav a:4410)
at java.awt.Container.dispatchEventImpl(Container.jav a:2116)
at java.awt.Component.dispatchEvent(Component.java:42 40)
at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:3916)
at java.awt.Container.dispatchEventImpl(Container.jav a:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429 )
at java.awt.Component.dispatchEvent(Component.java:42 40)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 599)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:121)

---------------------------------------


Cargando el XLS


try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/universidad", "jhorland", "050984infodios");

//Parametro a enviar al reporte
Map parametro = new HashMap();
parametro.put("P_cedula", "1");

//Variable JasperPrint
reporte = JasperFillManager.fillReport(viwer, parametro ,conn);

JRXlsExporter esportador = new JRXlsExporter();
esportador.setParameter(JRExporterParameter.JASPER _PRINT, reporte);
esportador.setParameter(JRExporterParameter.OUTPUT _FILE_NAME, doc);
esportador.setParameter(JRXlsExporterParameter.IS_ ONE_PAGE_PER_SHEET, Boolean.TRUE);
esportador.exportReport();

}catch(JRException e){

}
catch(SQLException e){

}
catch(ClassNotFoundException e){

}

---------------------------------------

No arroja excepciones pero no muestra el reporte este formato


les agradezco toda la ayuda posible. :arriba:

pancho_k 23/07/2007 12:43

Re: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
Antes que nada les mando un saludo, espero les esten saliendo las cosas bien, yo tengo un problema y ojala me puedan ayudar.

Resulta que tengo instalado Fedora 7, tomcat y J2sdk1.4.2_14, y necesito crear reportes con jasperreports, de entrada dire que soy novato en el tema, y en muchos foros hablan de iReport y lo descargue (ver. 2.0.0), pero no pude instalar iReport, me marco un error de segmentacion en el path, pero tambien lei que basta con copiar algunas librerias que el mismo ireport incluye al path de mi j2sdk, asi que decidi hacer un reporte sin utilizar iReport y descargue algunos ejemplos de la pagina de jasperreports y encontre uno muy sencillo, el cual se basa en 3 partes, el primer codigo compila y es el siguiente.....


/*package net.ensode.jasperbook;*/

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;

public class FirstReportCompile
{
public static void main(String[] args)
{
try
{
System.out.println("Compiling report...");
JasperCompileManager.compileReportToFile("reports/FirstReport.jrxml");
System.out.println("Done!");
}
catch (JRException e)
{
e.printStackTrace();
}
}
}

lo compile y todo bien, corrio bien y todo, se creo el archivo.jasper
el problema es el siguiente codigo, que simplemente llena el reporte............

/*package net.ensode.jasperbook;*/

import java.util.HashMap;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;

public class FirstReportFill
{
public static void main(String[] args)
{
try
{
System.out.println("Filling report...");
JasperFillManager.fillReportToFile("reports/FirstReport.jasper",
new HashMap(), new JREmptyDataSource());
System.out.println("Done!");
}
catch (JRException e)
{
e.printStackTrace();
}
}
}

se compila bien, pero cuando lo ejecuto marca un error que dice que no se especifico un protocolo....

ojala me den respuesta, se los agradesco de antemano, reitero que no estoy utilizando eclipse ni nada de editores, los programas los edito desde una terminal en linux utilizando "vi" y francamente no se si este haciendop algo mal o sera alguna version incompatible, muchas gracias.......

pancho_k 25/07/2007 11:35

Re: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
ok, bueno como no me quieren contestar o tal vez no sepan, aqui voy, creo que ya descubri cual es el problema......

el error que arrojaba es el siguiente...

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified


(.:6504): Gtk-WARNING **: cannot open display:

Y segun lo que investigue, mostraba eso por que estaba usando un usuario normal para ejecutar los programas, asi que decidi cambiarlo todo para que root los ejecutara y dejo de marcar ese error, el problema esque ahora no pede llenar el reporte porque al parecer jasperreports utiliza las librerias awk de java para llenar los reportes sencillos y sucede que no puedo ejecutar programas con graficos, asi que si alguien tiene una idea de como resolverlo, lo agradeceria mucho, ya se que nadie lo hara pero gracias de todas maneras...

pancho_k 03/08/2007 10:03

Re: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
Que tal foro de nadie, espero que la esten pasando bien, gracias por no responder, me he vuelto muy metiche pa resolver mis tontos problemas de programacion, pero ahora me enfrento a un error que no me explico, afortunadamente y gracias a toooda su ayuda (nula) e podido generar unos reportes pero solo con texto estatico y cuando intento pasar los paramentros nomas no se deja, pa no hacerselas cardiaca e aqui lo que me muestra cuando ejecuto el programa en java.....

Exception in thread "main" java.lang.IllegalArgumentException: Start position must be < limit.
at java.awt.font.TextMeasurer.getLayout(libgcj.so.8rh )
at java.awt.font.LineBreakMeasurer.nextLayout(libgcj. so.8rh)
at java.awt.font.LineBreakMeasurer.nextLayout(libgcj. so.8rh)
at net.sf.jasperreports.engine.fill.TextMeasurer.rend erParagraph(TextMeasurer.java:275)
at net.sf.jasperreports.engine.fill.TextMeasurer.meas ure(TextMeasurer.java:230)
at net.sf.jasperreports.engine.fill.JRFillTextElement .chopTextElement(JRFillTextElement.java:528)
at net.sf.jasperreports.engine.fill.JRFillTextField.p repare(JRFillTextField.java:543)
at net.sf.jasperreports.engine.fill.JRFillElementCont ainer.prepareElements(JRFillElementContainer.java: 343)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(J RFillBand.java:323)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(J RFillBand.java:282)
at net.sf.jasperreports.engine.fill.JRVerticalFiller. fillTitle(JRVerticalFiller.java:290)
at net.sf.jasperreports.engine.fill.JRVerticalFiller. fillReportStart(JRVerticalFiller.java:224)
at net.sf.jasperreports.engine.fill.JRVerticalFiller. fillReport(JRVerticalFiller.java:113)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:763)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:688)
at net.sf.jasperreports.engine.fill.JRFiller.fillRepo rt(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:601)
at tres.main(tres.java:29)

este es el codigo de java que utilizo.....


import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.JasperCompileManager;

public class tres {

public static void main(String[] args) {

JasperReport jasperReport;
JasperPrint jasperPrint;

try{
System.out.println("Iniciando...");
jasperReport = JasperCompileManager.compileReport("tres.jrxml");
System.out.println("Se ha compilado el reporte...");

Map param = new HashMap();
param.put("TITULO", "PELEANDO");


System.out.println("llenando el reporte...");
jasperPrint = JasperFillManager.fillReport(jasperReport, param, new JREmptyDataSource());
System.out.println("Reporte lleno.");

System.out.println("Exportando a PDF..............");
JasperExportManager.exportReportToPdfFile(jasperPr int,"dos.pdf");
System.out.println("Se ha creado el archivo en PDF.......Fin del prosedimiento.");


}catch(JRException e){
e.printStackTrace();
}


}

}

y por si fuera poco, este es el archivo XML.....

<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"

"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport name="tres">
<parameter name="TITULO" class="java.lang.String"/>
<title>
<band height="200">

<textField>
<reportElement x="0" y="40" width="200" height="20"/>
<textFieldExpression><![CDATA[ $P{TITULO} ]]> </textFieldExpression>
</textField>
</band>
</title>

<detail>
<band height="200">
<staticText>
<reportElement x="0" y="0" width="200" height="20"/>
<text><![CDATA[HOLA SOY PANCHO ]]> </text>
</staticText>
<staticText>
<reportElement x="0" y="20" width="200" height="20"/>
<text><![CDATA[PRIMER REPORTE ]]> </text>

</staticText>
</band>
</detail>
</jasperReport>



como podran observar, los codigos son sencillos y no presentan anomalias o cosas fuera de lo comun, por lo que se me hace muy extraño que muestre el error previamente expuesto, ojala puedan ayudarme, muchisimas gracias, hasta pronto...


Aaaaa, por cierto, creo que tambien es importante que mencione que NO utilizo iReports, esto debido a un error que muestra cuando trato de instalarlo, estoy utilizando fedora 7, y no tengo ningun editor grafico de ningun tipo, todo lo hago desde linea de comandos en una terminal...

pancho_k 09/08/2007 11:29

Re: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
Saludos de nuevo Foro de nadie,otra vez con su valiosisima ayuda se han dicipado mis dudas, ahora tengo otra bronca, no se ni por que me molesto si nadie contesta pero bueno, ahora trato de implementarlo todo en un servlet y estoy trabajando con tomcat 5.0.19 (este es mi servidor web en fedora 7) y el cual hace referencia a una carpeta (esta configurado para que busque proyectos de trabajo en la carpeta) llamada “curso” (curso se encuentra en /root/), dentro de curso se crearon las carpetas “IMG” y “WEB-INF” y dentro de “WEB-INF” estan las carpetas “classes” y “lib”

El archivo izquierda.jsp se encuentra ubicado en la carpeta “curso” y este se encarga de ejecutar el servlet “jasper.java” que se encuentra en la carpeta “classes”, dentro del codigo de jasper.java, se tiene que leer un archivo externo (tres.jrxml) el cual esta ubicado en la carpeta “curso” y en la carpeta “classes” (pa mas seguro).

Pero cuando se ejecuta el servlet (jasper.java), muestra un error “Exception can’t find the file or directory /curso/tres,jrxml”

Haciendo los respectivos cambios, jasper.java funciona perfectamente desde linea de comandos y basta con que ponga el archivo tres,jrxml en el mismo directorio de jasper.java, oviamente, cuando se hacen las modificaciones a jasper.java para que funcione desde linea de comandos, no se utiliza el archivo izquierda.jsp.

Mis dudas son:

• Tengo que pasar la ruta completa del archivo tres.jrxml? (cosa que ya intente y no funciono)

• Existe alguna regla de seguridad que deba cambiar al tomcat para que jasper.java pueda llamar al archivo externo tres.jrxml?

• Existe alguna rregla de seguridad del sistema que deba cambiar?

• Cual es?

• Para llamar a tres.jrxml desde el servlet utilizo request.getContextPath()+"/tres.jrxml";

• Debo cambiarlo?
• Que debo poner?
• Que me sugieren?

• La ubicación de mis archivos es correcta?


De antemano muchas gracias, este es el codigo de los archivos que utilizo.


=======izquierda.jsp============================== ==========

<html>
<head>
<%@page language="java" import="java.io.*"%>
</head>
<BODY>

<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp; BUSCADOR</h3>

<form action="<%=request.getContextPath()%>/servlet/jasper" method="post">
<table>
<tr>
<td>Localidad:</td>
<td>
<select name="localidad">
<option value="Zacatepec">Zacatepec.
<option value="Jojutla">Jojutla.
<option value="Cuernavaca">Cuernavaca.
<option value="Yautepec">Yautepec.
</select>
</td>
</tr>

<tr>
<td>Especialidad:</td>
<td>
<select name="Esp">
<option value="Informatica">Informatica.
<option value="Sistemas">Sistemas.
<option value="Industrial">Industrial.
<option value="Civil">Civil.
<option value="Bioquimica">Bioquimica.
</select>
</td>
</tr>

<tr>
<td>Promedio:</td>
<td>
<input type="text" name="promedio" id="prom" size="11">
</td>
</tr>

<tr>
<td colspan="2" align="center"><input type="radio" name="sexo" value="masculino">Masculino</td>
</tr>

<tr>
<td colspan="2" align="center"><input type="radio" name="sexo" value="femenino">Femenino</td>
</tr>

<tr>
<td colspan="2" align="center"><input type="radio" name="sexo" value="ambos" checked>Ambos</td>
</tr>


<tr>
<td colspan="2" align="center"><input type="submit" name="guardar" value="BUSCAR"></td>
</tr>


</table>
</form>
</BODY>

</html>
=====fin izquierda.jsp===================================== ========


=====jasper.java================================== ==============
import javax.servlet.http.*;
import java.io.*;

//import java.sql.Connection;
//import java.sql.DriverManager;

import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperCompileManager;

import javax.servlet.ServletException;

public class jasper extends HttpServlet {

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {

response.setContentType("text/html");
PrintWriter web = response.getWriter();

try{

String loc=request.getParameter("localidad");
String esp=request.getParameter("Esp");
String prom=request.getParameter("promedio");
String gen=request.getParameter("sexo");

web.println(loc);
web.println(esp);
web.println(prom);
web.println(gen);


Map parameter = new HashMap();


web.println("Iniciando...");
/*Se manda traer el archivo tres.jrxml y se crea el archivo “tres.jasper” */
JasperCompileManager.compileReportToFile(request.g etContextPath()+"/tres.jrxml");
web.println("Se ha compilado el reporte...");


web.println("llenando el reporte..."+parameter);
/*Se manda a traer el archivo tres.jasper y se crea tres.jrprint*/
JasperFillManager.fillReportToFile(request.getCont extPath()+"/tres.jasper", parameter,new JREmptyDataSource());
web.println("Reporte lleno.");

web.println("Exportando .............");
/*Se manda a traer el erchivo tres.jrprint y se exporta a HTML*/ JasperExportManager.exportReportToHtmlFile(request .getContextPath()+"/tres.jrprint",request.getContextPath()+"derecha.ht ml");

//web.println("Se ha creado el archivo en HTML.......Fin del prosedimiento.");



}catch(Exception e){
web.println("Ocurrio un error en main:"+e);

}


}


}
=====fin jasper.java============================


=====tres.jrxml================================

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"

"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport name="tres">

<style name="Arial_Bold" isDefault="false" fontName="Arial" fontSize="12" isBold="true" />
<style name="centeredText" hAlign="Left" vAlign="Middle"/>
<style name="PanchoStyle" hAlign="Center" vAlign="Middle"/>
<style name="boldCentered" style="centeredText" isBold="true"/>
<style name="backgroundStyle" style="boldCentered" forecolor="lightGray" fontSize="90"/>

<parameter name="TITULO" class="java.lang.String" isForPrompting="false"/>
<!--
<background>
<band height="782">
<staticText>
<reportElement x="-100" y="-50" width="800" height="782" style="backgroundStyle" mode="Transparent"/>
<textElement rotation="None"/>
<text>
<![CDATA[PANCHO ]]>
</text>
</staticText>
</band>
</background>

-->
<title>
<band height="24" isSplitAllowed="true">
<textField>
<reportElement x="0" y="4" width="550" height="20" mode="Opaque" forecolor="#ffffff" backcolor="#333333" style="Arial_Bold" positionType="FixRelativeToTop" />
<textElement textAlignment="Center" />
<textFieldExpression class="java.lang.String">
$P{TITULO}
</textFieldExpression>
</textField>

<!-- <textField>
<reportElement x="0" y="50" width="200" height="20"/>
<textFieldExpression class="java.util.Date"><![CDATA[$P{FECHA} ]]> </textFieldExpression>
</textField>
-->
</band>
</title>

<detail>
<band height="600">
<staticText>
<reportElement x="0" y="100" width="555" height="20" mode="Transparent" style="PanchoStyle" />
<text><![CDATA[HOLA MUNDO ]]> </text>
</staticText>
<staticText>
<reportElement x="0" y="120" width="555" height="20" mode="Transparent" style="PanchoStyle" />
<text><![CDATA[TEXTO ESTATICO ]]> </text>

</staticText>
</band>
</detail>
</jasperReport>

============================================fin tres.jrxml=======================================

gabo461 10/05/2011 13:47

Respuesta: Ya encontre la solucion para el codigo de barras
 
Cita:

Iniciado por jdrubio (Mensaje 1073072)
Bueno muchachos el problema ya lo solucione:

lo que hay que hacer es un .jar del paquete de ireport "it" e incluirlo en el class path del java para que cuando se haga la llamada al compilador del jasper report consiga la clase it.businesslogic.ireport.barcode.BcImage que es la del codigo de barras, bueno cualquier duda me pueden preguntar saludos !!!

---------------------------------
Buenas man, quisiera saber como realizar un codigo de barras en ireport con la codificación EAN-128 y el componente barcode4j, al dato a representar es el siguiente

(415)7709998000100(8020)0253588137(3900)00024310(9 6)2011212

Fhernd 12/01/2012 13:43

Respuesta: ¡Pasos para Diseñar y Mostrar un reporte en Java!
 
gabo461, ¿ya pudiste resolver el problema? Estoy en las mismas... :|


La zona horaria es GMT -6. Ahora son las 23:28.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.