Foros del Web » Programación para mayores de 30 ;) » Java »

Subreport JRDataSource

Estas en el tema de Subreport JRDataSource en el foro de Java en Foros del Web. Hola a todos es mi primera consulta en este foro, aunque llevo unos dias leyendo respuestas. Primero gracias a todos los que colaboran en este ...
  #1 (permalink)  
Antiguo 30/11/2007, 05:45
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Subreport JRDataSource

Hola a todos es mi primera consulta en este foro, aunque llevo unos dias leyendo respuestas. Primero gracias a todos los que colaboran en este foro.

Ahi va mi problema:

Necesito generar un informe con 3 subinfome utilizando JRDataSource.

Lo he conseguido hacer funcionar en el ireport. Pero cuando paso el desarrollo a mi aplicacion (una Webdynpro corriendo sobre un portal SAP) me genera el report principal pero sin los subreport.
Explicaré como lo he conseguido en el ireport, por si a alguien le sirve de algo:

Creo 4 informes separados 1 que me servira como reportMaster y 3 como Subreport.

La ruta a los subreport, se la paso como un "Field" mas de la clase principal o como parametro siempre de tipo "String" y de las dos formas funcionan, los datos para llenar los subinformes se los paso con un "Field" mas de la clase principal pero de tipo Object, donde a ese objeto le he cargado un "new JRBeanCollectionDataSource( ArrayList reportRows)" y de igual modo con el resto de subinformes. Ahi va el codigo de las clases java que he creado para hecerlo funcionar en el Ireport:


public static Object generaOperadores(){
Object operadores=null;
ArrayList ope=new ArrayList();
InputStream imagen=null;
try{
imagen=new BufferedInputStream(new FileInputStream("C:\\Documents and Settings\\jnunez\\Escritorio\\logo.jpg"));
ope.add(new Operadores("empresa1","rotulo1","actividad1","supe rficie1","renta1",imagen));
ope.add(new Operadores("empresa22","rotulo22","actividad22","s uperficie22","renta2",imagen));
ope.add(new Operadores("empresa3","rotulo22","actividad22","su perficie22","renta2",imagen));
ope.add(new Operadores("empresa4","rotulo224","actividad22","s uperficie22","renta2",imagen));
ope.add(new Operadores("empresa5","rotulo22","actividad22","su perficie22","renta2",imagen));
ope.add(new Operadores("empresa6","rotulo22","actividad22","su perficie22","renta2",imagen));
operadores=new JRBeanCollectionDataSource(ope);

}catch(Exception e){
e.printStackTrace();
}


return operadores;
}
public static Object generaAtipicos(){
Object atipicos=null;
ArrayList ati=new ArrayList();
InputStream imagen=null;
try{
imagen=new BufferedInputStream(new FileInputStream("C:\\Documents and Settings\\jnunez\\Escritorio\\logo.jpg"));
ati.add(new Atipicos("maquinas","secur","julian mengano","123123","09870987",imagen));
ati.add(new Atipicos("maquinas22","secur22","julian22 mengano","222123123","22209870987",imagen));
ati.add(new Atipicos("maquinas33","secur33","julian mengano33","12312334","09870987",imagen));
ati.add(new Atipicos("maquinas44","secur44","julian22 mengano44","222123123","22209870987",imagen));
atipicos=new JRBeanCollectionDataSource(ati);

}catch(Exception e){
e.printStackTrace();
}


return atipicos;
}
public static Object generaServicios(){
Object servicios=null;
ArrayList ser=new ArrayList();
InputStream imagen=null;
try{
imagen=new BufferedInputStream(new FileInputStream("C:\\Documents and Settings\\jnunez\\Escritorio\\logo.jpg"));
ser.add(new Servicios("tipoServicio","empresa","912345678","90 1876234","perContac","fechaFin","perioPre","frecSe rvi","precio",imagen,"duracion"));
ser.add(new Servicios("tipoServicio23","empresa32","tlf23","fa x23","perContac32","fechaFin23","perioPre23","frec Servi23","precio32",imagen,"duracion"));
ser.add(new Servicios("tipoServicio2","empresa2","tlf2","fax2" ,"perContac2","fechaFin2","perioPre2","frecServi2" ,"precio2",imagen,"duracion"));
ser.add(new Servicios("tipoServicio22","empresa22","tlf22","fa x22","perContac22","fechaFin22","perioPre22","frec Servi22","precio22",imagen,"duracion"));
servicios=new JRBeanCollectionDataSource(ser);

}catch(Exception e){
e.printStackTrace();
}


return servicios;
}

public static Collection rellenaColeccion()
{
ArrayList reportRows = new ArrayList();
InputStream imagen=null;
String imagenn="";

Object operadores=generaOperadores();
Object atipicos=generaAtipicos();
// Object atipicos=null;
// Object operadores=null;
Object servicios=generaServicios();
// Object servicios=null;
String subOperadores="C:\\Documents and Settings\\jnunez\\Escritorio\\DOCU-SAP\\operadoresSubreport.jasper";
String subServicios=".\\serviciosSubreport.jasper";
String subAtipicos=".\\atipicosSubreport.jasper";
try{

imagen=new BufferedInputStream(new FileInputStream("C:\\Documents and Settings\\jnunez\\Escritorio\\logo.jpg"));
imagenn="C:\\Documents and Settings\\jnunez\\Escritorio\\logo.jpg";
}catch(Exception e){
e.printStackTrace();
}
reportRows.add(new CabeceraReSub("nombre","direccion","cp","provincia ","propietario","porcentaje","sociedad","responsab le","tlf","fax","fechaApertura","superficieTotal", "superficieBruta","parcelas","numComercio","mixCom ercial","numPlantComercial","numPlantAparca","numP lantAparcaInt","numPlantAparcaExt","conUtil","aflu encia","presupuesto","horarioSemana","horarioFin", "presupuestoTotal","superficieAlqui","gerente",ima genn, operadores,atipicos,servicios,subOperadores,subAti picos,subServicios));


return reportRows;

}[/HTML]

La conexion creada para que el ireport rellene el informe principal con lo 3 subinformes le indico que use la funcion "rellenaColeccion".

Las clases "Operadores", "Atipicos","Servicios" son unas clases normales en java con sus atributos y sus metodos getr y set y su contructor.

y la clase "CabeceraReSub" es lo mismo ahi va el constructor (no pongo los get y set y los atributos por falta de espacio).




public CabeceraReSub(
String nombre,
String direccion,
String cp,
String provincia,
String propietario,
String porcentaje,
String sociedad,
String responsable,
String tlf,
String fax,
String fechaApertura,
String superficieTotal,
String superficieBruta,
String parcelas,
String numComercio,
String mixComercial,
String numPlantComercial,
String numPlantAparca,
String numPlantAparcaInt,
String numPlantAparcaExt,
String conUtil,
String afluencia,
String presupuesto,
String horarioSemana,
String horarioFin,
String presupuestoTotal,
String superficieAlqui,
String gerente,
String imagen,
Object operadores,
Object atipicos,
Object servicios,
String subOperadores,
String subAtipicos,
String subServicios){

setNombre(nombre);
setDireccion(direccion);
setCp(cp);
setProvincia(provincia);
setPropietario(propietario);
setPorcentaje(porcentaje);
setSociedad(sociedad);
setResponsable(responsable);
setTlf(tlf);
setFax(fax);
setFechaApertura(fechaApertura);
setSuperficieTotal(superficieTotal);
setSuperficieBruta(superficieBruta);
setParcelas(parcelas);
setNumComercio(numComercio);
setMixComercial(mixComercial);
setNumPlantComercial(numPlantComercial);
setNumPlantAparca(numPlantAparca);
setNumPlantAparcaInt(numPlantAparcaInt);
setNumPlantAparcaExt(numPlantAparcaExt);
setConUtil(conUtil);
setAfluencia(afluencia);
setPresupuesto(presupuesto);
setHorarioSemana(horarioSemana);
setHorarioFin(horarioFin);
setPresupuestoTotal(presupuestoTotal);
setSuperficieAlqui(superficieAlqui);
setGerente(gerente);
setImagen(imagen);
setOperadores(operadores);
setAtipicos(atipicos);
setServicios(servicios);
setSubOperadores(subOperadores);
setSubAtipicos(subAtipicos);
setSubServicios(subServicios);

}[/HTML]



En el ireport Funciona de puta madre, muestra la imagen en todas las paginas( el elemento imagen esta puesto en la banda "page header" sino no se repite en todas las paginas y es de tipo String donde le cargo la ruta del fichero).


Pero luego cuando paso esto ami aplicacion no me rellena los subinformes, y el codigo es practicamentre igual:

Los metodo utilizados para rellenar los subinforme en mi aplicacion son dos (debido ami desesperacion he probado ya de todo);

1 metodo:

parameters.put("OPERADORES","H:\\RecursosPortal\\I nformes\\operadoresSubreport.jasper");
parameters.put("ATIPICOS","H:\\RecursosPortal\\Inf ormes\\atipicosSubreport.jasper");
parameters.put("SERVICIOS","H:\\RecursosPortal\\In formes\\serviciosSubreport.jasper");
parameters.put("IMAGEN","H:\\RecursosPortal\\Infor mes\\logo.jpg");
parameters.put("SUBREPORT_OPERADORES",operadores);
parameters.put("SUBREPORT_ATIPICOS",atipicos);
parameters.put("SUBREPORT_SERVICIOS",servicios);


JasperRunManager.runReportToPdfStream(InputFile,OU TputFile ,parameters, JRDataSource);


2 metodo:

InputStream master=new FileInputStream("H:\\RecursosPortal\\Informes\\fic haExplotacion.jasper");


JasperReport reportMaster=JasperManager.loadReport(master);


JasperPrint impressao = JasperFillManager.fillReport(reportMaster, parameters, dataSource);


JasperExportManager.exportReportToPdfFile(impressa o, "H:\\RecursosPortal\\Informes\\fichaExplotacion.pd f");

Y nada me enseña el pdf pero solo con los datos del report Principal..


Si alguien tiene alguna idea de lo puede estar pasando, se lo agredecere mil:


Gracias de antemano y si alguien quiere hacer funcionar este ejemplo en el ireport, que me de su direccion y le mando todo los archivos(jrxml, jasper , java,class, y demas mierda codificada).


Saludos
  #2 (permalink)  
Antiguo 04/12/2007, 05:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Subreport JRDataSource

Ya esta respondido y solucionado en otro mensaje del mismo nombre.
Salu2
  #3 (permalink)  
Antiguo 21/06/2008, 20:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 37
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subreport JRDataSource

hola porfavor podrias decirme como lo has hecho yo estoy que me rompo la cabeza con sub reportes y no me sale me puedes enviar la solucion te dejo mi correo en caso puedas [email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:28.