Feeds de los foros

En la página principal de los foros encontrarás los enlaces al logo feed feed general y al de cada uno de los foros.

Subscribete para mantenerte informado de los cambios y responde a las dudas siempre que te sea posible

Buscar en el foro

Foro J2SE

feed Foro J2SE Foro: J2SE

Nuevo Tema Nuevo Tema

imprimir con JasperReports 10/07/2009 11:24
lechon

Hola a tod@s.

Estoy realizando unos informes (Facturas ) que seran impresos con JasperReports. Para crearlos he utilizado iReport, hasta ahí todo correcto. Mi problema reside en que ahora solo imprimo un informe cada vez, pero me han pedido que pueda imprimir diversos informes a la vez. 

Tal y como lo tengo montado cuando relleno el archivo .jasper realizo la siguiente llamada:

JasperFillManager.fillReport(jasperReport, hashMap , conexion); 

En ella le paso  el archivo compilado (jasperReport),  un HashMap con el parametro (con el id de la factura) que indica que factura voy a imprimi y por último una conexion JDBC.

En el iReport he creado una consulta que recibe como parametro el parametro que envio con el hashMap y de ahi realiza la impresión de la factura que quiero.

 Como lo puedo hacer o como tengo que crear el informe para que pueda enviarle diferentes parametros y que los imprima todos.

Por si es de interes estoy utilizando hibernate, lo comento por si hay alguna posiblidad de combinar estas dos tecnologias.

Un saludo

#unapprove_message#
RE: imprimir con JasperReports 10/07/2009 12:10
jtristan

No lo he probado nunca, pero a los parámetros puedes pasarle una colección. Si usas en el where un in (${parameter}) no sé si el te compondrá por defecto bien la sql.

Si no, en un string, le puedes pasar la cadena de ids con el formato para el in:

WHERE id_factura IN ( (${ids})

y que ids = ' 12,15,87,95'.

 

Un saludo.

#unapprove_message#
RE: imprimir con JasperReports 10/07/2009 13:39
Marioko

hola lechon, independientemente de como tengas hecho el reporte, puedes fusionar varios en un solo documento e imprimirlos juntos.

cuando haces: 

JasperFillManager.fillReport(jasperReport , hashMap , conexion);  

se retorna un objeto JasperPrint, ese objeto tiene un metodo que se llama addPages que te permite agregar otro JasperPrint (otra hoja que puede ser de otro reporte). Entonces podrias hacer algo asi:

 
JasperPrint mainReport=null; 
 
for(.. las facturas..){
        ; JasperPrint factura = JasperFillManager.fillReport...
        ;   if(mainReport==null){
        ;       mainReport =factura;
        ;   }else{
        ;       mainReport .addPages(factura);
        ;  }
}
 

Al final tendras el JasperPrint mainReport con todas las facturas que necesites, este objeto es el que mandaras al JasperPrintManager y listo. La ventaja de todo eso es que puede tener varios tipos de reportes en un solo documento. Por ejempo facturas, graficas,etc,etc,etc.

#unapprove_message#
RE: RE: imprimir con JasperReports 10/07/2009 13:51
jtristan

Muy buen aporte Marioko, la verdad que el poder añadir varios tipos de informes a uno es algo realmente útil. Me viene genial.

Muchas gracias.

#unapprove_message#
RE: imprimir con JasperReports 10/07/2009 16:54
anonymous

  Ufffff, Marioko que grande ese mainReport .addPages(factura);

   A mi me ha tocado hacer algo parecido, sacar un report principal varias veces (por ejemplo, un informe con todas las facturas del mes). Lo que hicimos fue hacer que el report principal  fuera otro (sacaría todas los registros de facturas) y que cargara somo subreport al que antes era report principal (el informe de cada factura).

   Ahora tengo la duda. ¿Cual de las 2 formas es más eficiente? Saludos.

   Juankar!

#unapprove_message#
RE: imprimir con JasperReports 10/07/2009 17:21
lechon

Muy grande tu esplicación Marioko. La verdad es que lo que necesitaba era eso poder ir añadiendo las facturas e imprimirlas todas de un tiron.

 

Gracias por vuestra rapida ayuda. 

Un saludo!!

#unapprove_message#
RE: RE: imprimir con JasperReports 10/07/2009 23:21
lechon

Un aporte que me he encontrado probando el codigo.

  JasperPrint mainJasper = null;
  Iterator iter = lista.iterator();
  while (iter.hasNext()){

       ................
      JasperPrint jasperPrint = JasperFillManager.fillReport("reports/ReportFacturar.ja sper", mapa, conexion);
       if(mainJasper==null){
         &nbs p;  mainJasper = jasperPrint;
       }else{
         &nbs p;   mainJasper.addPage(jasperPrint.removePage(0));
         }
     }

 JasperPrintManager.printReport(mainJasper, true);

El metodo  .addPage reibe un JRprintReport  que no un JasperPrint. La unica opción que he visto para corregir eso ha sido utilizar el metodo  .removePage(0); para poder pasarle un JRprintReport en vez de un JasperPrint. 

 

#unapprove_message#
RE: imprimir con JasperReports 11/07/2009 03:22
Marioko

muy cierto lechon esa parte se me habia olvidado, pero en vez de utilzar el removePage, mejor utilza el jasperPrint.getPages() que retorna una lista  de JRPrintPage con todas las paginas, eso es porque es muy posible que una factura tenga mas de una pagina. Entonces el codigo final quedaria asi:

while(...){ 
   JasperPrint jasperPrint = JasperFillManager.fillReport..
   if(mainJasper==null){
     mainJasper& nbsp;= jasperPrint;
   }else{
     List pages = jasperPrint.getPages();
     for(Object page : pages){
        ;   mainJasper.addPage((JRPrintPage)page);
     }
   }
}
#unapprove_message#
RE: imprimir con JasperReports 15/07/2009 00:11
lechon

Correcto, es posible que una factura tenga mas de una página.

Ya he tomado nota de esta última aportación, muchas gracias Marioko por tu colaboración.

 Un saludete!!! ;)

 

#unapprove_message#
RE: imprimir con JasperReports 15/07/2009 02:08
rostro247

Hola muy buenas tardes a todos soy nuevo en este foro y me gustaria saber si me podrian hechar una manilla. mi problema es el sig.he desarrollado un sistema de punto de venta, pero necesito imprimir las facturas con jasper reports , la cuestion de la generacion de las facturas es correcto ya las logro generar, el problema radica en los totales de la factura , ya que realizo los calculos a  traves de unas variables que muestro en la seccion del summary, pero dependiendo del numero de registros k tenga mi factura es el lugar en donde me acomoda los totales, y yo deseo k dichos totales siempre aparescan en la parte inferior de la factura, alguna sugerencia? muchas gracias

#unapprove_message#
#thread_expired#.
Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano