gpt4 book ai didi

jasper-reports - 单个 jasper 文档中的多个查询

转载 作者:行者123 更新时间:2023-12-03 06:13:45 24 4
gpt4 key购买 nike

到目前为止,我一直被 jasper-reports 的一件事所束缚。
我只能在每个文档中写一个数据查询。
当我需要编写另一个查询时,我必须创建一个子报表,传递其所需的参数等等。

但我绝对不相信这是最好的方法。

那么还有另一种方法可以在单个 jasper 文档中触发多个数据查询吗?

最佳答案

可以使用 subDatasetdatasetRun 从单个报告执行多个查询。其行为就像将一个或多个子报表嵌入到单个报表文件中。

定义一个子数据集,如下所示:

<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>

子数据集可以像报表一样具有参数、字段、变量和组。每个子数据集都可以有自己的查询,并且报表可以包含任意数量的子数据集。

要使用子数据集,您需要定义一个datasetRun。这只能在特定元素内完成:图表、交叉表、表格和列表。我们将使用一个列表,因为它的行为几乎与另一个细节带完全相同。

此代码定义了一个使用我们的子数据集的列表:

<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>

一些注意事项:

  • jr:listContents 元素类似于详细信息带元素。您几乎可以在其中放置任何其他元素。

  • datasetRun 元素非常类似于子报表元素。它内部可以有一个 dataSourceExpressionconnectionExpression,这将改变数据的来源。如果这些都不存在,则使用报告数据源。

  • 同一个子数据集可以被多个 datasetRun 使用,因此您可以轻松地使用不同的参数多次运行查询。

关于jasper-reports - 单个 jasper 文档中的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7482412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com