Professional Documents
Culture Documents
TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte6:Grupos
3
Ms Siguienteblog
TutorialesdeProgramacionJava
BlogdedicadoatemasdeprogramacinactualesusandoellenguajedeprogramacinJavaylasltimasversionesdesusAPIsyHerramientas.
Pginaprincipal
PginadeConcursos
TutorialesUPAO2010
PresentacionesCapacitacin
VIERNES,17DEABRILDE2009
CreacindeReportesconJasperRepotsyiReportsParte6:Grupos
Visitalaparte1deestetutorial:ReportesconConexinaBasesdeDatos
Visitalaparte2deestetutorial:UsandoDataSourcesPersonalizados
Visitalaparte3deestetutorial:ParmetrosyVariables
Visitalaparte4deestetutorial:Reportesenaplicacionesweb
Visitalaparte5deestetutorial:GrficasenReportes
Visitalaparte7deestetutorial:Subreportes
En el tutorial anterior vimos como usar grupos para generar la grfica de los datos de un reporte. Es esa ocasin los grupos fueron un
elementosecundarioqueusamosparaauxiliarnosenlageneracindedichagrfica.
Ahora veremos cmo deben ser usados los grupos para, bueno, agrupar un conjunto de datos relacionados y mostrar estos grupos de
forma clara en el reporte. Usaremos la misma idea del tutorial anterior, en la que se mostraron las ventas de las consolas de ltima
generacin (Wii, XBox 360, y PS3). Solo que en este caso mostraremos por cada consola el nombre de los jugadores que las han
comprado,separadosclaramentedelosquehancompradolasotrasconsolas.
DONACIONES
JAVATUTORIALESENFACEBOOK
JavaTutoriales
Megusta
JavaTutorialesha
aadidounafotonueva.
13demarzo
ParacomenzarcreamosunnuevoproyectoenNetBeans(File>NewProject...>Java>JavaApplication). Damos
unnombreyunaubicacinanuestroproyectoypresionamoselbotn"Finish"paraquelaclaseMainaparezcaennuestroeditor.
Recuerden agregar al nodo "Libraries" del panel "Projects" la biblioteca "JasperReports" que creamos en la primer parte del
tutorialyeljar"commonslogging1.1.1.jar".
Usaremos la misma clase "Jugador" en en el tutorial anterior para mantener los datos que sern mostrados en el reporte. La clase
queddelasiguienteforma:
16MegustaSehacompartido1vez
Megusta
Comentar
A24386personaslesgustaJavaTutoriales
publicclassJugador
{
privateintid
privateStringnombre
privateStringconsola
publicJugador(intid,Stringnombre,Stringconsola)
{
this.id=id
this.nombre=nombre
this.consola=consola
}
PluginsocialdeFacebook
publicStringgetConsola()
{
returnconsola
}
publicvoidsetConsola(Stringconsola)
{
this.consola=consola
}
publicintgetId()
{
returnid
}
publicvoidsetId(intid)
{
this.id=id
}
publicStringgetNombre()
http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_17.html
1/10
14/4/2015
TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte6:Grupos
{
returnnombre
}
publicvoidsetNombre(Stringnombre)
{
this.nombre=nombre
}
}
El cdigo que colocaremos en la clase Main es el mismo que en el tutorial anterior. Solo que en este caso en vez de tener 100
jugadores,modificaremoslosciclosforparatenersolo10.Porlotantoquedandelasiguienteforma:
for(inti=1i<=4i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"Wii"))
}
for(inti=5i<=7i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"XBox"))
}
for(inti=8i<=10i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"PS3"))
}
Elrestodelaclaseesigualqueeneltutorialanterior.
AhoraabrimosiReportycreamosunnuevoreportevacio(Archivo>New...>EmptyReport). En la ventana que se abre le
damos un nombre al reporte (reporteGrupo.jrxml) y lo guardamos en el directorio raz del proyecto de NetBeans. Presionamos el
botn"Finalizar"paraqueaparezcalaplantillavaciodenuestroreporte.
Colocamos el ttulo del reporte en la banda "Title" usando un texto esttico. Tambin agregamos los fields correspondientes para
losdatosdelosobjetosJugador(id,nombre,yconsola).Enestaocasinenlabanda"Detail"solamentecolocamoslosfieldsid
ynombre(yaquelosgrupossernformadosenbasealfieldconsola).Ynocolocamosnadaenlabanda"ColumnHeader":
SEGUIDORES
Participarenestesitio
GoogleFriendConnect
Miembros(195) Ms
Yaeresmiembro?Iniciarsesin
ARCHIVODELBLOG
2015(1)
2013(1)
Ahora crearemos el grupo correspondiente a las consolas. Para esto hacemos click derecho en el nodo "report name" del panel
"ReportInspector".Yenelmencontextualqueapareceseleccionamoslaopcin"AddReportGroup":
2012(2)
2011(11)
2010(10)
2009(22)
septiembre(2)
agosto(2)
julio(1)
junio(3)
mayo(2)
abril(5)
InstalacindeunServidordeDesar
Parte1...
CreacindeReportesconJasperRe
yiReports...
Con esto se abrir la ventana "New group wizard". En ella debemos introducir el nombre del grupo, que en este caso ser
"CONSOLAS"yelcamposobreelcualsecrearnlosgruposque,comohabiamosdicho,serelcampo"consola":
CreacindeReportesconJasperRe
yiReports...
CreacindeReportesconJasperRe
yiReports...
CreacindeReportesconJasperRe
yiReports...
marzo(2)
febrero(2)
http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_17.html
2/10
14/4/2015
TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte6:Grupos
enero(3)
Android
latency
high?
Presionamoselbotn"Siguiente>".Enlapantallasiguientedejamosseleccionadaslasdosopciones("Addthegroupheader"
y "Add the group footer"). Presionamos en botn "Finalizar" con lo que veremos que en la plantilla de nuestro reporte han
aparecido dos nuevas bandas, "CONSOLAS Group Header" y "CONSOLAS Group Footer", adems de una nueva variable,
CONSOLAS_COUNT:
Agregar un cuadro negro ("Rectangle" de la paleta de elementos del reporte) en la banda "CONSOLASGroupHeader" para poder
distinguirloenelmomentodegenerarelreportefinal.Ademsarrastraraestabandaelfield$F{consola}quecreamosanteriormente.
Al arrastrar este field se nos preguntar qu es lo que queremos mostrar: el valor del campo ("Thefieldvalue") o el resultado de
una funcin de agregacin ("Theresultofanaggregationfuction"). Como lo que queremos mostrar es el valor del campo
dejamosseleccionadalaprimeraopcin(siqueremosmostrarelnmerodeloselementosdelgrupopodemosvolveraarrastrarestefield
alabanda).
Lowlatency
Android
audio.Easy.
Stable.Just
works.
DATOSPERSONALES
Alex
Si,aligualqueyo,agregaronelcuadronegroenlabanda,serneccesarioquecambienelcolordelaletradelcampo(Forecolor) a
blancoparapoderverlo.
Elreportefinaldebeversemsomenosas:
Ahora cambiamos a la pestaa "Preview" para que se compile nuestro reporte y genere, en el mismo directorio en el que colocamos
nuestroarchivo"reporteGrupo.jrxml",elarchivo"reporteGrupo.jasper".
AhoraregresamosalNetBeansyejecutamosnuestraaplicacin.EstogenerarunarchivoPDFenelmismodirectorioquelosarchivos
http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_17.html
3/10
14/4/2015
TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte6:Grupos
.jrxmly.jasper.Elcontenidodelreporteelsiguiente:
Comopodemosver,lostresgrupos(unoporcadaconsola)semuestrandeformaindependienteunodeotro.Ademsencadagrupose
listansololosjugadoresquetienenlaconsoladelgrupo.
ElcdigofinaldelaclaseMaineselsiguiente:
publicclassMain
{
publicstaticvoidmain(String[]args)throwsException
{
ListlistaJugadores=newArrayList()
for(inti=1i<=4i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"Wii"))
}
for(inti=5i<=7i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"XBox"))
}
for(inti=8i<=10i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"PS3"))
}
JasperReportreporte=(JasperReport)JRLoader.loadObject("reporteGrupo.jasper")
JasperPrintjasperPrint=JasperFillManager.fillReport(reporte,null,newJRBeanCollectionDa
taSource(listaJugadores))
JRExporterexporter=newJRPdfExporter()
exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint)
exporter.setParameter(JRExporterParameter.OUTPUT_FILE,newFile("reportegrafica.pdf"))
exporter.exportReport()
}
}
Bueno,esperoqueestetutoriallessirva.Noolvidendejarsusdudas,comentarios,ysugerencias.
Saludos.
http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_17.html
4/10
14/4/2015
TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte6:Grupos
Visitalaparte1deestetutorial:ReportesconConexinaBasesdeDatos
Visitalaparte2deestetutorial:UsandoDataSourcesPersonalizados
Visitalaparte3deestetutorial:ParmetrosyVariables
Visitalaparte4deestetutorial:Reportesenaplicacionesweb
Visitalaparte5deestetutorial:GrficasenReportes
Visitalaparte7deestetutorial:Subreportes
PublicadoporAlexen19:49
divertido (2)
Reacciones:
interesante (2)
increible (2)
no me gusta (2)
41comentarios:
Ro 25dejuniode2009,23:46
Imaginaquetengoenelinformeunaespeciedetablaconlassiguientescolumnas:aplicacin,puntuacionyempresa,(dondelaempresa
es la que hizo la aplicacin y puntuacin es la puntuacin que tiene esa aplicacin).Yo quiero mostrar la puntuacin promedio por
empresa,seriacrearungrupoporempresas,yluegosumarlaspuntuacionesparacadaunadelasempresas.Cmopuedoindicaren
unavariablequehagalasumadelacolumnapuntuacinperopertenecienteacadaempresa?
Responder
Alex
27dejuniode2009,7:38
Hola,efectivamente,tendrasquecrearungrupoporcadaempresa.
Paraindicarlavariabledelaquehablasbastacondefinirlaenelpanel"Reportinspector"enlaseccindevariablesycolocarladentrode
labandadelgrupoqueacabasdecrear,colocandoensuspropiedadesqueseaunasumadetucolumnapuntuacin.Conestolograras
queesavariabletengalasumadelapuntuacindecadaempresa.
Saludos
Responder
Ro 29dejuniode2009,23:15
Estodelosgruposestpudiendoconmigo.Averestoytratandodehacerprimeroalgomssencillo,comoesungraficopie.Tengoenel
informelasiguienteinformacin(querecuperodesdeunjavaconJasperFillManager.fillReport):Aplicacion,criticidadyempresa,tengolos
tres field definidos, en el informe que genrero muestro el valor de esos tres campos y quiero mostrar un grfico tipo pie con el % de
aplicaciones en funcion de la criticidad (hay criticas, altas, medias y bajas) me he generado un grupo para el campo criticidad
(grupocriticidad)ytengolavariablegrupocriticidad_COUNTquesegeneraconelgrupo.Losdatosquepongoenelchartson:enkey
expresionelcampocriticidad($F{criticidad})yenelvalorelvalordelavariablegrupocriticidad_COUNT($V{grupocriticidad_COUNT}),
tengodedatos6aplicaciones,2criticas,2medias,1altay1baja,yenelgrficosiempremesalen4porcionescadaunaconun25%
(indicandoqueslohayunadecada).Podrasdecirmequeestoyhacuendomal?
Graciasxanticipado.Annoheprobadolodelcomentarioanterior,xqnoeconseguidoquemefuncioneesto.Yatecomentoalgo
Responder
Ro 29dejuniode2009,23:32
Pareceserquesilosordenoporelgrupo(pongotodaslascriticasjuntas,todaslasaltas,etc.),simepintaelgrficobien.Esobligatorio
tenerlosregistrosordenadosporelgrupoparaquelospintebien?
Responder
Alex
30dejuniode2009,6:45
HolaRo
Efectivamente,losregistrosdebenestarordenadosporelatributoqueteinteresegraficar(queentucasomeparecequeescriticidad)
paraqueelgrficolomuestredemaneracorrecta.
Saludos
Responder
Ro 1dejuliode2009,3:55
Averporquemesurgeotraduda,yotengoenelinformemostradoloscamposaplicacion,criticidad,puntuacin,yempresa.Yquiero
sacardosgrficosdistintos,porunladoeltipopieenelquehablenelcomentarioanterior,locualyaheconseguidoordenandolos
datosporelcampocriticidad.Peroahoraquierootragrfica,debarrasenelqueenelejedelasxseencuentrenlasempresasyeneleje
delasylapuntuacinpromedioporempresa,paraellonecesitogenerarotrogrupo(empresa),yunavariablequesumelaspuntuaciones
asociadasacadaempresaydividaporelnumerodeaplicacionesdelaempresa,peroclarolosdatosdelaempresanoestnordenados
porempresa(yaqueloshabaordenadoporcriticidad),comoarregloeso?
Responder
Ro 1dejuliode2009,7:37
Alfinalloheresueltousandosubinformes,nosesieslaopcinmsptima,perofunciona.Unacosillams,cmopuedopersonalizar
http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_17.html
5/10