润乾报表入门

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 前言
鉴于目前报表开发没有一个统一的规范,每个开发的风格和习惯也不一致,所以动手写了这份报表开发文档,一来有助于统一大家的报表的风格,提供一些常见问题的解决方案,二来方便以后新人的学习使用。

本人也是略懂皮毛,有什么错误和不足之处,欢迎大家补充修改。

2.报表工具安装
解压后运行runqian-v4.5.5-install.exe安装文件,按引导完成安装。

其中,在初次打开报表文件和发布报表文件的时候(后续会提到),会提示我们需要lic文件,就是下图中的两个lic文件。

Figure 1
3.报表工具的使用
3-1 配置数据源
使用报表时需要先对数据源进行配置:
Figure 2选择新建一个数据源:
Figure 3
项目中默认使用的数据源名称为reportjndi.参考图3进行配置后,点击连接,进行数据源连接,这样就完成了报表服务器与数据库的连接。

3-2 新建报表
目前的报表形式分为两部分,一是用来显示查询结果的“报表名.raq”文件,另一个是用来提供查询条件的“报表名_arg.raq”文件。

我们只需要在保存文件的时候,按上述格式命名,打开.raq文件时,会自动打开相关的_arg.raq文件。

3-3 结果显示报表设计
首先新建一张报表,直接点击左上角工具栏上的即可。

按照给定的表样设计好报表名名、列名。

如下图,这里提供一种样式当做参考模板,如客户无特殊需求,希望各开发按照统一的样式标准进行设计,有助于提高所有报表的统一性,后面还会提到一些规范,希望大家也可以遵守起来。

Figure 4
报表名这一行,采用黑色、二号字,加粗。

列名采用白色、三号字,加粗,背景色使用淡紫色(颜色相近即可)。

若每一列下面还要分列,则使用黑色、小三号字,结果数据使用黑色、四号字。

Figure 5
设定好报表样式后,开始根据逻辑进行取数,设置每一列的宽度时,如果需要在一行中完整显示的,要选择“按单元格内容扩大”,并去掉“自动换行”。

Figure 6
报表通过配置的“数据集”进行取数。

点击配置—数据集,新增一个数据集,大部分逻辑,通过sql检索即可完成,若遇到比较复杂的也可以使用存储过程。

Figure 7
在“语法”中输入sql语句,获得我们想要的查询结果:
然后在报表中通过数据源名.select(列名),即可获得我们要的数据,select方法还提供了排序等功能,详细用法可以参考安装D:\develop\安装包\安装包,帮助文档,lic\runqian_helpdoc\使用手册\报表设计\润乾报表4.5用户手册.chm,通过搜索关键字,可以了解相关的功能,开发的时候可以多使用这个手册。

3-4 查询条件报表设计
很多时候需要根据一些条件来对数据进行筛选,点击左上角新建报表,选择填报报表,生成一张空白报表,设计好需要的查询条件,例如:
Figure 8
在设计的时候需要统一一下样式:
从上往下,每行四个查询条件,黑色小三号字体。

右击查询条件后面的空白格,选择填报属性们可以选择编辑风格,如所属机构、银行大类这些条件,我们一般使用下拉数据集,通过数据集进行取数,可以分别设置显示列和数据列。

Figure 9
比较常用的编辑风格包括下拉日历,下拉列表框以及普通的文本编辑框。

通过配置查询条件所在格的WEB变量名,可以在结果报表中通过相同的参数名获得该单元格的数据。

Figure 10
在结果报表中,点击配置—参数,配置对应的参数名
Figure 11
在这里配置好以后,我们在数据集中也需要配置参数,然后在sql语句中,使用“?”与该参数进行绑定。

需要注意的是,sql语句中的?与参数中的参数是按照顺序一一对应绑定的,有几个“?”就有几个参数,而且对应顺序要一致。

如下图,参数列表中第9,第10个参数为bankid,在sql语句中,对应的刚好也是第9,第10个“?”
Figure 12
Figure 13
3-5 发布报表
完成报表的设计之后,点击右上方的“发布报表”,可以将报表发布到指定路径中。

再点击Internet图标,就可以在网页中查看报了。

Figure 14
4.常见问题及解决方案
4-1 分组,排序
经常要对查询结果进行排序和分组,报表工具自带group语法,可以在sql里先用order by排好序,然后在报表工具里使用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 ? is null。

如图12所示,对非必填的条件,加上or ? is null,就可以在没有传该条件参数的时候也能查出数据。

(如果条件为多选,设置的数据类型为“字符串组”,这种情况下如果写or ? is null 是会报错的,这里提供一种处理方法:在绑定参数的时候需要特殊处理,如下图,typecode为多选条件的变量名,第一个变量为正常的字符串组变量,第二个变量特殊处理,如果为null时,赋值‘1’,如果不是,赋值‘2’,这样在sql中判断的时候,只要将or ? is null 改为or ? = ’1’即可完成对空值的判断。

这样配置后,对应的sql应该写成and (code in (?) or ? = ‘1’))
4-3 组织隔离
需要对查询条件中的“组织机构”下拉框进行数据隔离时,可以这样配置数据集:SELECT org_code||'-'||org_name namecode,org_id from tsys_organization t where org_id in(SELECT org_id FROM tsys_organization start with org_id = nvl(? , '6000001')
CONNECT BY NOCYCLE PRIOR org_id = PARENT_ID)
ORDER BY org_code
“?”表示传进来的expectedorgID,这样就只能选到登录用户所在组织的本级以及下级组织。

4-4 是否包含下级
需要这个条件时,查询报表需要添加一个下拉列表框,假设“1”表示“是”,“0”表示“否”,WEB变量名为“includesubs”,设置该单元格不能为空,则默认选择“是”。

在结果报表的sql中,需要判断的字段为id,可以参考下面的代码:
and (
(? is not null and ( (?='1' and id in(SELECT org_id FROM tsys_organization START WITH org_id =?
CONNECT BY NOCYCLE PRIOR org_id = PARENT_ID)) or (?='0' and id=?))) or
( ? is null and ( (?='1' and id in(SELECT org_id FROM tsys_organization START WITH org_id =?
CONNECT BY NOCYCLE PRIOR org_id = PARENT_ID)) or (?='0' and id=?)))
)
10个?对应的参数为:
Figure 15
上诉代码的逻辑是:如果选了“组织”条件,那么是否包含下级就根据这个组织来进行判断,选是,就显示该组织及下级的数据,选否,只显示该组织的数;如果没有选“组织”条件,则以登录用户的组织ID(expectedorgID)作为参考组织。

4-5 中文传参乱码和无法分页问题
类似于开户行这类查询条件,由于数据太多,无法做成下拉的形式,就只能通过文本输入进行模糊查询,但是有时候发现报表工具在传中文时会变成乱码。

还有如果对报表进行分页,点下一页时一直会跳转回第一页,只要把showReport.jsp中的isRedirect=1;改为isRedirect=0;即可,这样就不会把中文放在url里去传参了。

4-6 分页后列显示不全
分页时,建议选择“按行分页”,然后在报表属性—打印中根据实际情况设定宽度,使一个页面中能显示所有列。

如图
Figure 16。

相关文档
最新文档