java开发润乾报表
- 格式:docx
- 大小:881.27 KB
- 文档页数:19
润乾报表V4.0 高级教程北京润乾信息系统技术有限公司第1章序言中国式报表有别于西方报表,中国式报表很复杂!润乾报表是专门用于解决中国式复杂报表的报表工具!润乾报表软件的核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的强关联语义模型、多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,报表设计的效率提高了一个数量级。
润乾报表采用JA V A开发,由两个部分构成:报表设计器和报表服务器。
润乾报表是一个很容易掌握的报表工具,对于复杂的中国式报表,完全不需要编程和复杂sql,只需要学习简单的表达式规则,就可以完成。
为了帮助读者快速掌握润乾报表的非线性模型用法,我们在《快逸报表V4.0入门教程》的基础上编写了这份《润乾报表V4.0高级教程》,希望读者先学习《快逸报表V4.0入门教程》,再来学习这份文档,效果更好。
本教程沿袭《快逸报表V4.0入门教程》的思路,避免复杂的概念,通过由浅入深的实例,深入浅出的讲解,辅以有针对性的练习题,一步一步帮助读者迅速掌握润乾报表的非线性报表模型的理论和操作。
只要你照着本教程去做,半天就可以初步掌握润乾报表。
希望在轻轻松松的过程中,你能很快地掌握非线性报表设计!第2章多源关联分片这份文档的思路,不再强调界面操作上的东西,比如某个按钮在哪里点,某个对话框怎么打开,更多地强调表达式怎么写,模型的原理是啥,表达式的规则是啥,用到的函数等2.1 多层交叉报表2.1.1一个例子我们先看下面这个多层交叉报表:[截图]从上面这个报表可以看出,这是一个多层的交叉报表,上边有两层动态横向扩展的上表头,左边有两层动态纵向扩展的左表头,中间的交叉点进行汇总统计,统计值和上表头、左表头息息相关。
我们看一下这样的报表在润乾报表中是如何设计的:1、首先定义数据集:[列出这个报表用到的数据集及其sql即可]2、写入单元格表达式,如下图所示:[设计界面截图,把格子拉大,表达式尽量看全]从上图可以看出,上表头分别通过[ ]格和[ ]格横向扩展形成,左表头通过[ ]格和[ ]格纵向扩展形成,中间的交叉点利用[sum]函数进行汇总,于是一个多层交叉报表很轻松就完成了。
循序渐进使用润乾报表第一章入门润乾报表3.0是一套专门面向程序开发人员制作复杂报表的工具系统,润乾报表3.0首次成功解决了复杂中国式报表的格式任意性及关系数据库的关联规律性之间的矛盾,使得用户能够方便简捷地制作自动化的任意报表,实现了报与表的完美结合。
润乾报表3.0采用了纯JAVA技术,设计器和运算器均采用JAVA开发,可以运行在任何操作系统下(Windows,Linux,各种UNIX),支持所有有JDBC接口的关系数据库,支持所有J2EE标准的应用服务器。
润乾报表3.0提供报表运算的JAVA类的API调用,可最紧密地和应用程序无缝结合,运算器可采用应用服务器的数据库缓冲池,程序员可自定义参数输入界面与运算器结合。
第一节基本概念单元格我们运行润乾报表编辑器,点击新建报表菜单,即可出现如下界面:我们发现,新建的报表由行列整齐的格子组成,这些格子我们称为单元格,所有的单元格组成了报表。
合并单元格我们选中一片连续的单元格区域,点击合并单元格菜单,就把这些被选中的单元格合并成了一个单元格,如下图所示,这个合并出来的新单元格称为合并单元格单元格数据类型我们选中一个单元格,在窗口右边的属性列表中,点击数据类型的属性值下拉箭头,即可看到下拉选项,分别有文字、统计图、图片字段、图片文件,如下图所示。
也就是说,单元格里的内容可以是文字、也可以是图片,图片内容可以来自文件,也可以来自数据库中的字段,还可以是统计图单元格属性的属性值和表达式在单元格的属性列表中,大家看到,每个属性都有属性值和表达式两种,这两种有什么区别呢?首先,属性值和表达式是互斥的,定义了属性值,就不必定义表达式,定义了表达式,就不必定义属性值。
其次,属性值是在编辑报表时就写死了的,在报表运行时不必经过运算,也不会被改变。
例如:你在单元格的背景色的属性值中定义了红色,那么报表运行时,它就是红色,不会被运算,不会被改变。
而属性的表达式在报表运行时,会被运算,该属性的最终属性值取决于表达式的运算结果值。
润乾报表在J2EE下的部署北京润乾信息系统技术有限公司目录第一章部署流程和步骤 (3)第二章 WEB应用配置 (4)一、创建新应用 (4)二、拷贝润乾WEB发布包 (4)三、相关文件的配置 (5)3.1 web.xml (5)3.2 reportConfig.xml (6)3.3 报表缓存配置 (9)3.4 并发数控制 (9)四、打WAR包 (10)第三章各种应用服务器的操作介绍 (11)一、 TOMCAT4.1.24的部署操作 (11)1.1 发布应用 (11)1.2 配置数据库连接池 (11)1.3 修改reportConfig.xml中的数据源配置 (13)二、TOMCAT5.0.28的部署操作 (13)2.1 发布应用 (13)2.2 配置数据库连接池 (13)2.3 修改reportConfig.xml中的数据源配置 (15)三、 WEBSPHERE的部署操作 (15)3.1 配置数据库连接池 (15)3.2 发布应用 (24)四、 WEBLOGIC的部署操作 (30)4.1 配置数据库连接池 (30)4.2 发布应用 (35)第四章常见部署问题 (38)一、应用服务器的差异 (38)1.1 jndi的前缀 (38)1.2 jdk的版本 (38)1.3 中文的支持 (38)1.4 servlet的版本 (39)二、操作系统的差异 (39)2.1 中文安装包 (39)2.2 系统图形环境错误 (40)三、数据库的连接问题 (43)3.1 数据库连接不上 (43)3.2 字符集配置错误 (45)3.3 sql需要转码 (45)第一章 部署流程和步骤如果和已有应用集成,一般来说已有应用已经配置好了数据库连接池,因此第一、第二步骤可以省略,只需要后面几个步骤。
配置应用服务器的数据库连接池、发布报表应用这两个步骤在不同应用服务器中的操作界面和操作方法是有区别的,举例来说,发布报表应用这个步骤,在weblogic和websphere中一般是发布一个war包或者是ear包,而在tomcat4中就是在server.xml中配置,不需要打war包,在tomcat5中则是打好war包直接拷贝到webapps目录下即可唯一不变的步骤是web应用配置,这部分包含四个步骤,在任何一个应用服务器中都是一样的。
润乾报表润乾报表使⽤1: 解压------安装runqian-V4.5.7-install.exe------需要引⽤( 润乾报表v4ide.lic ) 才能打开2: 数据库更换下jar包,将解压出的mysql-connector-java-5.1.48.jar 放到安装⽬录下的reportHome\jdbc下,把原有的mysql夹包删掉3: 引⼊数据需要集成 (润乾报表v4server_win.lic)才能链接数据库,或是启动tomcate4:定制报表后查看要启动tomcate才可以看5:定制的报表要⾃⼰⾃定义位置,⼀般是定义在安装⽬录下的 : reportHome\webapps\demo\reportFiles1.1配置数据源1.2新建报表1.3具体知识1.1:添加⼀⾏1.2:合并单元格合并单元格:选中要合并的单元格,点⼯具栏的即可完成合并操作。
1.3:添加序号1.4:有⼀列内容多,怎么显⽰1.5:给报表增加参数可以给报表增加参数-------然后在配置sql哪⾥引⽤参数------⼤概的过程是进⼊这张报表的时候可以将定义的参数传⼊-------传⼊到这个报表上之后----就可以引⽤在对应的sql上,只要sql上定义了1.6:返回值转义是否扩⼤会议 1:是 0 否',----------查询出来是0和11.7添加超链接这⾥要配合jsp页⾯来做1.8:设置查询参数类型1.9:⼀张报表怎么超链接到另⼀个报表"reportJsp/showReport.jsp?raq=xxxxx/xxxxx.raq&userName="+ER_NAME+"&userId="+ER_ID+"&startdate="+@startdate+"&enddate="+@enddate+"&Id="+@Id1.10: 在么在输⼊框⾥引⽤变量"学习情况统计表"+if(@startdate==null,"2019年1⽉",year(@startdate+"-01")+"年"+month(@startdate+"-01")+"⽉")+"-"+if(@enddate==null,year(now())+"年"+month(now())+"⽉",year(@enddate+"-01")+"年"+month(@enddate+"-01")+"⽉")。
常见报表形式1如何在报表中显示图片在实际项目中显示图片,一般是将图片放到服务器的文件夹中,让然后取得图片的绝对路径,在本例中,因为要取得图片地址根据考生的学号变化而变化,所以需要编写一个函数来取得图片的路径:create or replace function f_t_zsgl_bszs_hqzplj/***********************************************************名称: 硕士招生根据考生编号获取考生照片路径描述:作者: 徐耀辉修改日志:*************************************************************/(in_nd in varchar2,in_zsjj in varchar2,in_bmh in VARCHAR2) return varchar2isv_path varchar2(1000); --返回是否学位课beginv_path:='/opt/photo/'||in_nd||'/'||in_bmh||'.jpg';return(v_path);END;在数据集中进行调用:SELECTROWNUM AS id,a.txdz AS 通信地址,a.yzbm AS 邮政编码,a.nd as 年度,a.ksbh AS 考生编号,a.xxgzdw AS 学习工作单位,b.DWMC AS 报考单位,c.ZYMC AS 报考专业,a.zjhm AS 证件号码,d.BKDMC AS 报名点,a.zzllm ||a.zzllmc AS dy1,a.wgym ||a.wgymc AS dy2,a.ywk1m ||a.ywk1mc AS dy3,--a.bmh AS 报名号,a.xm as 考生姓名,f_t_zsgl_sszs_hqzplj(a.nd,a.bmh) AS 照片,--得到照片路径CASE WHEN (SELECT dydm FROM T_ZSGL_SSZS_KSKMK ksk WHERE a.nd=ksk.nd AND a.ywk2m=ksk.kskmdm)=4THEN a.ywk2m ||a.ywk2mcELSE ''END dy4,CASE WHEN (SELECT dydm FROM T_ZSGL_SSZS_KSKMK ksk WHERE a.nd=ksk.nd AND a.ywk2m=ksk.kskmdm)=5THEN a.ywk2m ||a.ywk2mcELSE ''END dy5 FROM T_ZSGL_SSZS_KSBMK aLEFT JOIN (SELECT * FROM T_ZSGL_ZSSZ_ZSDWXX WHERE QYBZ='1' AND ZSLBDM='1') b ON a.BKDWDM=b.DWDMLEFT JOIN T_BZHB_QGZYK c ON a.BKZYDM=c.zydmLEFT JOIN T_ZSGL_ZSSZ_BKD d ON a.BMDDM= d.BKDDMLEFT JOIN t_zsgl_sszs_kskmk f ON a.ZZLLM=f.kskmdm AND a.nd=f.ndLEFT JOIN t_zsgl_sszs_kskmk g ON a.wgym=g.kskmdm AND a.nd=g.ndLEFT JOIN t_zsgl_sszs_kskmk h ON a.YWK1M=h.kskmdm AND a.nd=h.ndLEFT JOIN t_zsgl_sszs_kskmk i ON a.YWK2M=i.kskmdm AND a.nd=i.ndWHERE ${condition} ORDER BY a.ksbh点击单元格,点击右键,选择“数据类型及编码风格”,在数据类型中选择:图片文件,如下图:在单元格的数据值属性中获取从数据库中得到的数据,如下图:2卡片式报表(没有大标题)卡片式报表的一般样式如下:首先设计样式:设置所有单元格的主格为可扩展单元格的名字,本例中设置为B2(注:B2的主格设置为空,不能以自己为主格,否则会循环调用,出错)设置报表分页方式为:按数据行数打印设置每页显示数据行数为每个小卡片里面包含的行数设置打印布局行数为每页需要显示的小卡片的行数设置打印布局列数为每页显示的小卡片的列数3卡片式报表(有大标题)如果报表包含大标题,如果用上面的方法,则无法实现大标题居中,所以需要用一种新如需实现下述报表样式:首先计算应该一共卡片有多少行:在本例中为:=int((ds1.count()+1)/2),如果小卡片是分三列显示则为:=int((ds1.count()+2/3),四列则为:=int((ds1.count()+3)/4),以此类推扩展出需要显示的行将数据填充到卡片中,此例中用数据集中记录的行号来判断应该填入的位置,如此例中:左边中的卡片的行号为:=(A4-1)*2+1,右面的为:=(A4-1)*2+1,然后将数据填入,用多少ds1.#0(数据集中记录的行号)来与卡片的行号匹配,此例中先选出座位号,然后小卡片中其它单元格以座位号为主格,如图:设计完以后还需调节卡片之间的距离,或者标题的高度,让每页显示出需要的卡片的行数4存储过程报表设计器支持存储过程的调用,不过只能得到返回的游标,其它返回的参数目前不能获取(也许是不知道怎么获取)定义数据集时,数据集的定义类似如下格式:{callP_XJGL_XJBB_XSNLTJXX(?,?,?,?,?,?)},数据集类型选择为存储过程,如图:选择编辑、参数,参数的顺序为存储过程定义的顺序:定义以后,存储过程数据集就和普通的数据集一样用了附:此例中的存储过程:CREATE OR REPLACE Procedure P_XJGL_XJBB_XSNLTJXX/***********************************************************名称: 统计在校学生年龄分组情况描述:作者: jhfu修改日志:2007年6月19 日完成存储过程*************************************************************/(in_bbbh IN VARCHAR2 , --报表编号in_czlx IN varchar2, --1 历史数据查询 2-- 当前数据查询 3--插入数据 in_czrgh IN varchar2, --操作人职工号out_message Out VARCHAR2,out_bbbh OUT VARCHAR2,out_cur_xjxx OUT Sys_Refcursor) ASt_bh varchar2(20);t_bhmc varchar2(300);t_hj int;t_x17 int;t_x18 int;t_x19 int;t_x20 int;t_x21 int;t_x22 int;t_x23 int;t_x24 int;t_x25 int;t_x26 int;t_x27 int;t_x28 int;t_x29 int;t_x30 int;t_x31 int;t_bbbh varchar2(20) :='';t_count INT;BEGINout_message :='1';IF in_czlx IS NULL THENout_message := '操作类型代码不能为空!';RETURN;END IF;IF in_czlx='1'AND in_bbbh IS NULL THENout_message := '历史数据查询请输入报表编号!';RETURN;END IF;IF in_czlx='3'AND in_czrgh IS NULL THENout_message := '统计数据时,操作人工号不能为空!';RETURN;END IF;IF in_czlx='1'THENOPEN out_cur_xjxx FORSELECT BH,BHMC,X17,X18,X19,X20,X21,X22,X23,X24,X25,X26,X27,X28,X29,X30,X31,HJ FROM T_XJGL_XJBB_ZXXSNLFZ WHERE bbbh=in_bbbh;END IF;IF in_czlx='2'OR in_czlx='3'THENOPEN out_cur_xjxx FORSELECT'01'AS BH,'总计'AS BHMC,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17OR csrq IS NULL THEN'1'ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18THEN'1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19THEN'1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20THEN'1' ELSE NULL END ),0) AS X20,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21THEN'1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22THEN'1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23THEN'1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24THEN'1' ELSE NULL END ),0) AS X24,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25THEN'1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26THEN'1'nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27THEN'1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28THEN'1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29THEN'1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30THEN'1' ELSE NULL END ),0) AS X30,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30THEN'1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxxUNION ALLSELECT'02'AS BH,' 其中:女'AS BHMC,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17OR csrq IS NULL THEN'1'ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18THEN'1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19THEN'1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20THEN'1' ELSE NULL END ),0) AS X20,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21THEN'1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22THEN'1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23THEN'1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24THEN'1' ELSE NULL END ),0) AS X24,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25THEN'1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26THEN'1' ELSE NULL END ),0) AS X26,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27THEN'1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28THEN'1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29THEN'1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30THEN'1'nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30THEN'1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxx WHERE xbdm='2'UNION ALLSELECT'03'AS BH,'博士生'AS BHMC,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17OR csrq IS NULL THEN'1'ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18THEN'1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19THEN'1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20THEN'1' ELSE NULL END ),0) AS X20,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21THEN'1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22THEN'1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23THEN'1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24THEN'1' ELSE NULL END ),0) AS X24,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25THEN'1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26THEN'1' ELSE NULL END ),0) AS X26,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27THEN'1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28THEN'1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29THEN'1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30THEN'1' ELSE NULL END ),0) AS X30,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30THEN'1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxx WHERE xslbdm='01'UNION ALLSELECT'04'AS BH,' 其中:女'AS BHMC,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17OR csrq IS NULL THEN'1'ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18THEN'1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19THEN'1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20THEN'1' ELSE NULL END ),0) AS X20,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21THEN'1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22THEN'1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23THEN'1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24THEN'1' ELSE NULL END ),0) AS X24,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25THEN'1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26THEN'1' ELSE NULL END ),0) AS X26,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27THEN'1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28THEN'1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29THEN'1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30THEN'1' ELSE NULL END ),0) AS X30,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30THEN'1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxx WHERE xslbdm='01'AND xbdm='2'UNION ALLSELECT'05'AS BH,'硕士生'AS BHMC,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17OR csrq IS NULL THEN'1'ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18THEN'1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19THEN'1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20THEN'1'nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21THEN'1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22THEN'1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23THEN'1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24THEN'1' ELSE NULL END ),0) AS X24,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25THEN'1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26THEN'1' ELSE NULL END ),0) AS X26,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27THEN'1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28THEN'1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29THEN'1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30THEN'1' ELSE NULL END ),0) AS X30,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30THEN'1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxx WHERE xslbdm='11'UNION ALLSELECT'06'AS BH,' 其中:女'AS BHMC,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17OR csrq IS NULL THEN'1'ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18THEN'1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19THEN'1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20THEN'1' ELSE NULL END ),0) AS X20,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21THEN'1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22THEN'1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23THEN'1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24THEN'1'nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25THEN'1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26THEN'1' ELSE NULL END ),0) AS X26,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27THEN'1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28THEN'1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29THEN'1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30THEN'1' ELSE NULL END ),0) AS X30,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30THEN'1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxx WHERE xslbdm='11'AND xbdm='2'UNION ALL--进修班SELECT'07'AS BH,'研究生班学生'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hj/* nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17 OR csrq IS NULL THEN '1' ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18 THEN '1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19 THEN '1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20 THEN '1'nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21 THEN '1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22 THEN '1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23 THEN '1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24 THEN '1' ELSE NULL END ),0) AS X24,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25 THEN '1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26 THEN '1' ELSE NULL END ),0) AS X26,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27 THEN '1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28 THEN '1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29 THEN '1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30 THEN '1' ELSE NULL END ),0) AS X30,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30 THEN '1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxx WHERE xslbdm!='99' */FROM dualUNION ALLSELECT'08'AS BH,' 其中:女'AS BHMC,/* nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')<=17 OR csrq IS NULL THEN '1' ELSE NULL END ),0) AS X17,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=18 THEN '1' ELSE NULL END ),0) AS X18,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=19 THEN '1' ELSE NULL END ),0) AS X19,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=20 THEN '1' ELSE NULL END ),0) AS X20,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=21 THEN '1' ELSE NULL END ),0) AS X21,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=22 THEN '1' ELSE NULL END ),0) AS X22,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=23 THEN '1' ELSE NULL END ),0) AS X23,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=24 THEN '1' ELSE NULL END ),0) AS X24,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=25 THEN '1' ELSE NULL END ),0) AS X25,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=26 THEN '1' ELSE NULL END ),0) AS X26,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=27 THEN '1' ELSE NULL END ),0) AS X27,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=28 THEN '1' ELSE NULL END ),0) AS X28,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=29 THEN '1' ELSE NULL END ),0) AS X29,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')=30 THEN '1' ELSE NULL END ),0) AS X30,nvl(sum( CASE WHEN to_char(sysdate,'YYYY')-to_char(csrq,'yyyy')>30 THEN '1' ELSE NULL END ),0) AS X31,nvl(SUM(1),0) AS hjFROM t_xjgl_xjxx_yjsjbxx WHERE xslbdm='01' AND xbdm='2'*/null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'09'AS BH,'普通本科生'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'10'AS BH,' 其中:女'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'11'AS BH,'普通专科生'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'12'AS BH,' 其中:女'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'13'AS BH,'成人本科生'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'14'AS BH,' 其中:女'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'15'AS BH,'成人专科生'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'16'AS BH,' 其中:女'AS BHMC,NULL AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'17'AS BH,'网络本专科生'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X30,null AS X31,null AS hjFROM dualUNION ALLSELECT'18'AS BH,' 其中:女'AS BHMC,null AS X17,null AS X18,null AS X19,null AS X20,null AS X21,null AS X22,null AS X23,null AS X24,null AS X25,null AS X26,null AS X27,null AS X28,null AS X29,null AS X30,null AS X31,null AS hjFROM dual ;IF in_czlx='3'THENSELECT COUNT(1) INTO t_count FROM t_xjgl_xjbb_xjtjrz WHERE bblx='221'AND to_char(tjsj,'yyyymmdd')=to_char(SYSDATE,'yyyymmdd');t_bbbh:=to_char(Sysdate,'yyyy-mm-dd')||'-'||to_char(t_count+1)||'-221';INSERT INTO t_xjgl_xjbb_xjtjrz(wid,bblx,bbbh,bbmc,tjsj,tjrgh,tjrxm,zt)VALUES (sys_guid(),'221',t_bbbh,'',sysdate,in_czrgh,'','0');LOOPFETCH out_cur_xjxx INTO t_bh,t_bhmc,t_x17,t_x18,t_x19,t_x20,t_x21,t_x22,t_x23,t_x24,t_x25,t_x26,t_x27,t_x28,t_x29,t_ x30,t_x31,t_hj;EXIT WHEN out_cur_xjxx%NOTFOUND;INSERT INTO t_xjgl_xjbb_zxxsnlfz(wid,bbbh,bh,bhmc,hj,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29 ,x30,x31)VALUES(sys_guid(),t_bbbh,t_bh,t_bhmc,t_hj,t_x17,t_x18,t_x19,t_x20,t_x21,t_x22,t_x23,t_x24,t_x25,t_ x26,t_x27,t_x28,t_x29,t_x30,t_x31);END LOOP;CLOSE out_cur_xjxx;COMMIT;END IF ;END IF;out_bbbh:=t_bbbh;EXCEPTIONWHEN OTHERS THENout_message:= '数据有误,请与系统管理员联系?:'||SQLERRM;ROLLBACK;END;5学位证书之类非常规纸张需要定义纸张尺寸为:自定义;还需设置自定义纸张宽度和高度:设置完成以后可以将扫描的图片做为底图进行临摹,坐标数据需要显示的位置(打印时和上传到服务器中时,图片不会显示)6用group分页有时候用户需求按照每个学院分组,每个学院之后必须分页,此时可以用group 设计,然后对group单元格呢设置为行后分页:7页脚的设置技巧如果页脚的上面单元格有边框的话,直接在下面加入页脚则在展示的时候会多出一条横线。
润乾报表3.0介绍润乾报表3.0是用于统计报表制作及报表及数据填报的大型企业级工具软件。
产品首次成功解决了报表单元格与关系数据库之间的关联规律性,特别适合于中国式报表的填报和统计。
一、产品优势1.绘制方便润乾报表采用类EXCEL的绘制方式,真正做到所见即所得,把程序员从繁重且无聊的报表格式设置工作中解脱出来,极大的提高的表格绘制的方便度和效率,产品特有的EXCEL导入功能(包括格式)可充分利用业务人员原有积累。
2.数据模型先进润乾报表独创的数据模型首次成功地解决了中国报表中单元格与数据字段之间的弱关联性,彻底打破传统行式报表方案,报表行列完全对称,特有的层次扩展机制使多层分组及交叉报表制作非常简单,提供针对关联格的跨行跨组运算,很容易计算小计、同期比等数据。
同一报表中支持多个异构的数据源,允许报表各片之间无关,可用多个简单的数据集成组合出复杂报表,程序员无须再为每张报表编程(脚本或存储过程)或写复杂SQL准备数据。
3.输出能力丰富润乾报表每个单元格属性均提供条件控制,如颜色、行高、是否可见等均可与格内数据相关;支持代码显示值对应、多种数据格式、图片文件和图片字段的处理。
产品提供十几种各类统计图,支持PNG/GIF/JPG三种格式。
每张报表均可生成HTML、EXCEL、PDF三种输出格式(输出结果完全不失真,包括其内的统计图)。
单元格与统计图例均可加带参数的链接从而实现数据钻取功能,多层报表可在线收缩展开。
4.打印控制强大润乾报表提供强大的打印控制功能,按行数和纸张大小分页分栏或强制分页,表头自动重复(包括左表头),允许一张纸上打多个报表,提供末页补足空行。
可采用像素和毫米两种计量单位,独创的底图描绘功能以支持套打;5.集成性好润乾报表采用纯JAVA开发,利用服务器端提供丰富的API调用和标记可完全无缝地嵌入到基于J2EE的应用程序中(可看作应用程序员自己写的代码),程序员可更换报表的数据库连接和数据源、采用应用服务器的连接池管理;设计器也提供外置的数据源和数据字典定义,可由应用程序员提供这些信息。
你配置步骤这个文档最好在自己机器上先部署关于润乾报表工具与cache连接与使用配置过程如下:1.安装jdk 如:(如果您要使用免安装的tomcat那就要配置环境变量如错误!未找到引用源。
:)图表1 jdk安装后部署图查看有没有安装好cmd下运行java –version 如错误!未找到引用源。
:图表2 查看当前系统jdk安装的版本2 安装润乾报表工具4.2.1(直接安装就好,如果让要选择jdk就选择您刚安装的jdk版本就ok 然后下一步到完成)如:错误!未找到引用源。
A : )图表3 工具安装A可根据情况选择(这里默认为中文)ok 如:错误!未找到引用源。
—>B : )图表 4 工具安装B点击下一步如:错误!未找到引用源。
—>C : )图表 5 工具安装C 点击下一步如:错误!未找到引用源。
D : )图表 6 工具安装D点击下一步如:错误!未找到引用源。
E : )图表7 工具安装E 最后点击安装——> 完成3 .由于报表工具要与cacha数据库连接起来,所以要对刚才报表工具在次配置,第一:点击东华医疗智能报表文件夹中的东华医疗智能报表.exe执行文件选择刚才您安装润乾报表工具根目录路径就ok(如:C:\Program Files\reportHome),点击导入就ok了如错误!未找到引用源。
:第二:也可以手工配置根据东华医疗智能报表部署文档.doc图表8 导入配置文件点击确定就ok4 .配置润乾报表与cache数据库交互先找到文件并打开修改这个文件把trakcarep8/trak/web替换成在cache中csp访问路径如:trakcare/trak/web然后在单独查找trakcarep8改换成如trakcare 保存,打开cache中的studio导入文件5 .打开润乾工具,创建数据源:可以通过菜单cache扩展—>数据源向导可以新建与cache连接的数据源如图:错误!未找到引用源。
基于Tomcat的润乾数据源配置第一步、配置连接池在tomcat安装目录下进入conf/Catalina/localhost文件夹新建.xml文件,文件名为你项目名称,如,然后打开文件开始配置数据源的连接池,输入<?xml version='1.0' encoding='utf-8'?><Context docBase="/slarms" path="/slarms" ><Resource name="AB" auth="Container" type="javax.sql.DataSource"maxActive="100" maxIdle="30" maxWait="10000"username="slarms"password="oracle"driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@192.168.1.248:1521:bksvr" /></Context>需要配置参数说明:docBase、path:直接把斜杠“/”后的改成你的项目名称name:数据源名字,现在统一用AB;username:数据库登录用户名password:数据库登录密码driverClassName:数据库驱动url:数据库连接地址。
第二步、添加oracle驱动把数据库驱动ojdbc14.jar考到tomcat服务器的common/bin目录下第三部、配置reportConfig.xml文件进入slarms\WebRoot\WEB-INF目录打开reportConfig.xml文件,配置数据源<config><name>dataSource</name><value>AB,oracle,GBK</value></config>AB:为你刚才配置连接池时的数据源名称oracle:数据库名GBK :数据库编码。
润乾报表字符串组参数-概述说明以及解释1.引言1.1 概述概述部分的内容:在软件开发过程中,经常需要对报表数据进行处理和展示。
而其中一种常见的方式就是使用报表字符串组参数来实现对数据的格式化和灵活操作。
润乾报表字符串组参数就是一种用于报表设计和定制的软件工具,它能够有效地对报表数据进行处理和展示,并且具有一定的自定义能力。
润乾报表字符串组参数的基本思想是将报表的数据按照一定的格式组织成字符串,并通过字符串的操作和处理来实现对数据的展示和操作。
通过使用字符串组参数,我们可以对报表中的各个数据项进行灵活的排列和格式化,以满足不同的需求和要求。
同时,它还可以在报表设计和定制的过程中,方便地对数据进行修改和调整,以便更好地满足用户的需求。
润乾报表字符串组参数的使用非常灵活和方便。
我们可以通过设置参数的格式和内容,来实现对报表数据的格式化和展示。
例如,我们可以使用字符串组参数来设置表头、列名、数据行等信息,从而使报表具有更好的可读性和美观性。
同时,我们还可以通过设置字符串组参数的格式和样式,来实现对报表数据的精确控制和灵活操作。
这些功能的实现,使得润乾报表字符串组参数成为了报表设计和定制中的重要工具。
总之,润乾报表字符串组参数是一种非常实用和灵活的工具,它能够有效地对报表数据进行处理和展示。
通过使用字符串组参数,我们可以轻松地对报表进行定制和设计,满足不同需求和要求。
它的使用不仅可以提升报表的效果和质量,还能够方便地对报表进行修改和调整。
相信在未来的报表设计和定制中,润乾报表字符串组参数将发挥着越来越重要的作用。
1.2 文章结构在本文中,我们将讨论润乾报表字符串组参数的相关内容。
为了更好地理解和使用这些参数,我们将按照以下结构进行阐述:引言:在引言部分,我们将简要介绍本文的概述、文章结构以及目的,以便读者能够更好地了解本文的背景和目标。
正文:正文部分将分为两个要点进行讨论。
- 第一个要点:在这一要点中,我们将详细探讨润乾报表字符串组参数的定义、特点以及用途。
1 前言鉴于目前报表开发没有一个统一的规范,每个开发的风格和习惯也不一致,所以动手写了这份报表开发文档,一来有助于统一大家的报表的风格,提供一些常见问题的解决方案,二来方便以后新人的学习使用。
本人也是略懂皮毛,有什么错误和不足之处,欢迎大家补充修改。
2.报表工具安装解压后运行runqian-v4.5.5-install.exe安装文件,按引导完成安装。
其中,在初次打开报表文件和发布报表文件的时候(后续会提到),会提示我们需要lic文件,就是下图中的两个lic文件。
Figure 13.报表工具的使用3-1 配置数据源使用报表时需要先对数据源进行配置:Figure 2选择新建一个数据源:Figure 3项目中默认使用的数据源名称为reportjndi.参考图3进行配置后,点击连接,进行数据源连接,这样就完成了报表服务器与数据库的连接。
3-2 新建报表目前的报表形式分为两部分,一是用来显示查询结果的“报表名.raq”文件,另一个是用来提供查询条件的“报表名_arg.raq”文件。
我们只需要在保存文件的时候,按上述格式命名,打开.raq文件时,会自动打开相关的_arg.raq文件。
3-3 结果显示报表设计首先新建一张报表,直接点击左上角工具栏上的即可。
按照给定的表样设计好报表名名、列名。
如下图,这里提供一种样式当做参考模板,如客户无特殊需求,希望各开发按照统一的样式标准进行设计,有助于提高所有报表的统一性,后面还会提到一些规范,希望大家也可以遵守起来。
Figure 4报表名这一行,采用黑色、二号字,加粗。
列名采用白色、三号字,加粗,背景色使用淡紫色(颜色相近即可)。
若每一列下面还要分列,则使用黑色、小三号字,结果数据使用黑色、四号字。
Figure 5设定好报表样式后,开始根据逻辑进行取数,设置每一列的宽度时,如果需要在一行中完整显示的,要选择“按单元格内容扩大”,并去掉“自动换行”。
Figure 6报表通过配置的“数据集”进行取数。
润乾报表设计
1、安装润乾报表设计器
2、设计报表模板
3、数据集为存储过程的报表设计
4、将设计好的模板部署到应用中过去
5、存储过程
1安装润乾报表设计器
1.1获取安装包
安装包在svn上:
http://10.120.23.41/svn/core/开发组资料/开发工具/润乾报表v4.5.exe Check后安装即可.安装后的目录结构如下:
1.2完成相关授权
使用润乾报表设计器需要完成两次授权:
A: 润乾报表设计器授权
B: 设计完成后发布应用的服务器授权
目前我们本机采用的是Windows的授权,服务器上的ycps项目采用的是Linux
授权版本,所以我们在开发完成后不要commit授权文件
1.3授权完成
授权完成,启动后的界面如下:
2简单报表设计
2.1配置数据源
A: 配置>数据源
B: 数据源配置界面
C: 点击新建自己的数据源
D: 数据源配置细节,为了开发的统一数据源名称统一采用“oracle”
E: 确定之后
F: 连接成功
2.2数据集的配置
A: 新建报表如图:
A: 配置数据集,也可以直接F11快捷键
B: 数据集配置
C: 选择模式、表、字段
D:选择需要的字段
E:此时你可以点击语法选项卡看看,聪明的你就明白了,然后确定即可
F:数据集ds1已经创建完成
2.3简单报表的实现
A:利用配置好的数据集设计简单模板
B:启动tomcat、发布模板、在浏览器中浏览
C:浏览
3数据集为存储过程的报表设计
3.1配置数据源见2.1
3.2配置数据集
3.2.1配置存储过程数据集
B:弹出存储过程数据集,在此之前存储过程一定要测试成功
C:配置数据集参数
说明:
1、参数的个数、顺序要和procedure严格一致
2、结果类型应该指定具体类型如字符串
3、注意输出参数及类型
D:确定,但是没有完!
3.2.2配置模板参数
可以这样理解:刚才配置的数据集参数需要由报表模板来提供,那模板也需要配置参数A:配置> 参数
B:参数编辑,然后确定模板设计完毕
3.2.3在设计器中浏览报表
A:按F11进入数据集设置
B:点击浏览数据
C:填入必填的参数确定即可浏览,注意此处的浏览只是证明数据集设置的正确性
D:数据集设置完成且正确后会出现如下。
说明:由于采用存储过程检索数据,返回的是游标,所以这里设计好的数据集看不到相关的字段名称等,在设计报表时要对应相应的表或存储过程来
3.3报表设计见2.3
根据上面的数据集参见2.3设计报表就可以了
4将开发测试好的模板部署到应用中
4.1添加配置
A:添加润乾所需的配置文件见ycps工程
在WEB-INF下添加
在classpath下添加见ycps工程
说明:
1、reportConfig.xml是润乾的web应用配置文件
2、runqianReportLog.properties日志文件
3、runqianSemanticFile.xml是语意层配置文件,目前我们没有使用到
4、runqianReport4.tld是页面标签描述文件,将数据展示到页面上的自定义标签
5、runqianWindowServer.lic是润乾的应用授权文件
B:添加润乾所需的jar包,所需jar包在润乾安装目录下demo中都可以找到
还有一个打印用的
这个jar文件要放到应用的根目录下才起作用见ycps工程
4.2修改相关配置
A: 在web.xml中添加润乾报表的配置见ycps工程
B:修改reportConfig.xml文件见ycps工程
主要关注3个地方:授权文件、reportFileHome和数据源配置
1、为web应用指定授权文件。
check到本地的为Linux授权,需修改为windows授权
2、reportFileHome为应用中模板文件存放的目录,需要将报表模板文件放到这里
3、数据源的配置
<config><!-- 数据源iepip在tomcate\conf\Catalina\localhost\scmz.xml里配置 -->
<name>dataSource</name>
<value>iepip,oracle,1,utf-8,utf-8,0;</value>
</config>
4.3开发报表应用
4.3.1页面上的设置
见WEB-INF\content\business\factory-inventory.jsp
传递给报表的参数
报表的输出设置,采用润乾的自定义标签report:html
4.3.2处理Action
见ycps\webapp\action\business\BaseReportActionSupport.java和FactoryAction.java
目前ycps工程中传递模板名称的方式是写死的,也就是说是保存在数据库中的
见src/test/java/com/petrochina/dataInit/dataInit.xml第944行
4.3.2浏览应用
5附:Oracle存储过程
5.1使用PL/SQL Dev开发存储过程
大家参考SNS上的Oracle pl/sql简单介绍
附:炼厂库存信息的存储过程/wlxm-ycps/docs/report/factory_inventory_pro.sql 5.2使用PL/SQL Dev测试存储过程
在过程名称上面右键菜单选择Test
执行后,需要点击右边的按钮才能看到游标的输出结果
Ok,测试完成
如果想debug的话可以采用这几个按钮来调试
Ok了
有未尽或不妥的地方,请指出或修改
6. 遇到的错误
处理办法:
文件根本不存在,所以才会报InputStream cannot be null的异常。
如果应用中没有用到语义层文件,重新设置正确的文件路径,如果没有用到,将此段代码注释或删除即可。
重启应用,异常排除,。