您好,欢迎访问三七文档
1前言鉴于目前报表开发没有一个统一的规范,每个开发的风格和习惯也不一致,所以动手写了这份报表开发文档,一来有助于统一大家的报表的风格,提供一些常见问题的解决方案,二来方便以后新人的学习使用。本人也是略懂皮毛,有什么错误和不足之处,欢迎大家补充修改。2.报表工具安装解压后运行runqian-v4.5.5-install.exe安装文件,按引导完成安装。其中,在初次打开报表文件和发布报表文件的时候(后续会提到),会提示我们需要lic文件,就是下图中的两个lic文件。Figure13.报表工具的使用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个“?”Figure12Figure133-5发布报表完成报表的设计之后,点击右上方的“发布报表”,可以将报表发布到指定路径中。再点击Internet图标,就可以在网页中查看报了。Figure144.常见问题及解决方案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人与人之间的距离虽然摸不着,看不见,但的的确确是一杆实实在在的秤。真与假,善与恶,美与丑,尽在秤杆上可以看出;人心的大小,胸怀的宽窄,拨一拨秤砣全然知晓。人与人之间的距离,不可太近。与人太近了,常常看人不清。一个人既有优点,也有缺点,所谓人无完人,金无赤足是也。初识时,走得太近就会模糊了不足,宠之;时间久了,原本的美丽之处也成了瑕疵,嫌之。与人太近了,便随手可得,有时得物,据为己有,太过贪财;有时得人,为己所用,也许贪色。贪财也好,贪色亦罢,都是一种贪心。与人太近了,最可悲的就是会把自己丢在别人身上,找不到自己的影子,忘了回家的路。这世上,根本没有零距离的人际关系,因为人总是有一份自私的,人与人之间太近的距离,易滋生事端,恩怨相随。所以,人与人相处的太近了,便渐渐相远。人与人之间的距离也不可太远。太远了,就像放飞的风筝,过高断线。太远了,就像南徙的大雁,失群哀鸣。太远了,就像失联的旅人,形单影只。人与人之间的距离,有时,先远后近;有时,先近后远。这每次的变化之中,总是有一个难以忘记的故事或者一段难以割舍的情。有时候,人与人之间的距离,忽然间近了,其实还是远;忽然间远了,肯定是伤了谁。人与人之间的距离,如果是一份信笺,那是思念;如果是一个微笑,那是宽容;如果是一句问候,那是友谊;如果是一次付出,那是责任。这样的距离,即便是远,但也很近。最怕的,人与人之间的距离就是一句失真的谗言,一个不屑的眼神,一叠诱人的纸币,或者是一条无法逾越的深谷。这样的距离,即便是近,但也很远。人与人之间最美的距离,就是不远不近,远中有近,近中有远,远而不离开,近而不相丢。太远的距离,只需要一份宽容,就不会走得太远而行同陌人;太近的距离,只需要一份自尊,就不会走得太近而丢了自己。不远不近的距离,多像一朵艳丽的花,一首悦耳的歌,一首优美的诗。人生路上,每个人的相遇、相识,都是一份缘,我们都是相互之间不可或缺的伴。人与人之间的距离虽然摸不着,看不见,但的的确确是一杆实实在在的秤。真与假,善与恶,美与丑,尽在秤杆上可以看出;人心的大小,胸怀的宽窄,拨一拨秤砣全然知晓。人与人之间的距离,不可太近。与人太近了,常常看人不清。一个人既有优点,也有缺点,所谓人无完人,金无赤足是也。初识时,走得太近就会模糊了不足,宠之;时间久了,原本的美丽之处也成了瑕疵,嫌之。与人太近了,便随手可得,有时得物,据为己有,太过贪财;有时得人,为己所用,也许贪色。贪财也好,贪色亦罢,都是一种贪心。与人太近了,最可悲的就是会把自己丢在别人身上,找不到自己的影子,忘了回家的路。这世上,根本没有零距离的人际关系,因为人总是有一份自私的,人与人之间太近的距离,易滋生事端,恩怨相随。所以,人与人相处的太近了,便渐渐相远。人与人之间的距离也不可太远。太远了,就像放飞的风筝,过高断线。太远了,就像南徙的大雁,失群哀鸣。太远了,就像失联的旅人,形单影只。人与人之间的距离,有时,先远后近;有时,先近后远。这每次的变化之中,总是有一个难以忘记的故事或者一段难以割舍的情。有时候,人与人之间的距离,忽然间近了,其实还是远;忽然间远了,肯定是伤了谁。人与人之间的距离,如果是一份信笺,那是思念;如果是一个微笑,那是宽容;如果是一句问候,那是友谊;如果是一次付出,那是责任。这样的距离,即便是远,但也很近。最怕的,人与人之间的距离就是一句失真的谗言,一个不屑的眼神,一叠诱人的纸币,或者是一条无法逾越的深谷。这样的距离,即便是近,但也很远。人与人之间最美的距离,就是不远不近,远中有近,近中有远,远而不离开,近而不相丢。太远的距离,只需要一份宽容,就不会走得太远而行同陌人;太近的距离,只需要一份自尊,就不会走得太近而丢了自己。不远不近的距离,多像一朵艳丽的花,一首悦耳的歌,一首优美的诗。人生路上,每个人的相遇、相识,都是一份缘,我们都是相互之间不可或缺的伴。
本文标题:润乾报表入门
链接地址:https://www.777doc.com/doc-7272227 .html