Jasperreport如何使用函数储存进行筛选过滤当前单元格内容是否可见

近期项目一个需求,需要对子表中多个相同id的记录只展示一个主表的记录。

效果如下:

一个PO、TITLE、ISBN(以下简称PO)代表一条子表的记录,而底下的N.W、MEAS、PLT SIZE(以下简称N.W)则是代表其主表的记录,已知,所有的PO都会有一个N.W,所以你在jasper的detail里书写是,每一条PO都会产生一个N.W依附在下面,就无法实现我们需要的多个相同id的PO只展示同一个N.W,那么这时我们就需要用到函数对子表的id进行缓存。

首先我们创建一个函数previous_mark_id,类型设置为Integer,或者你的id是string类型就设置为string,随后把Increment type选择为Report,计算类型不需要变动,默认即可

随后我们需要创建Group,选中判断是否为同一子表的id,点击下一步创建所需的Header或Footer

把mark_id传入该Group组内,那么该组就会通过这个mark_id进行缓存记录这一个mark_id,最后我们在组内创建需要的Field或StaticText,在Print When Expression中写入把这个mark_id与我们的函数previous_mark_id进行判断,当$F{mark_id}!=$V{previous_mark_id}时,子表所对应的主表记录即可展示,反之不出现。

还有不懂的可以问我哦,我是寻狗师。

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值