2019-10-15
报表
-
首先ctrl+shift+R,先找到报表所在文件夹
-
右键新建报表
-
在如图所示菜单中设置数据集和参数
![img](file:///C:/Users/Administrator.NEU-20160926CDQ/Desktop/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/img/%E9%A3%9E%E9%B8%BD%E6%88%AA%E5%9B%BE20180612165328.png?lastModify=1528793657)
先设置参数:参数为整张报表所需要的所有参数
再设置数据集:这里数据集为报表中所要显示的数据,数据集可以多个
注意:
-
在设置数据集时需要编写sql语句,sql语句查询出的列要有伪列名,伪列为报表中每一个单元格的值
-
当sql语句中有参数时,我们上一步所设置的参数就起作用了,参数书写形式为
$ac01_aac001
select ac01.aac001 aac001,ac02.aae140 aae140,ac02.aac008 aac008,ab01.aab004 aab004 from ac01,ac02,ab01 where ac01.aac001 = ac02.aac001 and ac02.aab001 = ab01.aab001 and ac01.aac001 = $ac01_aac001 and ac02.aae140 = $ac02_aae140
-
-
往报表模板中传入sql语句
按住数据集中的伪列,如AAC001,拖拽到个人编号下(想显示的位置)
选择查询,点击确定,注意:刚画好的报表要发布!
-
接下来就是前台页面,在前台中,报表是附着在html控件上的,因此要在前台中放置html控件
设置html代码
<iframe id="reportiframe" src="" style="height: 480px;width:700px; position: relative;"> </iframe>
在打印报表按钮的点击事件中编写传参的代码,这里我以个人编号和险种类型两个参数为例
var ac01_aac001 = trim(unieap.byId("AC01_AAC001").getValue()); var ac02_aae140 = "41";
接下来就是将查询到的值显示到报表上
document.getElementById(unieap.getRealId("reportiframe")).src = unieap.WEB_APP_NAME+"/Report-ResultAction.do?reportId=d0993d99-3400-4e7e-8dbc-9fb26b645dd4&newReport=true&encode=true&ac01_aac001="+encodeto64(ac01_aac001) +"&ac02_aae140="+encodeto64(ac02_aae140);
还有一种写法:
var reportID="d0993d99-3400-4e7e-8dbc-9fb26b645dd4"; var condition ="&ac01_aac001=" + encodeto64(ac01_aac001) +"&ac02_aae140=" + encodeto64(ac02_aae140); document.getElementById(unieap.getRealId("reportiframe")).src = unieap.WEB_APP_NAME + "/Report-ResultAction.do?reportId=" + reportID + "&newReport=true&encode=true" + condition;
注意:这里
document.getElementById(unieap.getRealId("reportiframe")).src
中的id不同于标准的js写法
报表的一些方法
序号
=seqNum()
自增序列,需要依赖行,比如aac001,有一条aac001就有一个序列号
=get( 'ds1', 'ROWNUM')
随sql语句中rownum产生的序号
=offSet('D4'+1)
这种序号在做分页时,每一页的第一条数据的序号都从1开始