Jasper reports 在iReport的子数据集中使用从主数据集返回的值

Jasper reports 在iReport的子数据集中使用从主数据集返回的值,jasper-reports,subreport,Jasper Reports,Subreport,我已经用Jaspersoft Studio 6.4.3.final创建了一个报告,其中包含列表元素。我需要在子数据集(列表元素)查询中使用从主数据集返回的值 主数据集返回如下内容。(始终仅返回一条记录) 我需要在子数据集(列表元素)查询中使用JobID,如下所示 Select * from JOB where jobId in (123,146) 我需要使用从主数据集返回的123146表单值 我怎样才能做到这一点 我尝试过的 我在子报表中创建了一个参数,如下所示。 然后将相关字段从主报表绑定

我已经用
Jaspersoft Studio 6.4.3.final
创建了一个报告,其中包含
列表元素
。我需要在子数据集(列表元素)查询中使用从主数据集返回的值

主数据集返回如下内容。(始终仅返回一条记录)

我需要在子数据集(列表元素)查询中使用
JobID
,如下所示

Select * from JOB where jobId in (123,146)
我需要使用从主数据集返回的
123146
表单值

我怎样才能做到这一点

我尝试过的

我在子报表中创建了一个参数,如下所示。

然后将相关字段从主报表绑定到子报表参数,如下所示。

将子数据集查询更新为

Select * from JOB where $X{IN,jobId,p_jobId}
有了这些变化,我就变得异常了

in中使用的参数p_jobId的类型java.lang.String无效 条款该值必须是数组或集合


您可以将主数据集返回的值作为参数传递给List元素,并在子数据集中使用它

如果是多值参数,则可以在子数据集查询中使用$X表示法

因此,您的查询可能如下所示:

Select*from JOB,其中$X{IN,jobId,MyParam}


其中MyParam是子数据集参数名称。

谢谢您的回答。我试过类似的方法。但如何将主数据集值绑定到子数据集参数?在子数据集中创建一个名为
MyParam
的参数,并将其用作“$X{in,jobId,MyParam}”就足够了吗?您可以通过List元素将值从主数据集传递到子数据集。下面是一个示例,说明如何使用表来实现这一点-。这与列表也非常相似。有一些问题。请查看更新的问题以了解更多详细信息。
Select * from JOB where $X{IN,jobId,p_jobId}