润乾报表开发
润乾报表集成到Eclipse开发环境
目录1 将润乾报表整合到Eclipse Web项目 (2)1.1 拷贝润乾报表所需文件 (2)1.2 修改配置文件 (4)1.3 添加数据源 (6)1.4 多数据源配置 (7)2 润乾报表模板配置 (7)2.1 新建数据源 (7)2.2 新建报表 (9)2.3 给报表添加过滤条件 (14)2.4 分组报表 (19)2.5 多数据源报表 (22)2.6 子报表 (26)2.7 引用子报表内容 (32)2.8 设置报表样式 (33)3 在JSP中引用报表 (35)1将润乾报表整合到Eclipse Web项目1.1拷贝润乾报表所需文件打开润乾报表程序根目录下的webapps\demo\WEB-INF\lib, 将目录下的所有jar包拷贝到Web项目的lib目录下:打开润乾报表程序根目录下的webapps\demo\WEB-INF, 将以下文件拷贝到Web项目的WEB-INF目录下:打开润乾报表程序根目录下的webapps\demo, 将以下文件拷贝到Web项目的WebContent目录下:在WebContent目录下新建reportFiles目录用来存放报表文件:将润乾报表Designer授权文件拷贝到Web项目的src目录下:1.2修改配置文件web.xml打开Web项目的web.xml文件, 在web-app节点内添加如下内容:<servlet><servlet-name>SetContextServlet</servlet-name><servlet-class>com.runqian.util.webutil.SetContextServlet</servle t-class><load-on-startup>2</load-on-startup></servlet><servlet><servlet-name>reportServlet</servlet-name><servlet-class>com.runqian.report4.view.ReportServlet</servlet-cl ass><init-param><param-name>config><param-value>/WEB-INF/reportConfig.xml</param-value> </init-param><load-on-startup>1</load-on-startup></servlet><servlet><servlet-name>DMServlet</servlet-name><servlet-class>com.raq.web.view.DMServlet</servlet-class><init-param><param-name>config><param-value>/WEB-INF/dmConfig.xml</param-value> </init-param><load-on-startup>10</load-on-startup></servlet><servlet-mapping><servlet-name>reportServlet</servlet-name><url-pattern>/reportServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>DMServlet</servlet-name><url-pattern>/DMServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>DMServlet</servlet-name><url-pattern>/DMServletAjax</url-pattern></servlet-mapping><jsp-config><taglib><taglib-uri>/WEB-INF/runqianReport4.tld</taglib-uri><taglib-location>/WEB-INF/runqianReport4.tld</taglib-location> </taglib></jsp-config>reportConfig.xml打开Web项目的reportConfig.xml文件, 将license的值修改为刚才拷贝到src目录下的授权文件的名称:将report的值修改为刚才新建的用来存放报表文件的目录的名称:JNDIPrefix属性表示查找数据源时的环境串前缀,在不同的WEB服务器中不同, 如Tomcat中是java:/comp/env, 而Weblogic和Websphere中均不需要, 可以不填.dataSource表示用户在WEB应用中要用到的数据源配置, 其格式如下:数据源的JNDI名称,数据库类型[,取数时是否需要转换编码,数据库字符集编码,显示报表时的字符集编码][,SQL是否需要转码];[重复]……数据库类型按下表填写:注: 上表中不存在的数据库类型, 参数值都写为写unknown.1.3添加数据源以tomcat为例, 找到%TOMCAT_HOME%/conf\Catalina\localhost\项目名称.xml文件, 没有则新建一个, 内容为:<Context path="/ReportWeb" reloadable="true" docBase="E:\WORKSPACES\ReportWeb\WebContent" ><Resourcename="test"auth="Container"type="javax.sql.DataSource"maxActive="20"maxIdle="1"maxWait="10000"username="drool"password="drool"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/drool?characterEncoding=utf8" /></Context>红色标记为需要配置的地方, 其他配置参数, 按照自己项目的需求进行配置.其中name的值请与reportConfig.xml中的dataSource的数据源名称保持一致.1.4多数据源配置如果报表中需要使用多个不同数据源, 可以参照上一步在web容器中添加一个数据源: <Resourcename="mysql"auth="Container"type="javax.sql.DataSource"maxActive="20"maxIdle="1"maxWait="10000"username="drool"password="drool"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/drool?characterEncoding=utf8" />然后在reportConfig.xml的dataSource中追加一条配置:多条数据源之间以半角分号隔开.至此Web项目已经完成了与润乾报表的整合.2润乾报表模板配置2.1新建数据源打开润乾报表设计器, 点击菜单配置--数据源点击新建—关系数据库填写数据库信息点击连接按钮连接数据源2.2新建报表点击菜单文件—新建报表填报类型选择普通报表, 数据源填写上一步定义的数据源名称, 数据集类型选择SQL检索:选中需要的表选中需要的列:检索条件暂时不填, 选取排序字段可以在语法内看到生成的语句如下点击确定, 报表类型向导页面可以调整字段显示顺序报表定义页面可以隐藏不需要显示的字段点击生成网格报表后生成的报表样式如下2.3给报表添加过滤条件例如上例中报表需要一个过滤条件where contry like ‘%中国%’, 首先右键点击生成的报表的第00单元格, 选择参数选项:新增一个参数contry, 数据类型为字符串可以给定一个预设值为’中国’:右键点击00格, 选择数据集:点击编辑, 可以看到之前定义的数据集选择检索条件, 选择需要添加的字段, 在右边的窗口中填写表达式, 参数使用占位符?代替, 语法与HQL相同:选择参数, 点击增加按钮添加一个参数, 双击参数表达式栏会弹出表达式编辑窗口数据栏会列出当前报表已定义的参数, 双击可添加到报表表达式栏. 点击浏览数据可预览当前数据集查询结果:此处数值会自动填写定义参数时所填写的预设值. 点击确定预览数据:点击文件—预览可预览报表效果:2.4分组报表例如上例中报表需要按照国家—省份—城市进行分组, 首先调整一下字段顺序, 然后将报表数据区内需要分组的字段改为=数据集.group(字段) 格式:函数说明:根据分组表达式,从数据集中选出一组组集。
润乾常用报表开发实例
常见报表形式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页脚的设置技巧如果页脚的上面单元格有边框的话,直接在下面加入页脚则在展示的时候会多出一条横线。
润乾集算报表开发多源分片报表
润乾集算报表开发多源分片报表使用润乾集算报表可以开发多源分片报表,在同一报表中的不同部分可以包含不同数据来源。
集算报表提供的扩展模型和主格模型让这类报表开发非常简单。
下面通过具体实例来来看一下多源分片报表的开发过程。
业务系统中的某类订单统计表中统计了多个维度订单情况,如下图示:该报表由多个独立的片区组成,且每个片区内的数据来源不尽相同。
这就是一个典型的多源分片报表。
使用集算报表制作步骤如下:连接数据源使用集算报表设计器,连接自带数据源DEMO。
设置数据集新建报表并设置数据集,由于数据来源不同,需要设置多个数据集。
各数据集SQL如下:ds1: SELECT 客户.地区,客户.城市,订单明细.数量,订单明细.折扣,订单明细.单价,订单.雇员ID,订单.订购日期,订单明细.产品ID FROM 订单明细,订单,客户WHERE 客户.客户ID = 订单.客户ID AND 订单.订单ID = 订单明细.订单ID and 订单.订购日期is not null and 客户.地区in ('华南','西南') and year(订单.订购日期)>=1998ds2: SELECT 类别.类别ID,类别.类别名称FROM 类别ds3:SELECT 雇员.雇员ID,订单明细.产品ID,雇员.职务,雇员.姓氏||雇员.名字as 姓名FROM 雇员,订单,订单明细WHERE 雇员.雇员ID = 订单.雇员ID AND 订单.订单ID = 订单明细.订单ID ORDER BY 订单.订购日期ASCds4: SELECT 产品.类别ID,产品.产品ID FROM 产品编辑报表表达式根据目标报表样式,分别设置每片区报表表达式。
其中:A1-E4按日期维度汇总了每个地区的销售额;A5-E6按销售人员维度汇总了每个地区的销售额;F1-G4按日期维度汇总了每类产品的销售额;F5-G6按销售人员维度汇总了每类产品的销售额。
润乾报表基本介绍[技巧]
润乾报表3.0介绍润乾报表3.0是用于统计报表制作及报表及数据填报的大型企业级工具软件。
产品首次成功解决了报表单元格与关系数据库之间的关联规律性,特别适合于中国式报表的填报和统计。
一、产品优势1.绘制方便润乾报表采用类EXCEL的绘制方式,真正做到所见即所得,把程序员从繁重且无聊的报表格式设置工作中解脱出来,极大的提高的表格绘制的方便度和效率,产品特有的EXCEL导入功能(包括格式)可充分利用业务人员原有积累。
2.数据模型先进润乾报表独创的数据模型首次成功地解决了中国报表中单元格与数据字段之间的弱关联性,彻底打破传统行式报表方案,报表行列完全对称,特有的层次扩展机制使多层分组及交叉报表制作非常简单,提供针对关联格的跨行跨组运算,很容易计算小计、同期比等数据。
同一报表中支持多个异构的数据源,允许报表各片之间无关,可用多个简单的数据集成组合出复杂报表,程序员无须再为每张报表编程(脚本或存储过程)或写复杂SQL准备数据。
3.输出能力丰富润乾报表每个单元格属性均提供条件控制,如颜色、行高、是否可见等均可与格内数据相关;支持代码显示值对应、多种数据格式、图片文件和图片字段的处理。
产品提供十几种各类统计图,支持PNG/GIF/JPG三种格式。
每张报表均可生成HTML、EXCEL、PDF三种输出格式(输出结果完全不失真,包括其内的统计图)。
单元格与统计图例均可加带参数的链接从而实现数据钻取功能,多层报表可在线收缩展开。
4.打印控制强大润乾报表提供强大的打印控制功能,按行数和纸张大小分页分栏或强制分页,表头自动重复(包括左表头),允许一张纸上打多个报表,提供末页补足空行。
可采用像素和毫米两种计量单位,独创的底图描绘功能以支持套打;5.集成性好润乾报表采用纯JAVA开发,利用服务器端提供丰富的API调用和标记可完全无缝地嵌入到基于J2EE的应用程序中(可看作应用程序员自己写的代码),程序员可更换报表的数据库连接和数据源、采用应用服务器的连接池管理;设计器也提供外置的数据源和数据字典定义,可由应用程序员提供这些信息。
润乾集算报表应用开发之Excel及PDF导出
2、读入报表 String reportFile = request.getSession().getServletContext().getRealPath("/reportFiles/" +report);
public class ExportToExcel extends HttpServlet {
/** * Constructor of the object. */
public ExportToExcel() { super();
}
/** * Destruction of the servlet. <br> */
}
/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals
to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */
润乾报表实现组内排序报表及改进
润乾报表实现组内排序报表及改进报表开发中经常会遇到需要进行组内排序的报表,如按月份的分组汇总值排序显示,并显示每月销售额前十名的记录。
使用报表工具一般通过隐藏行列辅助可以实现,下面通过实例说明润乾报表的实现过程,以及改进方案。
报表需求根据销售管理系统数据统计客户所在地区的订单总额,地区并按订单总额降序排列,要求每个地区中显示销售额在前五名的销售人员及其订单数量和订单金额,其他人员归入“其他”项中。
报表样式如下:这里应该注意的是地区分组中如果销售人数少于5个则不显示“其他”项(如上图中的西北地区)。
润乾报表实现润乾报表实现主要依靠条件隐藏行实现,根据分组成员数量是否显示“其他”项,报表模板及表达式如下:在润乾报表中,使用ds.group()的多个参数,结合条件判断隐藏行,多种使用方法结合完成了报表开发,可见润乾报表的强大之处。
但是由于要按照分组后汇总的订单金额排序,所以在B3的分组表达式中应用ds1.sum(订单金额)表达式作为ds.group()的参数,对于原始数据量较大的情况下,该表达式效率较低;而且,由于只显示前5名销售,在C3(排名)和D3(其他)中设置了隐藏行表达式,对于分组较多的情况仍然会存在性能问题;另外需要在E3和F3中使用格集过滤表达式计算其他销售人员合计,计算时要带着单元格属性计算,效率仍然不高。
上述提到的问题在传统报表工具中皆是存在的,原因在于数据计算(报表数据源准备)与报表呈现混在一起导致,开发人员不得不再报表中编写较复杂的计算逻辑以完成报表开发,造成报表开发和运行效率都不高。
如果能将两部分分开,势必能提升开发和运行效率。
润乾公司在润乾报表的基础上,推出了可以完全满足复杂报表开发的集算报表,其内置了用于完成报表数据计算(数据源准备)的集算器,从而将数据计算和报表呈现剥离开,进一步梳理了报表开发流程,使得报表开发变得更加清晰。
上述报表需求使用集算报表可以这样完成:集算报表实现编写集算脚本使用集算脚本编辑工具完成计算脚本,并为报表输出计算后结果集:A1:执行sql得到初步汇总订单数据A2:按照地区分组后组内成员按订单金额排序A3-C7:循环A3,取前五名记录,并将超过第五的记录都归入“其他”项,结果写回A3A8:结果按地区总额降序排列后返回给报表报表调用使用集算报表设计器,新建报表,使用“集算器”数据集类型,选择上面编辑好的集算脚本(sort.dfx)报表模板及表达式报表模板中根据集算脚本返回的结果集,分别取得地区分组和销售列表等数据,无需复杂表达式即完成报表开发。
润乾报表入门
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
第三步:保存预览。
带查询参数的报表
在我们设计一张报表的时候,很少有里面的数据是固定不变 的,常常需要根据一些条件来过滤出我们想要的数据。这就需要 通过参数的形式控制报表中的数据。
制作待查询参数的报表公分两部完成: 制定参数模板 将报表和参数模板结合起来发布
制定参数模板
第一步:点击工具菜单上的【文件】->【新建报表】,如图:打开新建向导对话框,选择【填报或 参数表单】,再点【生成空白报表】按钮生成一张参数模板。 第二步:在B2单元格中输入 “性别:”,设置单元格内容为靠右对齐。 第三步:选中C2单元格点右键,在下拉菜单中选择【填报属性】。打开“数据填报”窗口,在 “编辑风格”下拉框中选择“下拉列表框”风格类型,将“是否可写”选中。 第四步:点击【设置】按钮,弹出下拉列表框编辑窗口。
2) 选择授权文件,点击【打开】,即可完成默认服务器授权操作。
配置与数据库的连接
润乾报表设计器可以与sqlserver、oracle等当前流行的数据库建 立数据库连接。本案例以连接sqlserver数据库为例。
1) 单击主菜单中的【配置】>【数据源】会弹出数据源操作对话 框。 2) 单击【新建】按钮,会弹出数据库选择对话框,在数据类型上选择【关系 数据库】,然后单击确定按钮,会弹出配置数据库连接的对话框,配置结 束后单击保存,即可完成配置与数据库之间的连接操作。 3) 选择我们刚刚创建的数据源名称,然后单击右侧的【连接】按钮,若 数据源名称变为粉红色,说明与数据库之间的连接已经建立成功,然 后点击【关闭】按钮,接下来我们就可以制作报表,对数据库数据进 行读取操作。
润乾报表基本使用教程
部门:MES事业部 姓名:张辉
目录
润乾报表介绍 安装设计器
润乾报表开发示例说明
第一页,编辑于星期二:十点 九分。
第二页,编辑于星期二:十点 九分。
第三页,编辑于星期二:十点 九分。
第四页,编辑于星期二:十点 九分。
第五页,编辑于星期二:十点 九分。
第六页,编辑于星期二:十点 九分。
第七页,编辑于星期二:十点 九分。
第八页,编辑于星期二:十点 九分。
第九页,编辑于星期二:十点 九分。
第十页,编辑于星期二:十点 九分。
第十一页,编辑于星期二:十点 九分。
第十二页,编辑于星期二:十点 九分。
第十三页,编辑于星期二:十点 九分。
第十四页,编辑于星期二:十点 九分。
第十五页,编辑于星期二:十点 九分。
第十六页,编辑于星期二:十点 九分。
第十七页,编辑于星期二:十点 九分。
润乾报表V4.0应用开发教程
1.5 Olap ..................................................................................................................................................... 14
2.2 报表模板编辑 ..................................................................................................................................... 26
2.2.1 2.2.2 2.2.3
2.3.1 读入语义层 ............................................................................................................................. 32
2.3.2 增加删除视图 ......................................................................................................................... 32
1.4 通用查询 ............................................................................................................................................. 13
创建空白报表 ......................................................................................................................... 26 设置报表属性 ......................................................................................................................... 26 设置行属性 ............................................................................................................................. 29
润乾集算报表应用开发之页面嵌入
数据报表
数据报表嵌入页面使用的标签为<report:html>,常用属性包括 name(表格名称)、srcType (源类型,可以是 file、defineBean 或 reportBean)、funcBarLocation(是否包含工具条)、 needPageMark(是否需要页码)、params(报表参数,同参数报表中 params)、exceptionPage (错误提示页面)等。
file
paramFileName
否 生 成 参 数 表 单 的 报表文件名,如为""或"null", 无
RPX 文件名
则不生成表单
当参数表单源类型
为 defineBean 或
reportBean 时,已 符 合 变 量 命 名 规 则 的 字 符
beanName
否 保存到 request 中 串,与保存参数表单源 bean 无
用 bean 的方式发布报表时,计 否 算出报表 bean 时用的 Context
对象,存在 request 中的名称 否 报表缩放显示比例 否 功能条的位置 否 各功能钮间的分隔符
是否生成缺省报表参数及宏输 否 入表单 否 报表所需要的参数 否 功能条的字体
funcBarFontSize 否 功能条的字体大小
excelLabel
否 存为 Excel 钮外观定义
html 元素或文字
存为 Excel
pdfLabel
否 存为 PDF 钮外观定义
html 元素或文字
润乾报表集成到Eclipse开发环境复习课程
目录1 将润乾报表整合到Eclipse Web项目 (2)1.1 拷贝润乾报表所需文件 (2)1.2 修改配置文件 (4)1.3 添加数据源 (6)1.4 多数据源配置 (7)2 润乾报表模板配置 (7)2.1 新建数据源 (7)2.2 新建报表 (9)2.3 给报表添加过滤条件 (14)2.4 分组报表 (19)2.5 多数据源报表 (22)2.6 子报表 (26)2.7 引用子报表内容 (32)2.8 设置报表样式 (33)3 在JSP中引用报表 (35)1将润乾报表整合到Eclipse Web项目1.1拷贝润乾报表所需文件打开润乾报表程序根目录下的webapps\demo\WEB-INF\lib, 将目录下的所有jar包拷贝到Web项目的lib目录下:打开润乾报表程序根目录下的webapps\demo\WEB-INF, 将以下文件拷贝到Web项目的WEB-INF目录下:打开润乾报表程序根目录下的webapps\demo, 将以下文件拷贝到Web项目的WebContent目录下:在WebContent目录下新建reportFiles目录用来存放报表文件:将润乾报表Designer授权文件拷贝到Web项目的src目录下:1.2修改配置文件web.xml打开Web项目的web.xml文件, 在web-app节点内添加如下内容:<servlet><servlet-name>SetContextServlet</servlet-name><servlet-class>com.runqian.util.webutil.SetContextServlet</servle t-class><load-on-startup>2</load-on-startup></servlet><servlet><servlet-name>reportServlet</servlet-name><servlet-class>com.runqian.report4.view.ReportServlet</servlet-cl ass><init-param><param-name>configFile</param-name><param-value>/WEB-INF/reportConfig.xml</param-value> </init-param><load-on-startup>1</load-on-startup></servlet><servlet><servlet-name>DMServlet</servlet-name><servlet-class>com.raq.web.view.DMServlet</servlet-class><init-param><param-name>configFile</param-name><param-value>/WEB-INF/dmConfig.xml</param-value> </init-param><load-on-startup>10</load-on-startup></servlet><servlet-mapping><servlet-name>reportServlet</servlet-name><url-pattern>/reportServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>DMServlet</servlet-name><url-pattern>/DMServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>DMServlet</servlet-name><url-pattern>/DMServletAjax</url-pattern></servlet-mapping><jsp-config><taglib><taglib-uri>/WEB-INF/runqianReport4.tld</taglib-uri><taglib-location>/WEB-INF/runqianReport4.tld</taglib-location> </taglib></jsp-config>reportConfig.xml打开Web项目的reportConfig.xml文件, 将license的值修改为刚才拷贝到src目录下的授权文件的名称:将reportFileHome的值修改为刚才新建的用来存放报表文件的目录的名称:JNDIPrefix属性表示查找数据源时的环境串前缀,在不同的WEB服务器中不同, 如Tomcat中是java:/comp/env, 而Weblogic和Websphere中均不需要, 可以不填.dataSource表示用户在WEB应用中要用到的数据源配置, 其格式如下:数据源的JNDI名称,数据库类型[,取数时是否需要转换编码,数据库字符集编码,显示报表时的字符集编码][,SQL是否需要转码];[重复]……数据库类型按下表填写:注: 上表中不存在的数据库类型, 参数值都写为写unknown.1.3添加数据源以tomcat为例, 找到%TOMCAT_HOME%/conf\Catalina\localhost\项目名称.xml文件, 没有则新建一个, 内容为:<Context path="/ReportWeb" reloadable="true" docBase="E:\WORKSPACES\ReportWeb\WebContent" ><Resourcename="test"auth="Container"type="javax.sql.DataSource"maxActive="20"maxIdle="1"maxWait="10000"username="drool"password="drool"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/drool?characterEncoding=utf8" /></Context>红色标记为需要配置的地方, 其他配置参数, 按照自己项目的需求进行配置.其中name的值请与reportConfig.xml中的dataSource的数据源名称保持一致.1.4多数据源配置如果报表中需要使用多个不同数据源, 可以参照上一步在web容器中添加一个数据源: <Resourcename="mysql"auth="Container"type="javax.sql.DataSource"maxActive="20"maxIdle="1"maxWait="10000"username="drool"password="drool"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/drool?characterEncoding=utf8" />然后在reportConfig.xml的dataSource中追加一条配置:多条数据源之间以半角分号隔开.至此Web项目已经完成了与润乾报表的整合.2润乾报表模板配置2.1新建数据源打开润乾报表设计器, 点击菜单配置--数据源点击新建—关系数据库填写数据库信息点击连接按钮连接数据源2.2新建报表点击菜单文件—新建报表填报类型选择普通报表, 数据源填写上一步定义的数据源名称, 数据集类型选择SQL检索:选中需要的表选中需要的列:检索条件暂时不填, 选取排序字段可以在语法内看到生成的语句如下点击确定, 报表类型向导页面可以调整字段显示顺序报表定义页面可以隐藏不需要显示的字段点击生成网格报表后生成的报表样式如下2.3给报表添加过滤条件例如上例中报表需要一个过滤条件where contry like ‘%中国%’, 首先右键点击生成的报表的第00单元格, 选择参数选项:新增一个参数contry, 数据类型为字符串可以给定一个预设值为’中国’:右键点击00格, 选择数据集:点击编辑, 可以看到之前定义的数据集选择检索条件, 选择需要添加的字段, 在右边的窗口中填写表达式, 参数使用占位符?代替, 语法与HQL相同:选择参数, 点击增加按钮添加一个参数, 双击参数表达式栏会弹出表达式编辑窗口数据栏会列出当前报表已定义的参数, 双击可添加到报表表达式栏. 点击浏览数据可预览当前数据集查询结果:此处数值会自动填写定义参数时所填写的预设值. 点击确定预览数据:点击文件—预览可预览报表效果:2.4分组报表例如上例中报表需要按照国家—省份—城市进行分组, 首先调整一下字段顺序, 然后将报表数据区内需要分组的字段改为=数据集.group(字段) 格式:函数说明:根据分组表达式,从数据集中选出一组组集。
java开发润乾报表
java开发润乾报表润乾报表设计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.13.2配置数据集3.2.1配置存储过程数据集B:弹出存储过程数据集,在此之前存储过程一定要测试成功C:配置数据集参数说明:1、参数的个数、顺序要和procedure严格一致2、结果类型应该指定具体类型如字符串3、注意输出参数及类型D:确定,但是没有完!3.2.2配置模板参数可以这样理解:刚才配置的数据集参数需要由报表模板来提供,那模板也需要配置参数A:配置> 参数B:参数编辑,然后确定模板设计完毕3.2.3在设计器中浏览报表A:按F11进入数据集设置B:点击浏览数据C:填入必填的参数确定即可浏览,注意此处的浏览只是证明数据集设置的正确性D:数据集设置完成且正确后会出现如下。
润乾报表V4.0高级教程
润乾报表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]函数进行汇总,于是一个多层交叉报表很轻松就完成了。
润乾报表开发
认识润乾报表什么是报表报表是具有一定格式、包含一定信心的载体润乾报表分类1.按报表是否填写数据分类:普通报表参数表单普通报表主要用于数据展示参数表单主要用于多条件数据查询填报表单2.按报表数据方式分类:普通报表——以一个单元格作为存储单位行式报表—-以一整行单元作为存储单元因此行式报表效率较高,但有诸多限制。
润乾报表简单示例开发示例一:普通报表目标:了解普通报表开发过程资源:参考润乾报表系统自带Demo数据源进行开发演示。
过程:1.打开润乾报表设计器2.选择配置|数据源单击,并选择连接Demo数据源填报表单主要用于数据更新提交操作,用户提交表单后,数据将自动提交至3.选择文件|新建报表一份报表主要包含三种对象(数据集、报表类型、报表定义);这里我们现在确定数据集,选择数据集类型为SQL检索并单击下一步,系统将进入SQL编辑器,开发人员通过填写配置信息,系统将自动生成相应SQL脚本。
确定数据集相关表确定数据集包含字段系统自动生成SQL脚本4.确定好数据集后,系统将提示确定报表类型,我们选择网格报表,单击生成网格报表5.系统生成报表如下单击预览效果如下:在对报表进行一些简单修饰,效果如下:示例二:参数报表目标:1.了解参数表单功能2.了解参数表单开发过程3.了解如何将参数表单与普通报表一起使用资源:参考润乾报表系统自带Demo数据源进行开发演示。
准备:1.已经设计好一个普通报表,命名为PuTongReport.raq2.将设计参数表单命名为PuTongReport_arg。
raq过程:1.选择文件|新建报表2.选择填报或参数表单,直接单击生成空白报表3.设计参数模板接下来,分别设置C2、C3、E2、E3四个单元格属性。
4.选择C2单元格,单击右键选择,弹出一个数据填报编辑窗口。
在是否可填写前打勾。
5.同理C3进行如下设置。
6.E2设置如下与C2设置相同7.E3设置如下:8.接下来,分别设置C2、C3、E2、E3四个单元格进行命名命名方法如下,以C2为例,选中C2.设置单元格属性web变量名为name,类似,我们设置C3为sex,E2为bonus,E3为birthday9.这样参数模板就设计好了,在浏览器端查看普通报表时,系统会自动找到相应查询模板如图所示。
润乾集算报表应用开发之参数输入
<report:html name="report1" reportFileName="orders.rpx" params="<%=param.toString()%>"
/> </td></tr> </table> </body> </html>
自定义参数输入
用户自定义参数输入时,需要自己定义查询表单,设置查询条件等信息。如仍以上述查 询报表为例,使用自定义参数输入可参考如下步骤: 1、定义参数输入表单 <form action="showReport.jsp?rpx=orders.rpx" method="post">
while(paramNames.hasMoreElements()){ String paramName = (String) paramNames.nextElement(); String paramValue=request.getParameter(paramName); if(paramValue!=null){ //把参数拼成 name=value;name2=value2;.....的形式 param.append(paramName).append("=").append(paramValue).append(";"); }
润乾报表V4.0应用开发课程介绍
润乾报表V4.0应用开发课程介绍
培训对象:
有java编程经验以及应用开发经验的程序员。
培训目标:
熟悉润乾报表API接口的架构,掌握润乾报表基本API接口的调用,掌握润乾报表与网页脚本的结合开发。
先修课程/基本技能:
熟悉java编程,熟悉至少一种java开发工具,如eclipse或者jbuilder等,对润乾报表的制作有初步了解,已经学习了《润乾报表入门教程》。
课程时间安排:
五个工作日。
培训大纲:
运算报表
浏览式报表的读入、计算、输出
填报表的导入、提交保存
swing中填报
报表模板编辑
创建新报表、打开已有报表
设置各种属性
保存报表
语义层编辑
读入语义层
设置、添加、删除各种属性
保存、输出语义层文件
自定义类
自定义函数
自定义数据集
填报监听类
参数监听类
自定义统计图
自定义菜单
数据集监听类
系统API
装载授权文件
装载语义层文件
清除缓存
网页脚本控制
单元格数据值的控制
单元格外观控制
超链接
触发事件
内置javascript函数介绍
考核方式:
在规定时间内上机编程,不得交流。
参考资料:
《润乾报表V4.0应用开发教程.doc》、应用开发教程例子。
润乾报表使用及Web部署
润乾报表设计器使用及在报表在Web工程中的部署1.润乾报表设计器的使用步骤●安装jdk1.6,并配置好环境变量,配置好润乾报表设计器批处理文件中的JA V A_HOME;●配数据源●新建空白报表;●建数据集;●制作报表并保存;2.报表在Web工程中的部署●安装应用服务器(Tomcat6.0)●导包:将润乾实例工程下WEB-INF目录下的lib目录里的所有jar导入到自己建的web工程中的相同位置;将润乾实例工程下WEB-INF目录下的导入到自己建的web工程中的相同位置;将导入到自己新建web工程的WebRoot下●将class12.jar包导入到应用服务器的lib目录下●修改配置文件将润乾实例工程下WEB-INF目录下的web.xml中的<servlet>→</taglib>中的所有内容都粘贴到自己Web工程的web.xml中,由于xml版本的问题<taglib></taglib>需写在<jsp-config></jsp-config>在应用服务器下的conf目录下的context.xml,打开并在<Context></Context>之间配上<Resource name="Atom" auth="Container" type="javax.sql.DataSource"username="atom"password="atom"driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@localhost:1521:oracle10"/>3.jsp页面的展现在jsp头部引入在需要展现报表的地方加上下面的代码即可:4.手动部署发布报表Tomcat能否正常启动,首先要配环境变量JA V A_HOME在Tomcat服务器的conf目录下的server.xml文件中配置<Context path="/runqian" docBase="C:\tomcat6-MyEclipse\webapps\RunqianTest"></Context>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
认识润乾报表
什么是报表
报表是具有一定格式、包含一定信心的载体润乾报表分类
1.按报表是否填写数据分类:
普通报表参数表单普通报表主要用于数据
展示
参数表单主要用于多条
件数据查询
填报表单
2.按报表数据方式分类:
普通报表——以一个单元格作为存储单位
行式报表——以一整行单元作为存储单元
因此行式报表效率较高,但有诸多限制。
润乾报表简单示例开发
示例一:普通报表
目标:了解普通报表开发过程
资源:参考润乾报表系统自带Demo数据源进行开发演示。
过程:
1.打开润乾报表设计器
2.选择配置|数据源单击,并选择连接Demo数据源填报表单主要用于数据更新提交操作,用户提交表单后,数据将自动提交至
3.选择文件|新建报表
一份报表主要包含三种对象(数据集、报表类型、报表定义);这里我们现在确定数据集,选择数据集类型为SQL检索并单击下一步,系统将进入SQL编辑器,开发人员通过填写配置信息,系统将自动生成相应SQL脚本。
确定数据集相关表确定数据集包含字段
系统自动生成SQL脚本
4.确定好数据集后,系统将提示确定报表类型,我们选择网格报表,单击生成网
格报表
5.系统生成报表如下
单击预览效果如下:
在对报表进行一些简单修饰,效果如下:
示例二:参数报表
目标:
1.了解参数表单功能
2.了解参数表单开发过程
3.了解如何将参数表单与普通报表一起使用
资源:参考润乾报表系统自带Demo数据源进行开发演示。
准备:
1.已经设计好一个普通报表,命名为PuTongReport.raq
2.将设计参数表单命名为PuTongReport_arg.raq
过程:
1.选择文件|新建报表
2.选择填报或参数表单,直接单击生成空白报表
3.设计参数模板
接下来,分别设置C2、C3、E2、E3四个单元格属性.
4.选择C2单元格,单击右键选择,弹出一个数据填报
编辑窗口。
在是否可填写前打勾。
5.同理C3进行如下设置。
6.E2设置如下与C2设置相同
7.E3设置如下:
8.接下来,分别设置C2、C3、E2、E3四个单元格进行命名
命名方法如下,以C2为例,选中C2.设置单元格属性web变量名为name,
类似,我们设置C3为sex,E2为bonus,E3为birthday
9.这样参数模板就设计好了,在浏览器端查看普通报表时,系统会自动找到相应
查询模板如图所示。
10.上面的页面实际单击查询按钮上并不会进行按条件查询,原因就是模板提交的
相关参数并没有接受相关参数。
因此我们要给普通报表添加参数设置。
11.普通报表添加参数如下:
a.打开普通报表
b.选择配置|参数
c.新增四个参分别对应参数模板四个编辑域web变量名即可。
12.修改数据源检索条件
13.单击参数页签编辑
这里每一个参数表达式将会在生成报表是一次替换检索条件中问号。
14.再次浏览PuTongReport.raq文件,填写相关条件单击查询后结果如下:
示例三:填报报表
目标:
1.了解填报表单功能
2.了解填报表单开发过程
资源:参考润乾报表系统自带Demo数据源进行开发演示。
说明:
填报报表主要两种方式是生成:1. 新建填报表2.将普通报表转化填报报表
我们以普通报表转化填报报表进行示例说明。
过程:
1.打开PuTongReport.raq报表文件
2.选择属性|报表属性,弹出一个报表属性,然后报表类型选择可以填报。