集智平台参数模板与页面一起传递参数给报表
集智平台中参数模板的使用可以大大提高报表设计人员设计报表的效率,而且可以直接使用报表自带的jsp对整个报表进行展示,在使用中,客户会有这样的需求,就是不但使用报表自带的参数模板,还需要在系统中得到相应的参数传递给报表进行计算,这样就有很多客户遇到了相应的问题,比如说在报表得不到系统传过来的参数,或者从系统传过来的参数只保存一次,就无法再继续查询了等等,下面就用例子说明了一下这样的报表应该如何制作。
实现思路:将页面参数在jsp中接收后,拼到params中,通过params传递给报表,然后在参数填报表单里得到相应的参数,并且在param标签里使用hiddenParams得到隐藏的参数,这样就可以实现报表的从参数模板和页面得到参数进行查询。
以如下需求为例,每一条记录都有添加这条记录的人员,而每个人员都只能浏览自己录入的记录。人员在登录时记录下了id。
数据库中表结构如下,
设计报表的数据集:
SELECT * FROM testhong1 WHERE (testhong1.nianfen =? or ? is null )and testhong1.pid = ?
其中年份这个参数是从参数模板传递过来的,人员id这个参数是从页面传递过来的。
设计报表:
添加参数并设计参数模板:
用固定的jsp发布报表,修改showreport.jsp
将showreport.jsp重命名为chanliang.jsp,
修改<report:html name=”report1″ reportFileName=”<%=report%>” 为 reportFileName=”chanliang.raq”
修改<report:param name=”form1″ paramFileName=”<%=paramFile%>” 为 paramFileName=”chanliang_arg.raq”
并在 report:param标签中 添加 hiddenParams=”<%=param.toString()%>”
即可,将报表放到应用的jsp目录访问,url里拼接pid这个参数作为传递过来的人员id,
http://127.0.0.1:6001/demo/jsp/chanliang.jsp?pid=1111
由于年份没有传递固定的参数,所以展示是这样的
当输入一个年份时 就能按照这个人和年份进行查询了。
这样,这个功能就可以实现了,这个功能还可以理解为一种权限的控制,就是当此pid为登陆中的session的话就是这个人只能访问自己的信息,无法浏览其他人的信息。