润乾报表入门.docx
《润乾报表入门.docx》由会员分享,可在线阅读,更多相关《润乾报表入门.docx(13页珍藏版)》请在冰豆网上搜索。
![润乾报表入门.docx](https://file1.bdocx.com/fileroot1/2023-2/17/0b74904a-22de-43ed-840d-ca7716299399/0b74904a-22de-43ed-840d-ca77162993991.gif)
润乾报表入门
1前言
鉴于目前报表开发没有一个统一的规范,每个开发的风格和习惯也不一致,所以动手写了这份报表开发文档,一来有助于统一大家的报表的风格,提供一些常见问题的解决方案,二来方便以后新人的学习使用。
本人也是略懂皮毛,有什么错误和不足之处,欢迎大家补充修改。
2.报表工具安装
解压后运行runqian-v4.5.5-install.exe安装文件,按引导完成安装。
其中,在初次打开报表文件和发布报表文件的时候(后续会提到),会提示我们需要lic文件,就是下图中的两个lic文件。
Figure1
3.报表工具的使用
3-1配置数据源
使用报表时需要先对数据源进行配置:
Figure2
选择新建一个数据源:
Figure3
项目中默认使用的数据源名称为reportjndi.参考图3进行配置后,点击连接,进行数据源连接,这样就完成了报表服务器与数据库的连接。
3-2新建报表
目前的报表形式分为两部分,一是用来显示查询结果的“报表名.raq”文件,另一个是用来提供查询条件的“报表名_arg.raq”文件。
我们只需要在保存文件的时候,按上述格式命名,打开.raq文件时,会自动打开相关的_arg.raq文件。
3-3结果显示报表设计
首先新建一张报表,直接点击左上角工具栏上的
即可。
按照给定的表样设计好报表名名、列名。
如下图,这里提供一种样式当做参考模板,如客户无特殊需求,希望各开发按照统一的样式标准进行设计,有助于提高所有报表的统一性,后面还会提到一些规范,希望大家也可以遵守起来。
Figure4
报表名这一行,采用黑色、二号字,加粗。
列名采用白色、三号字,加粗,背景色使用淡紫色(颜色相近即可)。
若每一列下面还要分列,则使用黑色、小三号字,结果数据使用黑色、四号字。
Figure5
设定好报表样式后,开始根据逻辑进行取数,设置每一列的宽度时,如果需要在一行中完整显示的,要选择“按单元格内容扩大”,并去掉“自动换行”。
Figure6
报表通过配置的“数据集”进行取数。
点击配置—数据集,新增一个数据集,大部分逻辑,通过sql检索即可完成,若遇到比较复杂的也可以使用存储过程。
Figure7
在“语法”中输入sql语句,获得我们想要的查询结果:
然后在报表中通过数据源名.select(列名),即可获得我们要的数据,select方法还提供了排序等功能,详细用法可以参考安装D:
\develop\安装包\安装包,帮助文档,lic\runqian_helpdoc\使用手册\报表设计\润乾报表4.5用户手册.chm,通过搜索关键字,可以了解相关的功能,开发的时候可以多使用这个手册。
3-4查询条件报表设计
很多时候需要根据一些条件来对数据进行筛选,点击左上角新建报表,选择填报报表,生成一张空白报表,设计好需要的查询条件,例如:
Figure8
在设计的时候需要统一一下样式:
从上往下,每行四个查询条件,黑色小三号字体。
右击查询条件后面的空白格,选择填报属性们可以选择编辑风格,如所属机构、银行大类这些条件,我们一般使用下拉数据集,通过数据集进行取数,可以分别设置显示列和数据列。
Figure9
比较常用的编辑风格包括下拉日历,下拉列表框以及普通的文本编辑框。
通过配置查询条件所在格的WEB变量名,可以在结果报表中通过相同的参数名获得该单元格的数据。
Figure10
在结果报表中,点击配置—参数,配置对应的参数名
Figure11
在这里配置好以后,我们在数据集中也需要配置参数,然后在sql语句中,使用“?
”与该参数进行绑定。
需要注意的是,sql语句中的?
与参数中的参数是按照顺序一一对应绑定的,有几个“?
”就有几个参数,而且对应顺序要一致。
如下图,参数列表中第9,第10个参数为bankid,在sql语句中,对应的刚好也是第9,第10个“?
”
Figure12
Figure13
3-5发布报表
完成报表的设计之后,点击右上方的“发布报表”,可以将报表发布到指定路径中。
再点击Internet图标,就可以在网页中查看报了。
Figure14
4.常见问题及解决方案
4-1分组,排序
经常要对查询结果进行排序和分组,报表工具自带group语法,可以在sql里先用orderby排好序,然后在报表工具里使用group进行分组。
常用的select排序和group排序是:
ds1.select(AAA,false,,BBB),从数据集ds1中获取AAA字段,并根据BBB字段进行排序
ds1.group(AAA,true),把数据集ds1中所有记录按照AAA字段降序排列,然后根据AAA进行分组
对组织进行排序,可以通过org_level和org_id两个条件来排序。
4-2非必填查询条件
有时候查询条件很多,使用的时候往往不是所有的条件都要输入,这时可以在sql的判断中加上or?
isnull。
如图12所示,对非必填的条件,加上or?
isnull,就可以在没有传该条件参数的时候也能查出数据。
(如果条件为多选,设置的数据类型为“字符串组”,这种情况下如果写or?
isnull是会报错的,这里提供一种处理方法:
在绑定参数的时候需要特殊处理,如下图,typecode为多选条件的变量名,第一个变量为正常的字符串组变量,第二个变量特殊处理,如果为null时,赋值‘1’,如果不是,赋值‘2’,这样在sql中判断的时候,只要将or?
isnull改为or?
=’1’即可完成对空值的判断。
这样配置后,对应的sql应该写成and(codein(?
)or?
=‘1’))
4-3组织隔离
需要对查询条件中的“组织机构”下拉框进行数据隔离时,可以这样配置数据集:
SELECTorg_code||'-'||org_namenamecode,org_idfromtsys_organizationtwhereorg_idin(SELECTorg_idFROMtsys_organizationstartwithorg_id=nvl(?
'6000001')
CONNECTBYNOCYCLEPRIORorg_id=PARENT_ID)
ORDERBYorg_code
“?
”表示传进来的expectedorgID,这样就只能选到登录用户所在组织的本级以及下级组织。
4-4是否包含下级
需要这个条件时,查询报表需要添加一个下拉列表框,假设“1”表示“是”,“0”表示“否”,WEB变量名为“includesubs”,设置该单元格不能为空,则默认选择“是”。
在结果报表的sql中,需要判断的字段为t1.orgid,可以参考下面的代码:
and(
(?
isnotnulland((?
='1'andt1.orgidin(SELECTorg_idFROMtsys_organizationSTARTWITHorg_id=?
CONNECTBYNOCYCLEPRIORorg_id=PARENT_ID))or(?
='0'andt1.orgid=?
)))or
(?
isnulland((?
='1'andt1.orgidin(SELECTorg_idFROMtsys_organizationSTARTWITHorg_id=?
CONNECTBYNOCYCLEPRIORorg_id=PARENT_ID))or(?
='0'andt1.orgid=?
)))
)
10个?
对应的参数为:
Figure15
上诉代码的逻辑是:
如果选了“组织”条件,那么是否包含下级就根据这个组织来进行判断,选是,就显示该组织及下级的数据,选否,只显示该组织的数;如果没有选“组织”条件,则以登录用户的组织ID(expectedorgID)作为参考组织。
4-5中文传参乱码和无法分页问题
类似于开户行这类查询条件,由于数据太多,无法做成下拉的形式,就只能通过文本输入进行模糊查询,但是有时候发现报表工具在传中文时会变成乱码。
还有如果对报表进行分页,点下一页时一直会跳转回第一页,只要把showReport.jsp中的isRedirect=1;改为isRedirect=0;即可,这样就不会把中文放在url里去传参了。
4-6分页后列显示不全
分页时,建议选择“按行分页”,然后在报表属性—打印中根据实际情况设定宽度,使一个页面中能显示所有列。
如图
Figure16