为Jasper报告

时间:2015-11-04 13:54:01

标签: jasper-reports

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

的表
bp_minutes_app. 

此表存储委员会会议记录。每分钟可以包含许多文件。关于分钟的数据库设计如下:

表bp_minutes_attachments通过外键连接到bp_minutes_app并保存以下信息:

description, createdby

表格

 bp_files

通过外键连接到

bp_minutes_app 

并保存该文件以及其他信息。我们感兴趣的是只获取文件的名称和id(后者为了创建文件的超链接,但这超出了当前问题的范围)。
最后的评论。所有这些表都链接到主

bp_full 

仅用于获取每个特定报告的ID的表。

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

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。

按照此设置,我设法每分钟获得嵌套表格(原谅我的希腊标题):

enter image description here

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

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

1 个答案:

答案 0 :(得分:0)

很多sql在你的帖子中没有多少jrxml所以我从猜测开始。

您是否在jrxml中尝试过类似的内容:

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