用Jasperreport实现横向分栏报表

⽤Jasperreport实现横向分栏报表
Jasper或BIRT等报表⼯具通常只⽀持纵向分栏,很难实现记录横向摆放并分栏的布局,⽐如下⾯的报表。
东方女郎集算器具有结构化强计算引擎,集成简单,可以协助报表⼯具⽅便地实现此类需求。下⾯通过⼀个例⼦来说明横向分栏的实现过程。
库表emp存储着员⼯信息,EId是员⼯编号。报表需要按编号顺序依次显⽰员⼯编号、姓名、部门,数据横向分三栏,条件为编号的起⽌区间。部分源数据如下:
下⾯⽤集算器将原来的3字段数据转为9字段,代码如下:国家统一法律职业资格考试实施办法
无功功率
A1=myDB1.query(“select EId,Name,Dept from emp where EId>=? and EId<=? order by EId “,begin,end)
这句代码⽤SQL语句从数据库查询数据,begin、end是来⾃报表的参数,表⽰员⼯编号起⽌区间。当begin=4、end=20时,A1的计算结果如下:国家安全委员会成员
女外阴
A2=A1.step(3,1)
这句代码每隔3条记录从A1取出第1条,组成新的⼆维表。函数step的第1个参数是跨度,第2个参数是起始位置,还有第3个参数:从起始位置取出的条数。这⾥省略了第3个参数。A2计算结果如下:
B2、C2以此类推。由于B2、C2可能⽐A2少⼀条记录,因此需要在末尾追加⼀条空记录。运算符“|”表⽰将两个集合纵向合并。当begin=4、end=20时,A2、B2、C2的计算结果依次如下:
A3=A2.derive(B2(#).EId:EId2,B2(#).Name:Name2,B2(#).Dept:Dept2,C2(#).EId:EId3,C2(#).Name:Name3,
C2(#).Dept:Dept3)
迪布韦克这句代码将B2、C2横向拼接在A2上。函数derive表⽰追加新列,可以追加多个,其中B2(#).EId:EId2是第1个新列的表达式,符号“#”表⽰A2中每条记录的⾏号,“B2(#).EId”表⽰取出B2中第#条记录的EId字段,“:EId2”表⽰重命名为EId2。加⼊6个新字段后,A3就是报表需要的最终数据,如下:
result A3
这句代码将A3返回给报表⼯具。集算器对外提供JDBC接⼝,报表⼯具会将集算器识别为普通数据库,集成⽅案请参考相关⽂档。
接下来以JasperReport为例设计⼀张简单报表,模板如下:
需要定义两个报表参数pbegin、pend,分别对应集算器中的两个参数。
报表调⽤集算器的⽅法和调⽤存储过程⼀样,⽐如将本脚本保存为horizontalColumn.dfx,则在JasperReport的SQL设计器中可以⽤call horizontalColumn($P{pbegin},$P{pend})来调⽤。

本文发布于:2024-09-22 22:23:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/363231.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:报表   横向   算器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议