**Ireport制作报表相关小知识**

Ireport制作报表相关小知识
一. 在ireport 使用subreport控件显示数据库查询的记录,每次都是查询出来多少条,它就会重复将所有记录重复打印多少次。例如:数据库有8条数据,它打印预览的时候就会显示8页。但实际上只要1页就可以显示完了。

解决办法:由于在制作主表和子表的时候,主表和子表用的是同一个sql,所以导致主表数据*子表数据=页数的现象。为了能够正常显示所以在主表的sql里面的where语句加上 and rownum=1 进行判断。

二.主表和子表的关联。

1.主表和子表要分别过设定某个唯一识别变量值(例如:YWBH),通过这个变量值传递数据。

2.主表和子表绑定。

3.子表也要设定关联参数。

三.分页问题,当数据过多时,将页面进行翻页。由于刚开始接触Ireport这个软件所以并不是很懂怎么去解决,为了能够实现分页查找了很多办法,但是都没有解决,后面通过请教大佬,才得以解决。分页的话Ireport就自带参数属性(只怪本人英语不好,哈哈哈。)。解决办法,首先你要调整好页面大小,因为Ireport会根据你页面的大小分配多少打印数据,当你调整好后,然后在点击报表名称,修改属性Ignore paginatior ,将这个属性的√去掉,就可以了。

四. Ireport 多项选择判断。例如:根据这个字段YWLXCODE判断是什么类型的清单。
($F{YWLXCODE}.equals(“01”)?“查询”:
$F{YWLXCODE}.equals(“02”)?“动态查询”:
$F{YWLXCODE}.equals(“03”)?“继续动态查询”:
$F{YWLXCODE}.equals(“04”)?“解除动态查询”:
$F{YWLXCODE}.equals(“05”)?“冻结”:
$F{YWLXCODE}.equals(“06”)?“继续冻结”:
$F{YWLXCODE}.equals(“07”)?“解除冻结”:
$F{YWLXCODE}.equals(“08”)?“紧急止付”:“解除止付”)+“清单”

五.印章配置问题。
在制作文书配置印章的时候为了能够知道印章是否能够出现,然后就了解了整个印章审批的流程,主要涉及以下几个表,通过配置这几个表,来实现,但是有一点要注意的是,我们要从关系表里面反向造出数据,不能从文书表里往印章表里做数据(这样子是做不出来的,亲测有效,哈哈)。

b_asj_ws 文书表
b_asj_wsconformityinfo 文书审批表
s_dl_seal 印章表
s_dl_sign_seal 印章签名与文书审批关联关系表
b_asj_dzyzqm_config 电子印章签名配置表

1.在文书表找出新做的文书编号

2.用编号在b_asj_wsconformityinfo表查出WORKITEMSTATE = '4’的记录,
需修改: workitemid字段 与s_dl_sign_seal 表spid字段匹配
ACTIVITYTITLE字段 根据b_asj_dzyzqm_config配置表的bz信息传递ASJ_WS_DZYZ(‘PCS4500201208180000000152492798’,‘WSSPDW’)WSSPDW或SPDW,
如ASJ_WS_DZYZ传递的是WSSPDW,b_asj_dzyzqm_config的bz字段是“局领导”,ACTIVITYTITLE字段要有“局领导”字样 writid是文书id wscode要和文书匹配

3.s_dl_sign_seal 配置
spid 是b_asj_wsconformityinfo表的workitemid
wsid 是b_asj_ws表的writid
sign_id是s_dl_sign表的sign_id 要电子签名的时候用
seal_id是s_dl_seal表的seal_id

六.制作文书的时候一定要和写js的小伙伴对好模板和字段,要不然!!!谨记。哦,对了还有一点是要记得翻译字典,翻译字典这边一定要弄好哪些是字典。

七,字段比较
ireport text判断SUBMITTIME时间表达式:(new Date(“2018/10/26”).compareTo($F{SUBMITTIME})>0?“旧条款”:“新条款”),如果sql没有SUBMITTIME字段,需要自己加上

猜你喜欢

转载自blog.csdn.net/nl_312/article/details/86131041