tutoriales de programacion java_ creación de reportes con jasperrepots y ireports - parte 2_ uso de...

13
Blog dedicado a temas de programación actuales usando el lenguaje de programación Java y las últimas versiones de sus APIs y Herram Tutoriales de Programacion Java Página principal Página de Concursos Tutoriales UPAO 2010 Presentaciones Capacitación LUNES, 2 DE MARZO DE 2009 Creación de Reportes con JasperRepots y iReports Parte 2: Uso de DataSources Personalizados En el primer post de la serie de JasperReports hablé de cómo crear una biblioteca para trabajar con JasperReports y cómo crear un reporte en múltiples formatos. Además hicimos un ejemplo de creación de reportes usando una conexión JDBC directa a nuestra base de datos. Ahora veremos cómo generar nuestros reportes sin hacer uso de una conexión. Esto puede ser muy útil en los casos en los que ya tengamos los datos en memoria y no necesitemos realizar una conexión a la base de datos; o en el caso en que, por alguna razón ajena a nosotros, no podamos obtener la conexión. Para poder hacer esto se nos proporciona una interface: "net.sf.jasperreports.engine.JRDataSource". Esta interface tiene solo dos métodos: getFieldValue(JRField jrField) next() Explicaré estos métodos un poco más adelante, por ahora comencemos a generar todo lo necesario para tener nuestro reporte. Creamos un nuevo proyecto en NetBeans (menú "File > New Project..."). En la ventana de nuevos proyectos seleccionamos la categoría "Java" y como tipo de proyecto seleccionamos "Java Application" y hacemos clic en el botón "Next". En la siguiente ventana introducimos el nombre de nuestro proyecto y dejamos seleccionada las opciones "Create Main Class"y"Set as Main Project". Para que podamos pasar datos a nuestro reporte es necesario que utilicemos un datasource. En el ejemplo anterior veíamos que el datasource que usábamos era la base de datos y la conexión a la misma. En esta ocasión el datasource será una de nuestras clases. Esta clase deberá implementar la interface "JRDataSource" y contendrá la lógica para pasar los datos correspondientes a nuestro reporte. Creamos una nueva clase haciendo clic derecho sobre el nodo "Source Packages" de la ventana "Projects", o sobre el paquete que ya tenemos creado, y en el menú contextual que se abre seleccionamos la opción "New > Java Class...". En la ventana que se abre escribimos como en nombre de la nueva clase "Participante" y presionamos el botón "Finish". Con esto veremos en la ventana de nuestro editor la nueva clase "Participante". Esta clase "Partcipante" representará los datos que se mostrarán en el reporte, tal como en el ejemplo anterior cada uno de los registros de la tabla "participantes" representaba una fila en el reporte final, cada objeto participante que creemos representará una fila en el nuevo reporte. Agreguemos los siguientes atributos a nuestra clase: DONACIONES JAVA TUTORIALES EN FACEBO Java Tutoriales A 24 386 personas les gusta Jav Plugin social de Facebook Me gusta Java Tutoriales añadido una foto 16 Me gusta · Se ha compartid Me gusta Comentar 13 de marzo 8 Más Siguiente blog»

Upload: ben-avraham

Post on 11-Nov-2015

217 views

Category:

Documents


0 download

DESCRIPTION

tip

TRANSCRIPT

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 1/26

    BlogdedicadoatemasdeprogramacinactualesusandoellenguajedeprogramacinJavaylasltimasversionesdesusAPIsyHerramientas.

    TutorialesdeProgramacionJava

    Pginaprincipal PginadeConcursos TutorialesUPAO2010 PresentacionesCapacitacin

    LUNES,2DEMARZODE2009

    Creacin de Reportes con JasperRepots y iReports Parte 2: Uso deDataSourcesPersonalizadosEnelprimerpostdelaseriedeJasperReportshabldecmocrearunabibliotecaparatrabajarconJasperReportsycmocrearunreporteenmltiplesformatos.AdemshicimosunejemplodecreacindereportesusandounaconexinJDBCdirectaanuestrabasededatos.

    Ahora veremos cmogenerar nuestros reportes sin hacer uso de una conexin.Esto puede sermuy til en los casos en los que yatengamoslosdatosenmemoriaynonecesitemosrealizarunaconexinalabasededatosoenelcasoenque,poralgunaraznajenaanosotros,nopodamosobtenerlaconexin.

    Para poder hacer esto se nos proporciona una interface: "net.sf.jasperreports.engine.JRDataSource". Esta interface tienesolodosmtodos:

    getFieldValue(JRFieldjrField)

    next()

    Explicarestosmtodosunpocomsadelante,porahoracomencemosagenerartodolonecesarioparatenernuestroreporte.

    CreamosunnuevoproyectoenNetBeans(men"File>NewProject...").Enlaventanadenuevosproyectosseleccionamoslacategora"Java"ycomo tipodeproyectoseleccionamos"JavaApplication" yhacemosclicenelbotn "Next".En lasiguienteventana introducimoselnombredenuestroproyectoydejamosseleccionadalasopciones"CreateMainClass"y"SetasMainProject".

    Para que podamos pasar datos a nuestro reporte es necesario que utilicemos un datasource. En el ejemplo anterior veamos que eldatasourcequeusbamosera labasededatosy laconexina lamisma.Enestaocasineldatasourceserunadenuestrasclases.Esta clase deber implementar la interface "JRDataSource" y contendr la lgica para pasar los datos correspondientes a nuestroreporte.

    Creamosunanuevaclasehaciendoclicderechosobreelnodo"SourcePackages"delaventana"Projects",osobreelpaquetequeyatenemoscreado,yenelmencontextualqueseabreseleccionamoslaopcin"New>JavaClass...".

    Enlaventanaqueseabreescribimoscomoennombredelanuevaclase"Participante"ypresionamoselbotn"Finish".Conestoveremosenlaventanadenuestroeditorlanuevaclase"Participante".

    Esta clase "Partcipante" representar los datos que semostrarn en el reporte, tal como en el ejemplo anterior cada uno de losregistrosdelatabla"participantes"representabaunafilaenelreportefinal,cadaobjetoparticipantequecreemosrepresentarunafilaenelnuevoreporte.

    Agreguemoslossiguientesatributosanuestraclase:

    DONACIONES

    JAVATUTORIALESENFACEBOOK

    JavaTutoriales

    A24386personaslesgustaJavaTutoriales

    PluginsocialdeFacebook

    Megusta

    JavaTutorialeshaaadidounafotonueva.

    16MegustaSehacompartido1vez

    Megusta Comentar

    13demarzo

    8 Ms Siguienteblog

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 2/26

    privateintid;privateStringnombre;privateStringusername;privateStringpassword;privateStringcomentarios;

    Ademsagregamossusgettersysussettersydosconstructores,unosinargumentosyunoquerecibacomoargumentos todaslaspropiedadesdeclaradasanteriormente.

    Si estn utilizando el NetBeans para seguir este tutorial pueden generar tanto los setters y los getters de forma automticapresionandolasteclas"Alt+Insert",conlocualseabrirunmencontextualconlasopcionesnecesariasparahaceresto:

    Alterminar,suclasedebeversemsomenosas:

    ParticiparenestesitioGoogleFriendConnect

    Miembros(195) Ms

    Yaeresmiembro?Iniciarsesin

    SEGUIDORES

    2015(1)

    2013(1)

    2012(2)

    2011(11)

    2010(10)

    2009(22)septiembre(2)

    agosto(2)

    julio(1)

    junio(3)

    mayo(2)

    abril(5)

    marzo(2)CreacindeReportesconJasperRepots

    yiReports...

    CreacindeReportesconJasperRepotsyiReports...

    febrero(2)

    enero(3)

    ARCHIVODELBLOG

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 3/26

    publicclassParticipante{privateintid;privateStringnombre;privateStringusername;privateStringpassword;privateStringcomentarios;

    publicParticipante(){}publicParticipante(intid,Stringnombre,Stringusername,Stringpassword,Stringcomentarios){this.id=id;this.nombre=nombre;this.username=username;this.password=password;this.comentarios=comentarios;}

    publicStringgetComentarios(){returncomentarios;}

    publicvoidsetComentarios(Stringcomentarios){this.comentarios=comentarios;}

    publicintgetId(){returnid;}

    publicvoidsetId(intid){this.id=id;}

    publicStringgetNombre(){returnnombre;}

    publicvoidsetNombre(Stringnombre){this.nombre=nombre;}

    publicStringgetPassword(){returnpassword;}

    publicvoidsetPassword(Stringpassword){this.password=password;}

    publicStringgetUsername(){returnusername;}

    publicvoidsetUsername(Stringusername){this.username=username;}}

    Ahora,antesdeseguirconnuestrocdigoJava,pasaremosacrearlaplantilladenuestroreporteconiReport,porloqueabrimosestaherramienta.

    En esta ocasinno haremos uso de un wizard para crear el reporte, sino que lo haremos desde cero, y aprovechar para explicar

    Alex

    Programador Java con algunos aos deexperiencia en mltiples poyectos y conmltiples APIs y herramientas deseoso decompartir experiencias con el resto deprogramadores.

    Vertodomiperfil

    DATOSPERSONALES

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 4/26

    algunosconceptosbsicossobrelosreportesconformelosvayamosnecesitando.

    Paracrearelnuevoreportevamoselmen"File>New...".Enlaventanaqueseabreseleccionamosunodelosformatos"Blank"ypresionamoselbotn"OpenthisTemplate":

    Despus introducimoselnombredel reporte,yo lo llamar"reporte2.jrxml",y laubicacinen laqueseguardar.LesrecomiendoqueenestaocasinguardenelreporteeneldirectoriorazdelproyectodeNetBeansqueacabamosdecrear.Hacemosclicenelbotn"Next" y se nosmostrar unmensaje de felicitacin por haber creado un nuevo reporte (^_^!).Cuando presionen el botn "Finish"vernunahojadivididaen7u8diferentesporcioneshorizontalesllamadasbandas.

    Cuandogeneramosnuestroreportefinalcondatos,cadaunadeestasbandassecomportadeunaformadistinta.Algunasaparecensoloalprincipiooalfinaldelreporte,otrasaparecenconcadanuevafilaqueseleagrega,otrassoloalfinaldelosdatos,etc.

    Laplantilladereportesestdivididaen10bandaspredefinidas.Unabandasiempretieneelmismoanchoquelapgina.Sinembargoelaltodealgunasdelasbandaspuedevariardurantelafasedellenadodedatos,ansiestablecimosunaltoenelmomentodeldiseo.

    Lasbandasexistentesson:

    Background

    Title

    PageHeader

    ColumnHeader

    Detail1

    ColumnFooter

    PageFooter

    LastPageFooter

    Summary

    NoData

    Explicaralgunasdeestasbandasconformelasvayamosusandoenlostutorialescorrespondientes.

    Loprimeroqueharemosesagregar textoanuestro reporte.EniReportexistendos tiposde texto: textoestticoy texto dinmico(tambin llamado expresiones). El texto esttico es aquel que no cambia, mientras que las expresiones son como etiquetas que leindicanaJasperReportsquedebereemplazarlasporalgnvaloralmomentodegenerarelreportefinal.

    Existen3tiposdeexpresiones:

    Campos(fields)representadoscon"$F{nombre_campo}".Variablesrepresentadaspor"$V{nombre_variable}".Parmetrosrepresentadospor"$P{nombre_parmetro}".

    Cadaunodeestostiposdeexpresionestieneunusoparticular:

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 5/26

    Los campos ("$F{}") le dicen al reporte dnde colocar los valores obtenidos a travs del datasource. Por ejemplo, nuestro objeto"Partcipante"tieneunatributollamado"username".Usandounaexpresindecampoindicamosenculparteoseccindelreportedebeaparecerelvalordeeseatributousando"$F{username}".Estoquedarmsclarounpocomsadelante.

    Losparmetros("$P{}")sonvaloresqueusualmentesepasanalreportedirectamentedesdeelprogramaquecreaelJasperPrintdelreporte (en nuestra aplicacin Java). Aunque tambin existen algunos parmetros internos que podemos leer pero nomodificar. Parahacerusodeestosparmetrossimplemente indicamoselnombredelparmetroenel lugarquequeremoscolocarlo.PuedenencontrarlosnombresysignificadosdelosparmetrosinternosenladocumentacindeJasperReports.

    Lasvariables("$V{}") sonobjetosusadosparaalmacenar valores como los resultadosde clculos.Al igual que con losparmetros,JasperReports tienealgunasvariables internasquepodemos leer.Puedenencontrar losnombresy significadosde las variables ladocumentacindeJasperReports.

    Cada uno de estos elementos tiene un nombre, un tipo (que debe corresponder con un tipo de objeto Java como String oInteger), yunadescripcin opcional.Ademsdebenser registradosparapoder serusadosen tiempodediseoyquepuedanserentendidosalmomentodecompilarel reporte,ypor lo tantoparaquenuestro reporte funcionecorrectamenteen tiempodeejecucin.Estoloveremosunpocomsadelante.

    Regresemosadondenosquedamos.Queremosagregaruntextoestticoanuestroreporteamododettulo.Paraestodebemosagregarun elemento llamado "Static Text". Los elementos que podemos agregar a nuestros reportes estn en una ventana llamada"Palette",queseencuentraen lapartederechadeiReport,bajo lacategora "ReportElements".Sinopuedenver laventana"Palette"presionenlasteclas"Ctrl+Shift+8":

    Deestaventanaarrastramos elelemento "StaticText"a labanda "Title". "Title" esunabandaquesoloapareceen lapartesuperiordelaprimerpgina.Porloquenossirveparacolocarelttulodelreportey/oelnombreylogodenuestraempresa.

    Una vez que hayamos colocado el texto esttico en la banda correspondiente y mientras an est seleccionado, modificamos suspropiedadesusandolaventanadepropiedadesdelelementoylabarradeformatodetexto.Tambinpodemosabrirotraventanaquenosayudeaalinearycontrolarelaltoyelanchodeloselementosyendoalmen"Window>FormattingTools".

    Ahora agregamos los encabezados de las columnas en las que semostrarn los datos que pasaremos al reporte. Agregamos estosnombresenlabanda"ColumnHeader",lacualserepetirencadapginaantesdemostrarlosdatosdelascolumnas.

    Agregaremos las columnas "Nombre", "Usuario", "Contrasea", y "Comentarios". Por lo que nuevamente arrastramos unelemento"StaticText" para cada una de las columnas. Tambin podemos ajustar el alto de esta banda para que se ajuste al denuestrotexto,yaseamovindoladirectamenteeneldiseador,odesdelaventanadepropiedades:

    Nuestroreporteyacasiestterminado,ahorasolonosquedaagregarloscamposenlosquesemostrarnlosdatosquepasaremosalreporteenunmomento.Paraqueestoscampospuedanser reemplazadosporel valor realesnecesarioqueusemos lasexpresiones

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 6/26

    (textodinmico)delasquehablanteriormente.Paraestodefiniremosun"field"paracadaunodeloscamposquequeramosmostrar(enestecasosernlosmismoscamposparalosquedefinimoslascabecerasdelascolumnas).

    Losfieldsdebendefinirseantesdepoderserusados.Estadefinicinincluyeelnombredelfieldysutipo.Losfields(ascomoelrestode lasexpresiones)sedefinenen laventana"ReportInspector"a la izquierdadeldiseadordel reporte.Ahexisteunnodollamado"Fields"queesdondeseencuentranlosfieldsquehemosdefinidoyqueporlotantopodemosusar^^.

    Hacemos clic derecho en el nodo "Fields" de la ventana "Report Inspector". Con esto se abre un men contextual.Seleccionamoslaopcin"AddField"(lanicahabilitada).

    Con esto se agregar un field llamado "field1" que por default es de tipo "java.lang.String". Cambiamos el nombre de estecampopor "nombre" usando la ventana de propiedades. Esto es importante porque donde pongamos este campo ser en donde semuestreelvalordelcamponombredenuestrosobjetosParticipantes.

    Hacemos lomismo para el resto de los campos ("username", "password", "comentarios", "id"). Hay que tener cuidado cuandoagreguemosel field"id".Si recuerdan,en ladefinicinde laclase"Participante" lapropiedad"id"estdefinidacomo"int". Sinembargo,aJasperReportssolopodemospasarleobjetosparaserusadoscomovalores,porloquesernecesariocambiareltipodelaclase("FieldClassenlaventanadepropiedades)a"java.lang.Integer"(aunqueenrealidadnomostraremosel"id"enesteejemplo).

    Ahoradebemos indicarenqupartedenuestro reportequeremosquesemuestren losvalorescorrespondientesa losatributosde losobjetos"Participante"quelepasemos.Paraesosimplementearrastramos losfieldscorrespondientesal lugarenelquequeremosque semuestren (arrastramos el field "nombre" a donde queremos que semuestre el atributo "nombre", el campo "username" endonde queremos que se muestre el atributo "username", etc.) desde el "Report Inspector". Al arrastrar los fields, iReportagregarautomticamenteunencabezadoparaestefield,soloborrenelencabezadoagregado=).

    Estosfieldsloscolocaremosenlabanda"Detail1"lacualserepitecadavezquerecibeunnuevoobjetoycolocasusvaloresenlamismafila(quedarmsclarocuandoejecutemoselejemplo).Alfinal,elreportedebequedardelasiguienteforma:

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 7/26

    Por el momento esto es todo lo que necesitamos hacer en iReport para mostrar este reporte bsico. Hacemos clic en el botn"CompileReport"paracompilarelreporteygenerarsuarchivo".jasper"respectivo.

    Podemosverunavistapreviadelreportehaciendoclicenlapestaa"Preview".Asegrensedeseleccionarel"Emptydatasource"antesdeverelpreview,delocontrariolesaparecerunerrorindicadoqueeldocumentonotienepginas.Alfinaldebenveralgocomoesto:

    Los"nulls"aparecenporquenoserecuperningnvalorquecoincidieraconelnombredeesefieldusandonuestrodatasource(queenestecasoestvaco,locualsolucionaremosacontinuacin).

    RegresamosalNetBeansyahoracrearemosunaclasequeimplementelainterface"JRDataSource"delaquehablantes.Estaclaseserlaqueusaremoscomodatasourceparanuestroreporte,ylaqueregresarlosvalorescorrespondientesacadaunodelosfieldsquecreamosantes.

    Primeroagregamosanuestroproyectolalibreria"JasperReports"quecreamosenelprimertutorialdelaseriedeJasperReports.EnestaocasinnonecesitaremosagregareljarconelDriverdelabasededatos,yaquenousaremosninguna^_^.

    Creamos una nueva clase llamada "ParticipantesDatasource" y hacemos que esta nueva clase implemente la interface"JRDataSource".PodemoshacerqueNetBeans implementedeformaautomticalosmtodosdeestainterface(proporcionandounaimplementacin vaca) presionando las teclas "Alt + Insert" y seleccionando la opcin "Implement Method" en el mencontextualqueseabre.

    Conestoseabrirunaventana llamada"GenerateImplementMethods"en lacualseleccionamos la interface "JRDataSource"paraqueseseleccionendeformaautomticatodossusmtodosyhacemosclicenelbotn"Generate".

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 8/26

    Conestotendremoslosdosmtodosimplementadosyencuyoscuerpossolohabr:

    thrownewUnsupportedOperationException("Notsupportedyet.");

    Ahora agregaremos a nuestra clase un atributo de tipo "java.util.List" llamado "listaParticipantes" que mantendrjustamenteeso:lalistadelosparticipantesdeloscualesmostraremoslosdatosenelreporte.Inicializamosestalistaaunobjetodetipo"java.util.ArrayList",deestaforma:

    privateListlistaParticipantes=newArrayList();

    Tambinagregamosuncontadorllamado"indiceParticipanteActual"detipo"int",queusaremosenseguida,yloinicializamosa"1"unpocomsadelanteexplicarporquestevalor:

    privateintindiceParticipanteActual=1;

    Hastaahoranuestraclasedebeverseas:

    publicclassParticipantesDatasourceimplementsJRDataSource{privateListlistaParticipantes=newArrayList();privateintindiceParticipanteActual=1;publicObjectgetFieldValue(JRFieldjrf)throwsJRException{thrownewUnsupportedOperationException("Notsupportedyet.");}

    publicbooleannext()throwsJRException{thrownewUnsupportedOperationException("Notsupportedyet.");}}

    AhoraimplementaremoselmtodogetFieldValue.EstemtodorecibeunargumentodetipoJRField.Esteparmetronosindicarporculdelos"fields"nosestpreguntandoelreporte.

    En la implementacin de este mtodo regresaremos los valores correspondientes a cada uno de los atributos de nuestros objetos"Participante"conformesevayanpidiendo.Porloqueelmtodoquedaas:

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 9/26

    publicObjectgetFieldValue(JRFieldjrField)throwsJRException{Objectvalor=null;

    if("nombre".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getNombre();}elseif("username".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getUsername();}elseif("password".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getPassword();}elseif("comentarios".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getComentarios();}returnvalor;}

    Donde bsicamente ocurre lo que dije anteriormente: cada vez que el reporte pregunta por el valor de un atributo del objeto"Participante" actual (al que hace referencia el contador "indiceParticipanteActual") se regresa el valor correspondiente.EstapeticinsehaceenbasealnombredelfieldquecreamosdesdeiReport.

    Ahoratalvezseestnpreguntandoenqumomentoseincrementaelcontador?,ocmosabeJasperReportcuntosparticipantesexisten?Puesbien,ambascosasocurrengraciasalaimplementacindelmtodo"next()".

    publicbooleannext()throwsJRException{return++indiceParticipanteActual

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 10/26

    publicclassParticipantesDatasourceimplementsJRDataSource{privateListlistaParticipantes=newArrayList();privateintindiceParticipanteActual=1;

    publicObjectgetFieldValue(JRFieldjrf)throwsJRException{Objectvalor=null;

    if("nombre".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getNombre();}elseif("username".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getUsername();}elseif("password".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getPassword();}elseif("comentarios".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getComentarios();}

    returnvalor;}

    publicbooleannext()throwsJRException{return++indiceParticipanteActual

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 11/26

    publicclassMain{publicstaticvoidmain(String[]args)throwsException{ParticipantesDatasourcedatasource=newParticipantesDatasource();

    for(inti=1;i

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 12/26

    ListlistaPariticipantes=newArrayList();

    for(inti=1;i

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 13/26

    PublicadoporAlexen20:57

    Reacciones: divertido (0) interesante (2) increible (0) no me gusta (0)

    Etiquetas:ireports,jasperreports,java,reportes

    Elcualesidnticoalreportegeneradoconlaclase"ParticipantesDatasource".

    Yconestovemosquegraciasalaclase"JRBeanCollectionDataSource"noesnecesarioqueproporcionemosnuestrapropiaclasequeimplementelainterface"JRDataSource",porloquelageneracindereportesesanmssimple^^.

    Bien,estoestodoporahora.Esperoqueestepostlesseadeutilidad.

    En el siguiente tutorial hablar de cmo funcionan los parmetros y las variables enJasperReport, para lo cual haremos uso delreportequeacabamosdecrear.

    Graciasatodosynoolvidendejarsusdudas,comentarios,ysugerencias.Todoesbienvenido.

    Saludos.

    Descargalosarchivosdeestetutorialdesdeaqu:

    ReporteconDatasourcePropio

    EntradasRelacionadas:

    Parte1:ReportesconConexinaBasesdeDatosParte3:ParmetrosyVariablesParte4:ReportesenaplicacioneswebParte5:GrficasenReportesParte6:GruposParte7:Subreportes

    +8 Recomendar esto en Google

    Respuestas

    Responder

    74comentarios:

    anthe 12deabrilde2009,17:03

    Amigomepodriasayudar,coneltemaderealizarunaconeccionconhibernate,larealizoynoconsigounbuenresultadosoloun"cannotopenconnection",agregeelconectorelpathdondeestaelmapeodelabaseperoparecequealgoestamal,soyneofitaeneltemaynoencuentrounasolucionhelp!!

    Responder

    ProgramadorJava 12deabrilde2009,18:03

    HolaAnthe.

    Claroquesi,puedoayudarteconmuchogusto.Solonecesitounpocomsdeinformacinsobrequeestshaciendo.Supongoqueestashaciendo uso de un DataSource propio (ya sea implementando la interface JRDataSource o a travs de unJRBeanCollectionDataSource), y queobtienes los datos a travs deHibernate. Estoy en lo correcto?, olo estas haciendodeotraforma?

    Podrasdecirmeenqulneatedaelerror?,ohayformadequesubastucdigoaalgnsitioparapoderrevisarlo?.

    Saludos

    Responder

    Annimo 19deabrilde2009,10:40

    HolaDisculpaparaquesonlos"seters"ylos"geters"??

    SAludosMiguel.

    Responder

    AramSalinas 10deabrilde2013,10:24

    mmmmhserefierealosmtodosrelacionadosalaspropiedades,comoasignarlesunvalor"SET"orecuperarunvalor"GET"deellas.

    saludos!