Jasper reports 在Jasper报告中为主表中的每个嵌套表编号

Jasper reports 在Jasper报告中为主表中的每个嵌套表编号,jasper-reports,Jasper Reports,所以我有以下问题。在我的数据库中有一个名为 bp_minutes_app. 此表存储委员会会议记录。每分钟可以由许多文件组成。有关分钟数的数据库设计如下: SELECT bp_minutes_app.submission_date, bp_minutes_attachments.createdby, bp_minutes_attachments.description, bp_files.id, bp_files.name FROM bp_minutes_at

所以我有以下问题。在我的数据库中有一个名为

bp_minutes_app. 
此表存储委员会会议记录。每分钟可以由许多文件组成。有关分钟数的数据库设计如下:

SELECT bp_minutes_app.submission_date,
    bp_minutes_attachments.createdby,
    bp_minutes_attachments.description,
    bp_files.id,
    bp_files.name
FROM bp_minutes_attachments
    left JOIN bp_minutes_app ON
    bp_minutes_attachments.bp_minutes_app_id = bp_minutes_app.id
    AND bp_minutes_app.id = $P{mid}
    left JOIN bp_full ON
    bp_minutes_app.bp_full_app_id = bp_full.id
    left JOIN bp_files ON
    bp_minutes_attachments.bp_file_id = bp_files.id
WHERE
    bp_full.id = $P{id}
表bp_minutes_attachments通过外键连接到bp_minutes_应用程序,并保存以下信息:

description, createdby
桌子

 bp_files
通过外键连接到

bp_minutes_app 
并将文件与其他信息一起保存。我们只想获取文件的名称和id(后者是为了创建文件的超链接,但这超出了本问题的范围)。
最后一句话。所有这些表都链接到主表

bp_full 
仅为获取每个特定报表的id而联接的表

在我的报告中,我想在表格上打印所有分钟和附带的信息(文件名、描述、createdby、提交日期),但要为每分钟单独输入一个条目。为了实现这一点,我首先创建了一个使用以下数据集的表:

SELECT bp_minutes_app.id
FROM bp_minutes_app
    INNER JOIN bp_full ON
    bp_minutes_app.bp_full_app_id = bp_full.id
WHERE bp_full.id = $P{id}
使用此数据集,我检索每个分钟记录。在我的示例中,我得到两条ID分别为39和40的记录。 在这个表中,我嵌套了另一个表来检索每个分钟记录中每个文件的信息。我使用的数据集如下所示:

SELECT bp_minutes_app.submission_date,
    bp_minutes_attachments.createdby,
    bp_minutes_attachments.description,
    bp_files.id,
    bp_files.name
FROM bp_minutes_attachments
    left JOIN bp_minutes_app ON
    bp_minutes_attachments.bp_minutes_app_id = bp_minutes_app.id
    AND bp_minutes_app.id = $P{mid}
    left JOIN bp_full ON
    bp_minutes_app.bp_full_app_id = bp_full.id
    left JOIN bp_files ON
    bp_minutes_attachments.bp_file_id = bp_files.id
WHERE
    bp_full.id = $P{id}
id参数再次用于获取特定报告,mid参数用于获取特定分钟。关于参数规范,mid声明如下:

mid = $F{id}
,其中id是bp_minutes_app.id

按照这个设置,我每分钟都能得到嵌套的表(请原谅我的希腊文标题):

我要做的是根据分钟数/子表数,从1…n开始给每个子表编号。我怎样才能做到这一点?我试图创建一个合适的变量,但没有成功。我想以某种方式将bp_minutes_app记录的计数“保存”到一个参数/变量中,并为每个嵌套的表头处理这个数字,而不是仅仅用相应的id为每个表编号


很抱歉写了这么长的文章,但我对Jasper是新手,我想清楚我已经采取的步骤以及我想要实现的目标。

很多sql在你的文章中没有太多jrxml,所以我从猜测开始

您是否在jrxml中尝试过类似的方法:

<variable name="counter" class="java.lang.Integer" calculation="Count">
    <variableExpression><![CDATA[$F{id}]]></variableExpression>
</variable>

你的文章中有很多sql和jrxml,所以我先猜一下

您是否在jrxml中尝试过类似的方法:

<variable name="counter" class="java.lang.Integer" calculation="Count">
    <variableExpression><![CDATA[$F{id}]]></variableExpression>
</variable>


是,但无论出于何种原因,它都不会产生所需的结果它会产生什么结果?您希望得到什么结果?我希望每个子表都有数字“1,2,…”而不是id。它似乎不起任何作用,因为在重建报告后,我仍然会得到id作为结果。但在文本字段中,您需要引用变量not id,因此$V{counter}起作用。我只需要将主表上的文本字段作为列标题,而不是嵌套的。是的,但无论出于何种原因,它都不会产生所需的结果。它会产生什么结果?您希望得到什么结果?我希望每个子表都采用数字“1,2,…”而不是id。它似乎不起任何作用,因为在重建报告后,我仍然会得到id作为结果。但在文本字段中,您需要引用变量not id,因此$V{counter}起作用。我只需要将文本字段作为列标题放在主表上,而不是嵌套表中。