varias valores tablas sumar subreportes reporte por pasar parametros parametro paginas lista jasperreport imagen fields ejemplos consulta condiciones como jasper-reports

jasper-reports - valores - subreportes ireport



MĂșltiples consultas en un solo documento de jaspe (1)

Es posible usar la ejecución de múltiples consultas desde un solo informe mediante el uso de subDataset y datasetRun . El comportamiento es como tener uno o más subinformes incrustados en un único archivo de informe.

Defina un subDataset como este:

<subDataset name="dataset1"> <parameter name="someParam" class="java.lang.String"/> <queryString><![CDATA[SELECT column1, column2 FROM table1 WHERE column1=$P!{someParam}]]></queryString> <field name="column1" class="java.lang.String"/> <field name="column2" class="java.lang.String"/> </subDataset>

Los subdatasets pueden tener parámetros, campos, variables y grupos al igual que un informe. Cada subdataset puede tener su propia consulta y el informe puede tener tantos subdatasets como desee.

Para usar un subdataset, necesita definir un conjunto de datasetRun . Esto solo se puede hacer dentro de elementos particulares: gráficos, tablas cruzadas, tablas y listas. Usaremos una lista ya que se comporta casi exactamente como otra banda de detalles.

Este código define una lista que usa nuestro subdataset:

<componentElement> <reportElement x="0" y="0" width="100" height="40"/> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> <datasetRun subDataset="dataset1"> <datasetParameter name="someParam"><datasetParameterExpression><![CDATA["some value for column 1"]]></datasetParameterExpression></datasetParameter> </datasetRun> <jr:listContents height="40"> <textField> <reportElement x="0" y="0" width="100" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$F{column1}]]></textFieldExpression> </textField> <textField> <reportElement x="0" y="20" width="100" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$F{column2}]]></textFieldExpression> </textField> </jr:listContents> </jr:list> </componentElement>

Algunas notas:

  • El elemento jr:listContents es análogo a un elemento de banda de detalle. Puedes colocar casi cualquier otro elemento dentro.

  • El elemento datasetRun es muy parecido a un elemento subinforme. Puede tener un dataSourceExpression o connectionExpression dentro, lo que cambiará el origen de los datos. Si ninguno de estos está presente, se utiliza el origen de datos del informe.

  • El mismo subDataset puede ser utilizado por muchas bases de datos, por lo que puede ejecutar una consulta varias veces con diferentes parámetros.

Hasta ahora, siempre me ha limitado una cosa con los informes jasper.
Solo puedo escribir una consulta de datos en cada documento.
Cuando necesite escribir otra consulta, debo crear un subinforme, pasar sus parámetros necesarios, etc.

Pero definitivamente no estoy convencido de que sea la mejor manera de hacerlo.

Entonces, ¿hay otra manera de disparar múltiples consultas de datos en un solo documento de jaspe?