4.0.Crear un Subreport

Un subreport podría compararse a la opción de los formularios de vista detalle.

Con un par de imágenes se entenderá.

Tenemos la vista grid con un poco de información de los clientes y al clickar para ver

 
la vista detalle podemos ampliar la información que teníamos del cliente.


Para que se entienda, sería ver desde un informe otro que contiene datos relacionados con el primero, más o menos como en los formularios.

 
Vamos a empezar realizando un ejemplo muy simple.
 
Nos crearemos dos informes uno que contendrá los grupos de clientes y otro que tendrá los clientes. Lo que haremos será que cuando lanzemos el informe de grupos de clientes si presionamos sobre un grupo de clientes, automáticamente se nos abrirá el informe con los clientes que pertenecen a dicho grupo.

Los pasos a seguir son muy simples, deberemos tener un proyecto con los informes que deseamos enlazar.

 

Muy importante: Los informes que se desean enlazar deben estar en el mismo proyecto.

Estos dos informes que he realizado son muy simples, están basados en las queries CustTableSRS y CustGroupSRS.

Os muestro los informes para que veais como son cada uno de ellos.




 

 
 
 
Bien, ahora que tenemos los dos informes tenemos que enlazarlos de alguna manera.
Si lanzamos el informe CutGroup y queremos enlazarle el informe CustTable tendremos que crearle algún parámetro para enlazarlos, lo más lógico sería enlazarlos por el grupo de clientes.
Si miramos los campos disponibles en las queries que serán los que tendremos en los datasets del informe lo podemos entender.
 
 
Sobre el informe al que queremos agregarle un filtro le añadiremos un parámetro. En este caso de tipo string.
 
Nota importante: Si el campo por el que deseamos filtrar ya nos aparece en los parámetros porque la query ya lo tenía, no hace falta agregarle otro igual, en caso de que lo hagamos no se enlazaran bien los informes.
 
Yo al utilizar la query CustTableSRS ya contiene el campo CustGroup como rango para filtrar así que no he tenido que crear dicho parámetro.
En caso de no ser así, se debería haber creado el parámetro y un filtro en el diseño, cosa que ya os mostraré más adelante.
 
 

 
Bien, ya lo tenemos todo preparado para enlazar los informes. Ahora ¿Cómo los enlazamos?
 
Lo que haremos será crearle al campo CustGroup del informe CustGroup una acción Report Drill Throught.
 
Nos situaremos encima del campo en el nodo diseño y con el botón derecho del ratón le agregaremos la acción.
 
 
 
 En las propiedades de la acción que acabamos de crear le debemos indicar que diseño debemos abrir al realizar la acción.
Por supuesto, seleccionaremos el diseño de la custTable.
El formulario nos muestra todos los informes del proyecto por eso os comentaba antes que los informes a enlazar debían estar en el mismo proyecto.
 
 
Una vez seleccionado el que nos interesa, automáticamente a la acción Report Drill se le agregaran todos los parámetros del informe de la CustTable.
 
Esto es debido a que al enlazarlos le deberemos indicar el valor que debe tomar cada parámetro del informe CustTable.
 
 
 
El siguiente paso será indicarle a cada parámetro el valor que se le pasará al informe CustGroup. 
 

 
 
Para los parámetros de sistema le asignaremos el mismo valor que los parámetros de informe custGroup.
 
Con la siguiente imagen tal vez se entienda mejor.
 
 
Nosotros lanzaremos el informe CustGroup y en el momento que clickemos sobre el campo custGroup, en el informe mostrado por pantalla, lo que hará por detrás será ir pasándole todos los parámetros al informe custTable, por eso estamos asignándolos uno por uno.
Si nuestro informe custGroup se ha lanzado con el idioma español es lógico pensar que el custTable tendrá ese mismo idioma.
Por eso para los parametros de sistema le asignamos los mismos que el custGroup , pero para el parámetro custGroup será diferente, para este caso le indicareos que tome el valor del campo custGroup.
 

 
 
Con esto lo que conseguiremos es que mientras se muestre nuestro informe por pantalla de grupo de clientes, si  clickamos sobre un grupo de cliente se le pasaran todos estos parámetros al informe CustTable y como custGroup el que hayamos clickado.
 
Para poder probarlo deberemos implementar la solución en Ax ya que desde visual esta función no funciona.
 
Ahora si lanzamos el informe desde Ax cuando nos situemos encima del campo grupo de clientes el icono de nuestro ratón cambiará de forma.
 
 
Al clickar sobre éste, se nos abrirá el informe de clientes filtrado por el valor sobre el que hayamos clickado.
 

 

Comentarios