Como ejemplo vamos utilizar el caso de un reporte de facturación que tiene que presentar en el mismo detalle de movimientos, datos que se obtienen de diferentes tablas y diferentes bases de datos ya que son datos que se originan en diferentes sistemas, para lo cual diseñamos un reporte con las siguientes características:
- Reportes Maestro que recibe como parámetros un rango de fechas
- El reporte maestro hace un query a una tabla del que se obtiene el listado de todas las sucursales (Oficinas Corporativas y Sucursales) y lo obtienen usando una conexión a una base de datos Microsoft SQL Server.
- Por cada sucursal se tiene que obtener de una tabla el detalle de facturas generadas el cual se compone de facturas generadas en cada sucursal por ventas al publico en general y en otra tabla de la misma base de datos se obtiene otras facturas generadas por otros conceptos y de otra base de datos de obtienen las facturas de movimientos del corporativo que se generan por un ERP para poder presentar el detalle de estas tres fuentes hacemos lo siguiente:
- Se van crear 3 Sub-reportes cada uno va recibir como parámetros el rango de fechas global y el id de la sucursal
- En el reportes maestro se van crear 3 bandas de detalle y en cada una vamos a colocar uno de los Sub-reportes estos van a ser llamados por cada sucursal desde el reporte maestro:
- En cuanto a la conexión a base de datos en los primeros 2 sub-reportes utilizan la misma conexión a base de datos y por default los sub-reportes utilizan la misma conexión no hay mucho que hacer en estos dos casos :
- En el caso del tercer sub-reporte utiliza una conexión a una base de datos de MySql y se le asigna al sub-reporte a través del connection expression previamente configurado en el iReport en Connection o Datasource con un JDBC;
- Cada uno de los sub-reportes tuvo que ser creado previamente para incluirse dentro del reporte maestro con su propio query, diseño, parámetros y conexión a a base de datos como se muestra a continuación: