You are on page 1of 5

14/4/2015

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

Programador Java con algunos ao


experiencia en mltiples poyectos y
mltiples APIs y herramientas deseos
compartir experiencias con el rest
programadores.
Vertodomiperfil

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)

+3 Recomendar esto en Google


Etiquetas:grupos,ireports,jasperreports,java,reportes

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

You might also like