El día de hoy quiero continuar con el tutorial de JasperReport, he explicado una introducción a la estructura principal del reporte, el paso de parámetros al reporte y como llenar un reporte desde una base de datos incluyendo el Query dentro del jrxml, en esta ocasión explicaré como llenar un reporte por medio de [...]
El día de hoy quiero continuar con el tutorial de JasperReport, he explicado una introducción a la estructura principal del reporte, el paso de parámetros al reporte y como llenar un reporte desde una base de datos incluyendo el Query dentro del jrxml, en esta ocasión explicaré como llenar un reporte por medio de una colección de objetos VO o DTO, como mejor los conozcas.
Objetivos.
- Cómo poner acentos y eñes dentro del reporte jrxml.
- Poner una imagen en formato gif.
- Generar la fecha actual del sistema y desplegarla en el reporte con un formato legible.
- Pasarle la información al reporte por medio de una colección de beans.
- Cómo poner títulos a las columnas de la información desplegada.
- Realizar un reporte como este.
Una vez definidos los objetivos se puede apreciar el alcance de este tutorial y así decidir si al lector le conviene continuar con la lectura de este tutorial.
Cómo poner acentos y eñes.
Lo primero es definir la cabecera del archivo jrxml, y dentro de este especificarle el encode a utilizar dentro del documento, generalmente el encode por de facto es UTF8, pero este encode no soporta los caracteres extendidos, que es donde se encuentran los acentuados y la eñe, es por eso que si no ponemos el encode correcto, al compilar el reporte obtendremos un error, para evitar esto, es necesario indicar que el encode a utilizar sea ISO-8859-1, el cual contiene los caracteres necesarios para el español.
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
Paso de parámetros e información.
Lo siguiente es pasarle algunos parámetros para desplegar el titulo, y el subtitulo, además de declararse las Fields de la información a desplegar en el reporte.
pageWidth="595"
pageHeight="842"
leftMargin="20"
rightMargin="20"
topMargin="20"
bottomMargin="20">
A diferencia del tutorial anterior, únicamente se le ha suprimido el Query que consultaba la base de datos, esto es por que ahora la información se le pasará directamente desde Java por medio de una colección de DTOs (Data Transfer Object).
Más adelante explicaré mas a detalle el paso de información, por ahora basta con declarar la información a desplegar en la parte del detail.
Poner una imagen en formato gif.
En esta sección se definirá el background y la cabecera del documento, en el tutorial anterior explique cómo hacerlo, el día de hoy será exactamente igual con la diferencia de que en lugar de pasarle una imagen JPG se le pasará una imagen GIF, además de que las medidas y posiciones son diferentes, todo esto escrito en código es:
y="0"
width="100"
height="67"/>
y="40"
width="530"
height="30"/>
y="69"
width="530"
height="0"
key="line"/>
y="70"
width="250"
height="20"
key="textField"/>
y="70"
width="270"
height="20"
key="textField"/>
Hasta aquí no hay nada nuevo, excepto que en el campo donde se despliega la fecha, en lugar de sacarla de la base de datos como en el tutorial anterior, ahora se generará directamente en el reporte, esto es muy sencillo de hacer, únicamente hay que crear una instancia de la clase Date dentro de la expresión del campo:
new java.util.Date()
El formato es exactamente igual al tutorial anterior.
Poner títulos a las columnas.
Anteriormente no se le había agregado cabeceras a las columnas de la información, pero si había mencionado en la introducción que esto es posible, a continuación se muestra cómo por medio de la sección <columnHeader> se puede realizar.
Si te das cuenta, esta sección no tiene nada especial que no se haya cubierto en los tutoriales anteriores, simplemente son textos estáticos distribuidos en forma linear, es aquí donde se ha necesitado poner acentos, los cuales son correctamente soportados gracias a que se ha especificado el encoding correcto al inicio del documento.
Desplegar la información principal.
Esta es la sección principal del reporte, las columnas donde se muestra la información. En el tutorial anterior explicaba que esta sección es iterada sobre el data source provisto, anteriormente la consulta SQL generaba una colección de información regresada por la base de datos, en esta ocasión la colección se le pasará desde Java. Al diseñar el reporte esto no tiene ninguna implicación, simplemente se acomodan los campos en las posiciones deseadas, todo esto exactamente igual al tutorial anterior, pero con diferente información a desplegar.
El reporte completo.
Esto es todo en cuanto al diseño del reporte, todo ha sido semejante por no decir igual al reporte del tutorial anterior, únicamente cambiamos el encoding para que aceptara acentos, se le agregó una nueva sección al reporte para desplegar los titulos de las columnas, la fecha se ha generado directamente en el reporte y se suprimió la consulta SQL a la base de dato, el reporte completo es el siguiente.
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
pageWidth="595"
pageHeight="842"
leftMargin="20"
rightMargin="20"
topMargin="20"
bottomMargin="20">
y="0"
width="100"
height="67"/>
y="40"
width="530"
height="30"/>
y="69"
width="530"
height="0"
key="line"/>
y="70"
width="250"
height="20"
key="textField"/>
y="70"
width="270"
height="20"
key="textField"/>
Ahora viene la parte interesante en Java, la cual cambiará muy poco conforme al tutorial anterior.
Generar el reporte con Java.
Para generar el reporte son necesarios cuatro pasos, muy sencillos por cierto. El paso número uno es llenar el data source con la información a enviar, el paso dos compilar el reporte, paso tres llenarlo con la información y parámetros necesarios, paso cuatro exportar el reporte al formato deseado, en este caso pdf.
package pruebas;
/**
* Generar un reporte con Jasper Report
* Por Crysfel Villa Roman
* 21/01/2008
*
* */
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class JasperReport4{
public static void main(String[] args){
String reportName = "plantilla";
JRBeanCollectionDataSource dataSource;
JasperReport jasperReport;
JasperPrint jasperPrint;
Map pars = new HashMap();
pars.put("LOGO_URL", "logo.gif");
pars.put("P_TITULO", "Reporte de universidades inscritas");
pars.put("P_SUBTITULO", "Región Nor-Este");
try{
//1-Llenar el datasource con la informacion de la base de datos o de donde este, en este caso "hardcode"
Collection lista = populateData();
dataSource = new JRBeanCollectionDataSource(lista);
//2-Compilamos el archivo XML y lo cargamos en memoria
jasperReport = JasperCompileManager.compileReport(
reportName+".jrxml");
//3-Llenamos el reporte con la información de la coleccion y parámetros necesarios para la consulta
jasperPrint = JasperFillManager.fillReport(
jasperReport, pars, dataSource);
//4-Exportamos el reporte a pdf y lo guardamos en disco
JasperExportManager.exportReportToPdfFile(
jasperPrint, reportName+".pdf");
System.out.println("Done!");
}catch (Exception e){
System.out.println(e);
e.printStackTrace();
}
}
private static Collection populateData(){
Collection list = new ArrayList();
list.add(new Universidad("Universidad de Montemorelos","Dr. Oscar Castillo","Montemorelos NL.",new Integer(4800)));
list.add(new Universidad("Tecnológico de Monterrey","Dr. Jair Acosta","Monterrey NL.",new Integer(10956)));
list.add(new Universidad("Universidad Regiomontana","Dr. Meliza Orduñez","Monterrey NL.",new Integer(5200)));
list.add(new Universidad("Universidad Autónoma de México","Dr. Carlos Medina","Mexico DF.",new Integer(15700)));
list.add(new Universidad("Instituto Politécnico Nacional","Dr. Manuel Obrador","México DF.",new Integer(16380)));
list.add(new Universidad("Universidad del Valle de México","Dr. Héctor Solano","México DF.",new Integer(6280)));
return list;
}
}
Lo mas importante a resaltar aquí es la clase net.sf.jasperreports.engine.data.JRBeanCollectionDataSource la cual es la encargada de entregar la información al reporte. Esta clase se instancia con una colección de Objetos DTO. En este caso el objeto es Universidad, que contiene las mismas propiedades que el reporte desplegará con sus respectivos getters y setters.
Para ejemplo se ha hardcodeado la información en el método populateData, en la vida real esto no se hace, este método debiera ser implementado de acuerdo a las necesidades del desarrollador, ya sea consultando una base de datos, un webservice, un archivo de texto, etc.
A continuación el bean necesario para llenar el reporte.
package pruebas;
public class Universidad {
private String universidad;
private String rector;
private String direccion;
private Integer alumnos;
//Obligatorio tener un constructor sin parametros.
public Universidad(){
}
//Constructor util para setear las propiedades inicialmente.
public Universidad(String universidad,String rector,String direccion,Integer alumnos){
this.universidad = universidad;
this.rector = rector;
this.direccion = direccion;
this.alumnos = alumnos;
}
public Integer getAlumnos() {
return alumnos;
}
public void setAlumnos(Integer alumnos) {
this.alumnos = alumnos;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getRector() {
return rector;
}
public void setRector(String rector) {
this.rector = rector;
}
public String getUniversidad() {
return universidad;
}
public void setUniversidad(String universidad) {
this.universidad = universidad;
}
}
Lo más importante aquí es que las propiedades deben corresponder a los campos declarados en el reporte, de esta manera el motor de JasperReports puede relacionarlas y desplegar la información.
El código es muy claro y sencillo, si se siguen los cuatro pasos no se tendrá problema para generar el reporte, al igual que en los tutoriales anteriores voy a poner el proyecto para eclipse, con el ejemplo, para ser descargado.
Po último quiero dar una disculpa por referirme tanto al tutorial anterior, pero tanto este como el tutorial anterior son muy semejantes.
Saludos.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.











47 Responses
Muchisimas gracias me quebre la cabeza tratando de hacer un reporte asi (es la primera vez q hago un reporte) y esta es la unica pagina que me ayudo de verdad, muy bueno tu tutorial. Felicitaciones.
La verdad es de lo mejorcito que hay por ahí.
Lo que sí quería preguntarte es si existe alguna posibilidad de que un determinado texto (que ocupa bastante) pueda ajustarse al campo de texto en donde se encuentra y no me lo corte cuando ya llega al tope del textField donde está definido.
Y si existe alguna posibilidad (aunque creo que no, ya que he visto que el atributo height tiene que existir siempre) de que la línea donde aparezca el texto varíe de altura dependiendo del contenido, en este caso del tamaño de la cadena a mostrar.
Gracias y enhorabuena.
Ok. Solucionado.
Se hace con el atributo isStretchWithOverflow=”true”. Mi problema ahora es que si el texto está en el último registro de la página y es demasiado largo corta el texto y lo que falta lo pone en la siguiente página. Puedo controlar esto, o sea, que no me corte el texto del último registro de la página?
Gracias
Hola Crysfel!
Muchas gracias por este ejemplo, llevaba un tiempo buscando como hacerlo y al fin lo he conseguido.
Pero ahora el problema es que dentro de este informe maestro tengo subinformes y no consigo lograr que obtenga los datos del datasource que le he pasado.Simplemente lo muestra todo en blanco.
¿Tienes idea de hacerlo?
Gracias por todo!
excelente trabajo,
me ayudo muchisimo, este caso por lo que veo es una lista para la “banda detalle”
es posiblemandar 2 listas diferentes (Universidad, Facultades), e iterar ambas en la “banda detalle”
gracias de antemano
@MIRIAM
Hola, mira la verdad no he tenido la necesidad de pasarle una colección de beans a subreportes, lo que me ha funcionado siempre es meterle el SQL a cada subreporte en especifico y solo pasarle los parámetros necesarios a cada subreporte.
@MANUEL
La solución a lo que preguntas es hacer subreportes, esto es hacer reportes individuales y luego juntarlos todos en pequeñas secciones dentro de un reporte principal o maestro, de esta manera puedes tener diferente información en el “mismo reporte”.
Si con la SQL va genial, pero en mi caso cuando llamo al informe ya tengo el objeto, entonces hacer una consulta a la bbdd es una perdida de tiempo y recursos, sobretodo cuando la clase contiene muchos campos.
Al final ayer conseguí pasarle los datos al subinforme, pero de momento estoy probandolo.
Gracias y Un saludo!
Bueno mákina la verdad es que sabia muy poco de jasper y gracias a tu ayuda en media hora he montado un reporte de una colección, muchisimas gracias, hace falta más gente como tu.
Solo una cosa cambia el ‘vasta’
que tienes en el texto, que baja mucho la calidad del artículo.
un saludo.
@Paco
Gracias por el feedback, me alegra que te sirvió este tutorial.
Oye, muchas gracias por este tutorial, llevaba horas tratando de hacer un data source desde el ireports y nada, y pues con tus ejemplos y consejos pude avanzar demasiado, solo te tengo una pregunta y es saber si al mismo reporte, puedo agregarle otro bean, por ejemplo paises, con diferentes campos, y q si este reporte se llenaria de la misma forma como cuando uno maneja sql, q puede tener varias tablas, gracias de nuevo desde Colombia crisfel
Muchas gracias por tu aporte, me a servido de mucho. Adicional a lo que muestras aca me gustaria saber como recorrer una coleccion dentro de un javabeans. Ejemplo: teniendo la universidad un List de aulas con nombre y profesor. como hago para recorrer esto en el reporte. He intentado d todo y nada. No se como decirle que rrecorra el objeto y q saque sus valores. El convierte la lista dentro del bean a cadena. No se si es tan flexible como lo q se hace JSF. Por favor hazme saber. Gracias.
erda mijo ke barbaro.
MIs felicitaciones crys.
Hola Crysfel, te queria hacer una pregunta a ver si me puedes ayudar.
Necesito generar un reporte e incluirle una imagen en la cabecera, pero esta imagen dependerá del valor que tengamos en una tabla en Base de Datos.
Por ejemplo, si en base de datos tenemos ESP, pondremos la bandera de españa, si tenemos ING pondremos la bandera Inglesa y asi sucesivamente.
Un saludo.
@Hossain
Esas comparaciones las puedes hacer con java, antes de generar el reporte le asignas el al parámetro de la URL de la imagen, el path a donde esta la imagen adecuada.
saludos. :d
@Casto
Para recorrer una colección (o una lista) dentro de un informe, debes crear un subinforme. Dentro del subinforme rellenas pones los campos que vas a extraer de la clase que esta dentro de la Colección.
Luego seleccionas propiedades del subinforme y le pones como DataSource la Colección de objetos java que vas a recorrer, con un pequeño matiz… al informe no puedes pasarle un Collection, debes pasarle un JRBeanCollectionDataSource, por lo que en lugar de pasarle el dato directamente (como podria ser $F{productos}, debes crear un JRBeanCollectionDataSource de la forma:
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{productos})
donde $F{productos} es, por ejemplo, una colección de objetos Producto. De forma que dentro del subinforme podrás acceder a todos los campos de la clase Producto. Si necesitas más datos puedes pasárselos en forma de parámetros al subinforme.
De este modo también se puede hacer con Arrays, sustituyendo net.sf.jasperreports.engine.data.JRBeanCollectionDataSource por net.sf.jasperreports.engine.data.JRBeanArrayDataSource
Espero sea de ayuda,
Un saludo!
@Guille
Gracias por el aporte
hola como estas tengo un problema la ejecutar tu ejemplo a lo cual me aparece:
net.sf.jasperreports.engine.JRException: Error executing SQL statement for : classic_landscape
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:121)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:673)
at net.sf.jasperreports.engine.fill.JRFillDataset.setDatasource(JRFillDataset.java:610)
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:599)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:864)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:702)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:660)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
favor ayudarme con esto gracias
Hola, ya que al parecer tu le mueves bien al JR; quiera saber si me puedes ayudar, estoy atoradisimo.
Necesito generar un reporte muy simple, no tiene mayor complicación, tanto que ya tengo la información almacenada en beans.
El detalle es que no se como pasar esa información a JR, ya que este solo soporta un DS, y yo tengo 4 :S.
Un compañero del trabajo dice que es posible crear un contenedor y después pasarlo como DS, pero no he encontrado nada al respecto, espero que me puedas ayudar o aconsejar.
Saludos, y gracias de antemano.
Excelente tu aporte, llevaba 48 horas intentando hacer que me aceptara los acentos y las ñ y nada que ver, hasta ya me sentia desmoralizada, gracias a ti eso ha cambiado.
Ahora si tengo dos preguntas a ver si me puedes ayudar.
1) tengo un sub-reporte del cual quiero que la data se muestre en columnas, ya he ido a las propiedades del reporte cambiado el valor de columns a tres y he puesto para que imprima en horizontal, pues bueno, siempre imprime en dos columnas, asi coloque cinco columnas solamente lo hace en dos, porque sera???
2) y esta si que no tengo idea, mi reporte tiene unos sub-reportes los cuales muestran por ejemplo 5 datos, yo necesito que uno de ellos aparezca check o tildado o como lo quieras definir según una data de la base de datos y unos parametros q paso del reporte principal. como podria hacer???
muchas gracias por tu posible colaboracion
Hola, otra pregunta, la anterior ya la resolví, tengo problemas para poder modificar el tamaño de las fuentes de los “labels” en los charts, específicamente de 3D pie chart.
Me refiero a los labels que aparecen dentro de el chart y apuntan a las secciones de la misma, no a los que aparecen dentro de un cuadro, esos son los legends (me imagino que esta información la conoces, solo amplio la descripción para que te sea mas simple comprender a lo que me refiero).
Gracias de antemano y saludos.
Hola: Esta muy bueno el tutorial, me ha ayudado bastante, tengo una consulta
Tengo un reporte y es muy extenso los campos para ser impreso en vertical, de que manera puedo hacer para imprimirlo en horizontal?
Gracias
Hola, el tutorial esta muy bueno, simple pero sustancioso.Tengo un par de preguntas, yo tengo que generar un reporte similar solo que el tamaño de la lista es enorme y por lo tanto no cabe la información en una sola página, al iniciar la segunda pagina se encima toda la información en la imagen. Como puedo evitar esto. La siguiente pregunta qu etengo es: tengo un reporte el cual en su primer página es una caratula pero las páginas subsecuentes deben de tener el mismo cabecero aunque este cabecero es distinto al de la caratula por supuesto. Además en la última página mi reporte debe llevar un footer con unos acumulados, sin mencionar que la lista de la información es muy grande y debo mostrarla. ¿Como resuelvo esto? Ojala pudieras ayudarme
Hola me parecen muy interesantes tus tutoriales @crysfel gracias me han servido mucho, gracias, pero cambiando el reporte a mis datos me da problemas con un campo, estas son las excepciones que me arroja, no se si ha alguien le haya ocurrido lo mismo que me pueda orientar les agradecería mucho… saludos
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : FunSabado
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:127)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:100)
at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:814)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:778)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1417)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:891)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:814)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)
El problemas es el campo FunSabado, pero la colección de datos está bien armada…
Espero algún comentario…
Saludos Christmo
Hola: tengo la siguiente pregunta, ¿como hago para hacer que una imagen dentro de un reporte sea dinamica? es decir, dependiendo de un parametro, colocar una u otra, gracias.
@Hector
Sobre la imagen, lo que yo haría sería enviarle como parámetro el path de la imagen que quiero que aparezca, de esta manera tu controlarías desde Java que imagen poner.
saludos.
Hola, antes que nada gracias por la explicacion. Pero queria sacarme algunas dudas ya que no logro hacerlo correr en NetBeans. La pregunta es tiene que ser una aplicacion web?
@kiwi
No, este ejemplo es un simple programa Java que se ejecuta por medio de la consola
El código fuente que puse para descargar esta configurado para eclipse, aunque no le veo problema hacerlo correr en Netbeans.
saludos
cuando configuro la fuente de datos desde netbeans me da el sigioente error:
“ClassNotFound
Check your classpath.”
no se porque sucede
@kiwi
debe ser por que no has puesto los jars en el classpath, necesitas agregarlos al classpath para que el compilador encuentre las clases que necesita.
saludos
Hola!
Esta muy bueno el tutorial, mi problema es en base a lo siguiente, espero me puedas ayudar, ya que no le encontrado el modo de solucionarlo: Tengo un arrayList de Empleados y es el idempleado el cual me sirve para generar el reporte,cuando es un solo empleado no hay problema, mi pregunta es si hay alguna forma de poder mandar n valores al parametro idempleado, es decir barro la lista dentro de la clase y mando los valores, pero solo me genera el del primer empleado, no se si esto sea posible o solo pueda generar el reporte de 1 solo empleado a la vez, espero puedas ayudarme, de antemano gracias
Saludos
Hola como estan, ya ejecute todos estos ejemplos, fueron muuuuuuuuuuuuy utiles, pero tengo un problema no se si me puedan ayudar, tengo un reporte al cual le paso un bean, hasta aqui no tengo problemas, el problema viene cuando le incluyo un subreporte al mismo, me despliega el subreporte, pero sin datos, alguien podria decirme como pasarle los datos al subreporte a partir de un bean
Hola! Quería preguntar cómo se hace para pasar los parámetros desde el informe padre a los subinformes? La solución que me dieron es hacer un mapa de mapas de parámetros. Yo le paso al report padre el mapa de mapas, pero no sé mandar los mapas de parámetros desde el padre a los subreports. ¿Hay alguna solución para esto u otra forma de hacerlo?
Gracias
MIRIAM tengo el mismo problema desearia saber si estar a tu alcance y no es mucha molestia explicarme como lo solucionaste
MUCHAS GRACIAS POR TU APORTE AL CONOCIMIENTO.
muy bueno tu tutorial , el problema es que cuando hago la consulta sql y le pongo curdate() as fecha, me dice que no se reconoce la funcion curdate, si pudieras responder mi pregunta te lo agradeceria de nuevo…saludos
mandarme a este chavo para darle un beso, q parote
HUUUY COMPADRE MUY BUENO TU TUTORIAL DE VERDAD LO ESTABA NECESITANDO GRACIAS…
Oies tengo una pregunta trabajo en proyectos flex integrados con java… que posibilidades hay que el reporte lo muestre flex.. me seria de gran ayuda tu recomendacion. Gracias
Mil gracias!!!! es más facil de lo que pensaba
Muy bueno el tutorial. La verdad que me sirvió mucho. Gracias
Excelente tutorial, gracias.
Necesito crear un reporte con la siguiente estructura en la banda de detail.
Hello, need help to create report with the following structure in detail report element.
|Element 1|Element 1.1|
| |Element 1.2|
| |Element 1.n|
———————–
|Element 2|Element 2.1|
| |Element 2.n|
———————–
|Element x|Element x.n|
alguna idea, gracias
hola es un buen tutoria me ha servido para realizar los reportes que necesito pero espero que alguien me ayude a solucionar un problema es que hice un reporte mostrando unos datos de la base de datos en la banda detail mediante una consulta, todo normal, veo el resultado por el preview que ejecuta un pdf de muestra y lo muestra normal, copilo el jasper normal, pero a la hora de mostrarlo en mi aplicativo en jsp muestra el reporte normal pero sin los datos del detail, ya he mirado que la consulta se ejecuta por que extraigo otros datos para publicarlos en otras bandas y si los publica, lo unico que no me publica es la banda detail si alguien me podria ayudar se lo agradeceria
estoy generando un reporte en con jasper pero al ejecutarlo todo los campo s imprimen menos los que estan en la banda detail. no presenta nada ni texto statico nada me podrian ayudar utilizo jrresultsetdatasource
quisiera saber como generar columnas dinamicamente dependiendo de la cantidad de informacion que necesite sin tener que generar el xml por java. gracias.
Hola crysfel y a todos los pasan por aqui, una pregunta, es posible hacer hacer un report group dentro de un reporte por medio de una colección de objetos DTO?
Desde ya muchas gracias.
Saludos a todos
Estoy en un proyecto con hibernate y ireport, si me podrian ayudar, necesito mostrar un listado que esta dentro de otra lista en un reporte por ejemplo:
private String nombre;
private String ape;
private List direcciones;
etc…..
donde lista contine a su vez una lista de bean de donde tengo que sacar varios campos.
Entonces el reporte tendría que visualizarme
Persona 1
Nombre, apellido , etc
Direccion
1.
2.
3.
Persona 2
Direcccion
1,
2
3
Como le envio al reporte el listado de personas y a su vez el listado de direcciones que tiene cada persona?
Gracias por todo.
¿¿Puedo preguntar??