【问题标题】:Use value returned from main dataset in sub dataset of iReport在 iReport 的子数据集中使用从主数据集返回的值
【发布时间】:2020-12-23 08:22:51
【问题描述】:

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

主数据集返回如下内容。 (总是只有一条记录返回)

CustomerName     JobID
John             123,146

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

Select * from JOB where jobId in (123,146)

我需要使用从主数据集返回的123,146 表单值。

我怎样才能做到这一点?

我的尝试

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

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

将子数据集查询更新为

Select * from JOB where $X{IN,jobId,p_jobId}

通过这些更改,我遇到了异常。

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

【问题讨论】:

    标签: jasper-reports subreport


    【解决方案1】:

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

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

    所以您的查询可能如下所示:

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

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

    【讨论】:

    • 感谢您的回答。我试过类似的东西。但是如何将主数据集值绑定到子数据集参数?在子数据集中创建一个参数为MyParam 并将其用作`$X{IN, jobId, MyParam}`就够了吗?
    • 您可以通过 List 元素将主数据集中的值传递给子数据集。这是一个示例,说明如何使用表格 - community.jaspersoft.com/questions/823038/…。它也与 List 非常相似。
    • 遇到了一些问题。您能否查看更新后的问题以获取更多详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多