我有一个主报告和两个子报告。我正在使用自定义数据源来获取报表内容。但是在jasper studio中预览主报表时,只显示一个子报表(无论哪个子报表先出现)。
为(如)。只显示report1.jrxml,如果删除子报表,则显示report2.jrxml。
<detail>
<band height="250">
<subreport runToBottom="true">
<reportElement positionType="Float" x="0" y="130" width="1960" height="120" uuid="89a9f872-756e-4c82-922d-537cfde30cca"/>
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
<subreportExpression><![CDATA["report1.jrxml"]]></subreportExpression>
</subreport>
</band>
<band height="250">
<subreport runToBottom="true">
<reportElement positionType="Float" x="0" y="90" width="1960" height="120" uuid="892c0849-9532-48cb-94c0-f2e87528232a"/>
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
<subreportExpression><![CDATA["report2.jrxml"]]></subreportExpression>
</subreport>
</band>
</detail>
我已经试用了以下方法:
问题是试图为多个子报表使用相同的数据源。第一个子报表的数据源已耗尽,因此后续子报表没有可用的数据。
解决方案:
您必须使用JRRewindableDataSource倒带数据源
package com.jasper.api;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRRewindableDataSource;
public class RewindableDSWrapper implements JRRewindableDataSource {
private final JRRewindableDataSource ds;
public RewindableDSWrapper(JRRewindableDataSource ds) {
this.ds = ds;
try {
this.ds.moveFirst();
} catch (JRException e) {
e.printStackTrace();
}
}
public boolean next() throws JRException {
return ds.next();
}
public Object getFieldValue(JRField jrField) throws JRException {
return ds.getFieldValue(jrField);
}
public void moveFirst() throws JRException {
ds.moveFirst();
}
}
public void moveFirst() throws JRException {
// provide logic for rewinding datasource
}
<dataSourceExpression><![CDATA[new com.jasper.api.RewindableDSWrapper((JRRewindableDataSource)$P{REPORT_DATA_SOURCE})]]></dataSourceExpression>
还要将包含RewindableDSWrapper类的jar文件添加到Studio中的类路径中。
你好,在我解释我的问题之前,我会告诉你我想回答什么。 我正在尝试创建一个子报告,显示用户的不同收入。一个用户可以收到多次捐赠,出售了多栋房子/房产,赢得了比赛等。所有这些操作都有更多关于他们收到多少钱、缴纳的税款的详细信息,… 现在,我正在尝试在一个细节中显示用户的详细信息(姓名,姓氏,..;)。这行得通。下一个细节带将用于捐赠。我创建了一个子报表,在其中指定了此部分的布局。但是,此子报表所需的数
我有一个使用iReport在jasper报告2.0.4中创建的报告。我有两个子报告。这两个子报告共享相同的jrxml。我在参数中传递jrxml作为子报告的报告表达式。我有这个参数的代码 一切都很好。问题出在两个子报表数据源上 这些子报表的数据源来自作为参数传递的同一个POJOs列表 以下是两个子报表的子报表jrxml代码 第一 第二 您看,这两个子报告具有相同的代码。 奇怪的是,两个子报告显示,但
我正在评估JasperReports和Jaspersoft Studio以便在我工作的公司中使用,我试图构建一个包含来自两个不同数据库的信息的报告。 子报表在我拥有的Vertica数据库中运行如下: 正如所说,他们两个都是分开运行的。 null 我是否可以让子报表在与主报表不同的数据库/数据源中运行查询?
使用的开发IDE:Jaspersoft Studio 我试图使用下面的表达式将主报表数据源用于表数据集,但没有得到任何数据。 请说明如何将数据源从报表传递到表。我对jasper报告很陌生。样品会很有用。 JRXML: Json数据: 我已经添加了我试图加载的JRXML和Json。当我在数据集中传递dataSourceExpression时,我只得到2行,但在源数据中有3行。请帮我解决这个问题
问题内容: 我用相同的数据源调用两个子报表,但是当我打印此报表时,只有我的第一个子报表填充了表格。 这就是我通过报告的方式。 虽然,我已经注意到,如果我像下面那样传递2个不同的对象,则它可以工作(下面对jrxml进行了相关修改),我得到了两个子报表。 这与成为消耗品有关吗? 这是我的主要jrxml 这是我的子报告 进行更改以使其可以使用2个参数 有什么更好的解决方法? 问题答案: 正如您在api中
我目前的技能只能通过使用JRBeanCollectionDataSource(list)作为数据源,在不使用子报表的情况下制作pdf。(数据打印成功) 谁能告诉我如何制作包含多个子报表的pdf报表,主jrxml文件和子报表jrxml文件中应该包含哪些内容,以及java代码中应该包含哪些内容?以及如何使用多个JRBeanCollectionDataSource(列表)?我唯一知道的是使用Map pa