润乾报表开发示例说明

合集下载

润乾报表4

润乾报表4

润乾报表实现将多个报表导入一个excel的多个sheet在实际的应用中,经常会有数据从excel导入系统数据库或者数据从系统中导入到excel,这两种业务操作润乾报表可以轻易地实现,但普通的导出数据大多都是导出到一个单独的excel中,还有一种客户经常使用的数据处理方式,是将多个报表的运算结果导入到同一个excel的多个sheet中。

下面讲述润乾报表如何实现这一业务。

一:实现思路先读取多个报表,分别计算多个报表,然后把多个结果添加到导出列表,最后实现导出到excel的多个sheet中。

二:实现步骤(以两个报表为例)1:首先制作两个报表one.raq和two.raq,如下图:One.raqTwo.raq2:利用润乾提供的方法读入两个报表,读入计算并导出,代码如下:<%@ page contentType=”text/html;charset=GBK” %><%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %><%@ page import=”com.runqian.report4.model.ReportDefine”%><%@ page import=”com.runqian.report4.model.engine.ExtCellSet”%><%@ page import=”ermodel.Context”%><%@ page import=”ermodel.Engine”%><%@ page import=”ermodel.IReport”%><%@ page import=”com.runqian.report4.util.ReportUtils”%><%@ page import=”ermodel.PageBuilder”%><%@ page import=”com.runqian.report4.view.excel.ExcelReport”%><html><body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0><%//创建context对象,设置报表的路径Context ctx = new Context();String path = “D:/Program Files/reportHome/webapps/demo/reportFiles/one.raq”;//读入报表ReportDefine rd = (ReportDefine) ReportUtils.read(path);Engine engine = new Engine(rd, ctx);//计算报表IReport report = engine.calc();Context ctx1 = new Context();String path1 = “D:/Program Files/reportHome/webapps/demo/reportFiles/two.raq”;ReportDefine rd1 = (ReportDefine) ReportUtils.read(path1);Engine engine1 = new Engine(rd1, ctx1);IReport report1 = engine1.calc();ExcelReport er = new ExcelReport();//导出的excel文件命名为moreSheetInExcel.xls,包括两个sheet,一个为one,另一个为two,保存在D盘下er.export(”one”, report);er.export(”two”, report1);er.saveTo(”D:/moreSheetInExcel.xls”); //输出到指定文件out.pr int(”导出成功!”);%></body></html>三:运行此jsp,执行其中的代码当页面中出现导出成功时,就说明两个报表已经成功导入到了moreSheetInExcel.xsl,并分别存储在one sheet和twosheet中,效果如下:总结:本文只是实现这一需求,具体项目中可以统一写一个方法类,动态传入要导出的报表名字,并且动态设置保存路径。

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:数据集设置完成且正确后会出现如下。

润乾报表集成到Eclipse开发环境

润乾报表集成到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(字段) 格式:函数说明:根据分组表达式,从数据集中选出一组组集。

润乾报表批量打印实例

润乾报表批量打印实例

报表批量打印开发全过程(从零开始)第一步:安装报表开发工具下载地址:ftp://172.18.33.219/URP开发必备软件/报表/可执行文件/报表工具客户端设计器的安装文件将该目录下的文件下载到本地并安装目录内的”江苏金智内部开发版设计器v355.dat”注册用第二步:开发报表一般是在现有的报表基础上修改出自己的报表,这样可以快一些,这些报表可以从报表服务器上下载到,地址::9093/report/console/index.jsphost文件:172.18.33.250 用户名:amadmin/11111111(1)配置数据源,数据源可以通过报表控制台查询(2)进行宏定义(类似于系统变量,将来可以通过外部页面传递进报表)(3)配置数据集(可以使用宏定义的变量)(4)开发报表第三步:将开发好的报表上传至报表服务器(1)找到要上传的位置,点击新增报表(2)选择本地报表,完成后点击添加完成报表添加第四步:开发批量打印程序,一般界面如下图所示批量打印逻辑:先检查是否勾选,若勾选则打印勾选记录,若不存在则检查查询条件是否为空,不为空则打印所有满足查询条件的记录,否则提示“请选择要打印的记录”涉及的文件:开发服务器中:swms.propertie,BGTAG.jsp,JB.jsp报表服务器中:batchPrint.jsp(1)swms.propertie文件中增加报表服务器打印地址#报表服务器打印地址REPORT_PRINT=:9093/report/run/reportJsp/batchPrint.jsp(2)BGTAG.jsp1)头文件中增加:<%@ page import="com.wiscom.app.swms.service.factory.SwmsConfig" %>2)toolbar中增加:<ext:toolbutton id="btn_print" value="打印"imgSrc="/epstar/web/swms/client/resources/images/toolbar/print.gif"action="printReport" styleClass="" hiliteStyleClass="" />3)Pane中增加(蓝色代码部分)</ext:datagrid><script language="javascript"><%String filterRep="";if(request.getParameter("filter")!=null){filterRep=request.getParameter("filter");}%>var filterRep="<%=filterRep%>";var printReportUrl="<%=SwmsConfig.getConfig("REPORT_PRINT")%>";window.onresize = function (){document.getElementById("div_V_DK_DKHTST").style.width =document.body.offsetWidth;};window.onresize();</script></ext:Pane>(3)JB.jsp中增加printReport()函数备注:修改该函数中和自己模块相关的参数//打印函数function printReport(){/*================================================================================ 功能描述 : 打印所有选中的报表作用窗体 :输入参数 : 无输出参数 : 无================================================================================*/ var report="";var objStr=DataGrid_GetSelectedRows("V_DK_DKHTST");//首先检查过滤条件以及是否有勾选,若都不满足,直接返回if((filterRep=="")&&(objStr==""||objStr==null)){alert("提示:请选择要打印的记录!");return false;}//然后检查是否有勾选,若有则处理勾选记录,否则处理过滤条件if(!(objStr==""||objStr==null)){for(var i=0;i<objStr.length;i++){report+="{学工系统/助学贷款管理/助学贷款申请审批表.raq(condition_1='"+StringURLEncode(objStr[i].cells[1].XH)+"';condition_2='"+Stri ngURLEncode(objStr[i].cells[1].HTH)+"')}";}report+="&prompt=yes";}else{if(filterRep!=""){var objPath="SWMS/GJZXDKGLZXT/HTGL/V_DK_DKHTST";var fieldName="XH,HTH";//从filter中获取过滤条件var filter=filterRep.substring(12,filterRep.length);var xmlDoc;xmlDoc=Page_GetServerDataXmlCP(objPath, fieldName, filter, "","");var XH=xmlDoc.documentElement.selectNodes("//XH");var HTH=xmlDoc.documentElement.selectNodes("//HTH");if(xmlDoc.documentElement.selectNodes("//XH").length!=0){for(var i=0;i<XH.length;i++){report+="{学工系统/助学贷款管理/助学贷款申请审批表.raq(condition_1='"+StringURLEncode(XH[i].text)+"';condition_2='"+StringURLEncode (HTH[i].text)+"')}";}}else{alert("提示:请选择要打印的记录!");return false;}}}//此JSP参数格式为:report={无参数报表名}{报表1(参数1=value1;参数2=value2;...)}{报表2(参数1=value1;参数2=value2;...)}...prompt=yesreport="?report="+report;url =printReportUrl+report;window.showModalDialog(url,"","dialogHeight: 150px; dialogWidth: 250px; resizable:Yes; status:no;center:yes");}(4)batchPrint.jsp见附件第五步:打印测试(1)在本地安装1.5.0以上(包含1.6.0)的jre,本进行相关设置,打印时可以看到Java控制台。

润乾常用报表开发实例

润乾常用报表开发实例

常见报表形式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页脚的设置技巧如果页脚的上面单元格有边框的话,直接在下面加入页脚则在展示的时候会多出一条横线。

润乾报表设计器简易教程

润乾报表设计器简易教程

润乾报表设计器简易教程建立一个新的报表由存储过程的编写和表样的设计两部分组成,其中,表样的设计是利用润乾设计器进行的。

用润乾建立一个新的表样可以分为以下几步:新建数据源、连接数据源、设置参数、设置数据集、绘制表样、预览表样。

在以下步骤说明中,以预算上报下达差异表为例进行说明。

该报表的查询条件包括年度、单位和模板。

表样如下所示:2010年预算上报下达差异表制表部门:查询单位期间:2010年单位:万元预算科目本单位下级单位1 下级单位2 上报值下达值差异上报值下达值差异…预算科目1预算科目2预算科目3预算科目4预算科目5合计制表人:登录用户制表时间:2010-07-261新建数据源配置数据源的目的是为了连接数据库。

配置的步骤如下:➢打开设计器后,点击配置——数据源,打开配置数据源的界面。

➢点击新建,在数据库类型中根据实际情况选择数据库类型,针对TBM系统,选择的是关系数据库,点击确定。

➢在数据源常规属性设置页面进行数据源的设置,如下图所示:✓数据源名称:可以任意指定,建议采取tbmbj等名称对各地数据库进行直观性区分。

✓数据库类型:选择对应数据库类型,TBM系统采用的是DB2数据库。

✓客户端字符集:指的是从数据库取出的数据在客户端展现时的字符编码,可以采用默认的GBK。

✓数据库字符集:指的是从数据库中取过来的字符编码,根据数据库的编码类型选择,可以采用默认的GBK。

✓驱动程序:输入“com.ibm.db2.jcc.DB2Driver”即可。

✓数据源URL:数据源URL的输入格式为jdbc:db2:// IP地址:端口号/数据库名,例如:jdbc:db2://192.168.168.6:50000/tbmbj。

✓用户、口令:数据库用户名和密码。

➢设置完成后,点击【确定】按钮,回到数据源配置界面,关系数据库类型的数据源就配置完成了,数据源配置界面中就列出了新建的数据源。

2连接和断开数据源选中需要连接和断开的数据源后,点击数据源配置窗口的连接或断开即可。

润乾报表4.0高级设计(一)

润乾报表4.0高级设计(一)
基本概念 扩展模型 主格模型 层次坐标 格集 线性坐标 平面坐标
第10页
1.2.1 运算模型基本概念
集合函数
运算结果为集合的函数,我们称为集合函数。
集合函数包括:group(),select(),list(), query(),call(),to()等。
集合表达式/单值表达式
计算结果为集合的表达式称为集合表达式; 计算结果为单值的表达式称为单值表达式。
第11页
集合表达式与单值表达式
集合表达式 单值表达式
第12页
集合函数
Select Group Call/Call2 query/query2 List …
第13页
Select()
语法:
datasetName.select( <select_exp>{, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} )
第14页
练习
网格式报表
第15页
group()
语法:
datasetName.group(selectExp{,descExp{,filterExp{,sortExp {,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})
=ds1.sum(# 5,#4==A1)
一组数据的集合,数据类型由sql语句的第一个选出字段决定
第22页
query2()
函数说明:
执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语 句中有多个字段,则返回第一个字段的结果值。和query()函数的差别 在于多了第一个参数,第一个参数用于制定数据源名称,通过他可以 实现不同单元格从不同数据源获取数据 语法: query2(dbname, sqlStatement{,arg1{,arg2{,arg3{,……}}}} 参数说明: dbname 数据库逻辑名,为null表示缺省数据库 sqlStatement 合法的sql语句 arg(n) sql语句的参数,可以是常数也可以是表达式 返回值: 一组数据的集合,数据类型由sql语句的第一个选出字段决定

润乾报表3.0

润乾报表3.0

润乾报表3.0一、产品概述 (2)1.模块结构 (2)2.运行环境 (2)二、绘制方案 (2)1.基本方案 (2)2.传统工具对比 (3)3.套打 (4)三、数据模型 (4)1.报表特点分析 (4)2.数据源 (5)3.简单报表 (5)4.交叉报表 (6)5.分片报表 (7)6.跨行组运算 (8)7.子报表 (9)8.参数与宏 (10)四、展现输出 (10)1.单元格属性 (10)2.统计图 (11)3.输出格式 (11)4.打印控制 (13)五、特色填报 (13)1.填写控制 (13)2.数据模型 (14)3.应用方案 (15)六、其它功能 (15)1.参数面板 (15)2.语义层与表达式输入 (16)3.调度器 (16)4.交互能力 (16)七、集成讨论 (16)1.支持方案 (16)2.J2EE集成 (17)3.集成对比 (17)八、性能分析 (18)1.运算性能 (18)2.其它性能问题 (18)一、产品概述润乾报表3.0是用于统计报表制作及数据填报的大型企业级工具软件。

产品首次成功解决了报表单元格与关系数据库之间的弱关联规律性,特别适合于复杂中国报表的统计和填报,真正做到零编码制作报表,其制表效率十倍于以国外产品为代表的传统报表工具。

北京润乾软件技术有限公司拥有润乾报表3.0软件产品的完全知识产权,并在其中首创了适合于中国报表统计和填报的理论模型,功能和性能都居世界领先地位,全面超越国外同类产品。

1.模块结构润乾报表3.0物理上由三个部分构成:¾报表设计器:设计编辑报表,自带报表运算引擎,连接数据库后可预览打印报表,并可生成其它格式保存。

设计器不依赖于其它部分,可独立工作; ¾报表服务器:在后台提供统计报表运算和数据填报处理的服务,开放各层次的API接口调用,由程序员调用生成结果报表;服务器运行不依赖设计器; ¾报表调度器:作为服务程序运行,在设定的时刻自动计算报表并将结果保存或推送到指定的目标;调度器运行依赖服务器;2.运行环境润乾报表3.0采用纯JAVA开发,报表设计器使用了swing图形类包,要求JDK1.4.2以上;服务器和调度器要求JDK1.3.1以上。

润乾报表入门

润乾报表入门

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报表通过配置的“数据集”进行取数。

润乾报表函数文档

润乾报表函数文档

润乾报表函数文档数据集函数Avg函数说明:从数据集中,从满足条件的记录中,算出给定字段或表达式的平均值语法:datasetName.avg(selectExp{,filterExp})datasetName.average(selectExp{,filterExp})参数说明:selectExp 需要计算平均值的字段或表达式,数值类型filterExp 过滤条件表达式返回值:实数举例:例1:ds1.avg(score,sex="1")表示从数据集的当前记录行集中过滤出sex为"1"的记录集合,求得其score字段的平均值,score字段要求为数值型。

例2:ds2.avg(quantity*price)表示对数据集的当前记录行集求得表达式quantity*price的平均值函数说明:此函数功能等同select1(),但是算法不同,采用二分法,适用于数据集记录已经按照参考字段排好序的情况,运算速度比select1()快bselect1语法:datasetName.bselect_one(selectExp,referExp1,referDescExp 1,referV alueExp1{,referExp2,referDescExp2,referV alueExp2{....}}})datasetName.bselect1(selectExp,referExp1,referDescExp1,ref erV alueExp1)参数说明:selectExp 选出字段或表达式referExp1 参考字段表达式referDescExp1 参考字段表达式的数据顺序,true表示降序排列,false表示升序排列referV alueExp1 参考字段的值表达式,一旦找到参考字段和该值相同的记录,即返回selectExp的值返回值:数据类型不定,由selectExp的运算结果决定示例:例1:ds1.bselect1(name,id,false,@value)采用二分法,找到数据集ds1中id和当前格的值相等的记录,返回其name字段值例2:ds1.bselect1(name,id,false,@value,class,false,A1,sex,true,B1) 采用二分法,找到数据集ds1中id和当前格的值相等、class和A1相等且sex和B1相等的记录,返回其name字段值Bselect_one()此函数同数据集函数bselect1colcount()函数说明:获得数据集的列数语法:datasetName.colcount()返回值:整数举例:例1:ds1.colcount() 获得ds1数据集的列数,整数类型函数说明:计算数据集当前记录行集中,满足条件的记录数count()语法:datasetName.count({filterExp})参数说明:filterExp 条件表达式,如果全部选出,则不要此参数,返回值:整数举例:例1:ds1.count()例2:ds1.count(true)含义同上,但是运算速度比ds1.count()慢,因此当记录全部选出时,建议不要true例3:ds1.count(quantity>500)表示从ds1当前记录行集中选出quantity>500的记录进行计数,返回记录数。

润乾报表函数

润乾报表函数

润乾报表函数函数⽰例:例1:ds1.select( name )从数据源ds1中选取name字段列的所有值,不排序例2:ds1.select( #2, true )从数据源ds1中选取第⼆个字段列的所有值并降序排列例3:ds1.select( name,false,sex=='1')从数据源ds1中选取性别为男性('1')的name字段列的值并升序排列例4:ds1.select( name, true, sex=='1', id )从数据源ds1中选取性别为男性的name字段列的值并按id字段降序排列=====================================================================⽰例:例1:ds1.select1(name)返回数据集ds1中第⼀条记录的name字段值例2:ds1.select1(name,score>90)从数据集ds1中检索出成绩⼤于90的记录,返回第⼀条记录的name字段值======================================================================⽰例:例1:ds1.group(class)把数据集ds1中所有记录按照class字段进⾏分组,并返回每组的class值组成的集合例2:ds1.group(class, true )把数据集ds1中所有记录按照class字段降序排列,然后根据class进⾏分组,并返回每组的class值组成的集合例3:ds1.group(class,false,sex=='1')从数据源ds1中选取性别为"1"的记录,按照class字段升序排列,然后根据class进⾏分组,并返回每组的class值组成的集合例4:ds1.group(class, true, sex=='1', id )从数据源ds1中选取性别为"1"的记录,按照id字段降序排列,然后根据class进⾏分组,并返回每组的class值组成的集合例5:ds1.group(省份,true,,,sum(⼯业产值),true)对数据集ds1按照省份进⾏分组,分组后求出每组的sum(⼯业产值),然后按照这个汇总值对组进⾏逆序排列润乾报表:datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})集算报表:datasetName.group(<selectExp>{,filter_exp};{sort1}{:order1},…;{groupSortExp }:{ groupOrderExp })选项:@r 是否root数据集表达式。

关于润乾报表的补充说明

关于润乾报表的补充说明

分页说明:为方便大家开发,本人在工资系统中作出一个DEMO,经过测试后能正常使用。

先将部分代码与注意事项发给大家看一下第一步:如果该报表需要分页的话,请将下面的<form action="${ctx}/rq/report/showExt"method="post"id="reportForm"> <input type="hidden"name="raq"id="raq"/><input type="hidden"name="param"id="param"/><input type="hidden"name="countSql"id="countSql"/></form>替换掉原先的。

第二步:增加$j("#countSql").val("分页语句");请注意字符串的要写单引号:并且写成如下形式:\\'${字符串}\\'ShowExt.jsp 修改成<report:extHtml name="report1"reportFileName="<%=raq%>"funcBarLocation=""params="<%=param.toString()%>"needPageMark="yes"pageCount="20"totalCountExp="<%=countSql%>"paperHeight="600"/>附录:3.8. 分页计算标签本功能采用报表组的原理来实现,因此需要支持报表组的授权3.8.1. 概念定义使用分页计算标签可以在报表比较大的情况下实现以页为单位对数据进行读取和展现及导出等操作。

润乾报表reportConfig.xml配置示例

润乾报表reportConfig.xml配置示例

reportConfig.xml配置方法说明以下配置文件中不做特别说明的节点均严格按照文档进行配置。

<?xml version="1.0"encoding="UTF-8"?><reportConfig><!-- 报表日志文件路径--><config><name>logConfig</name><value>runqianReportLog.properties</value></config><!-- 授权文件路径--><config><name>license</name><value>runqianWindowServer.lic</value></config><!-- raq文件在应用中的路径--><config><name>reportFileHome</name><value>/runqian/reportFiles</value></config><!-- 报表语义层文件路径--><config><name>semanticsFile</name><value></value></config><!-- 配置查找数据源时应用服务器环境串的前缀,以下为tomcat的配置,开发人员可根据项目实际使用的应用服务器进行更改(附录一)--><config><name>JNDIPrefix</name><value>java:comp/env</value></config><!-- JNDI数据源连接,格式:数据源的JNDI名称,数据库类型[,取数时是否需要转换编码,数据库字符集编码,显示报表时的字符集编码][,SQL是否需要转码];[重复]……(数据库类型请参考附录二)--><config><name>dataSource</name><value>jdbc/test,oracle;exercise,sqlsvr,1,iso8859-1,GBK,0;</value></config><!-- 报表应用中jsp页面的字符集--><config><name>jspCharset</name><value>UTF-8</value></config><!-- 是否每次重新装载报表模板,为no开启报表缓存,yes关闭报表缓存(这里的关闭只是说不从缓存中读取报表,新运算的报表依旧会放入缓存中)--><config><name>alwaysReloadDefine</name><value>yes</value></config><!-- 参数最大未访问时长,以分钟为单位--><config><name>cachedParamsTimeout</name><value>10</value></config><!-- 配置缓存报表目录,如果不配置则采用JDK默认的临时文件夹--><config><name>cachedReportDir</name><value></value></config><!-- 报表缓存的前缀。

润乾报表实现动态数据源报表及改进

润乾报表实现动态数据源报表及改进

润乾报表实现动态数据源报表及改进经常会遇到一些报表需要根据不同的情况(参数)连接不同的数据源从而完成相应的数据的展现,也就是经常说的动态数据源报表。

报表工具通常的做法有两种,一是不同的情况加载不同的数据源连接参数,如:url、driver、username、password等;二是利用已配置的多个连接池,根据不同情况选择。

这里通过一个实例,说明润乾报表的实现过程及改进方案。

报表说明应用中需要通过参数控制报表连接的数据源,当参数flag为1时连接数据源一(db1),否则连接数据源二(db2)。

润乾报表实现首先根据flag参数为context设置不同数据源(这里以两个hsql数据库为例):String flag=request.getParameter("flag");Connection con1 = null;Connection con2 = null;try{Driver driver = (Driver)Class.forName("org.hsqldb.jdbcDriver").newInstance();DriverManager.registerDriver(driver);con1=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/runqianDB","sa"," ");con2=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/demo","sa","");}catch (Exception e){e.printStackTrace();}Context cxt= new Context();String defDsName = cxt.getDefDataSourceName ();if ("1".equals(flag) || "1"==flag){cxt.setConnection(defDsName, con1);}else{cxt.setConnection(defDsName, con2);}将cxt存入request:request.setAttribute("myContext", cxt );以context方式发布报表:<report:html name="report1"contextName=”myContext”/>通过使用润乾报表的API可以完成动态数据源报表,详尽的API的确为应用开发人员提供了诸多便利。

润乾报表4.0高级设计

润乾报表4.0高级设计

润乾报表软件的核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的强关联语义模型、多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,报表设计的效率提高了一个数量级。

培训内容多源关联分片不规则分组动态格间运算动态参数动态宏报表组高级统计图一、多源关联分片多层交叉报表分片行列对称多片扩展1.1 多层交叉报表扩展模型主格模型交叉扩展扩展模型不可扩展当单元格的数据值表达式为单值表达式时,该单元格默认为不可扩展单元格。

扩展单元格当单元格的数据值表达式为集合表达式时,该单元格默认为可扩展单元格。

可扩展横向扩展纵向扩展主格模型基本概念扩展变化规则主格模型-基本概念主格和附属格左主格和上主格多层扩展直接主格和直接附属格根格(`0)主格与附属格单元格进行扩展的过程中,缺省情况下,相对于其右(下)边的单元格而言,扩展格是主动复制的,被称为其它格(其右/下的格)的主格,而其右(下)的单元格是被动跟随复制的,被称为扩展格的附属格或子格。

只有扩展格才能是其它格的主格!主格和附属格是相对的概念,即某格是另一格的主格或附属格,不存在单独的主格和附属格。

左主格和上主格在缺省情况下,单元格进行纵向扩展时,我们称其右的格的左主格在缺省情况下,单元格进行横向扩展时,我们称其下的格的上主格在缺省情况下,扩展格左(上)的格并不是其附属格,只有右(下)的格才是其附属格。

某个单元格的左主格或者上主格属性可以人为的被改变多层扩展多个单元格同时进行扩展时,一个扩展格可以既是某些格的主格又是另一个扩展格的附属格,这种情况下就形成多层扩展的情况。

一级主格即为直接主格,一级附属格即为直接附属格根格根格即报表首格,用(`0)表示扩展变化规则单元格进行横向扩展时,会将其同列的上主格拉大,把其附属单元格复制,特别地,如果其某个上主格不在同列上,则该上主格不会被拉大;举例单元格进行纵向扩展时,会将其同行的左主格拉大,把其附属单元格复制,特别地,如果其某个左主格不在同行上,则该左主格不会被拉大。

润乾报表高级设计(二)

润乾报表高级设计(二)

第39页
练习-行后分页2
要求:做一张下图所示的合同单,一个合同单在 一页里显示
第40页
练习-行后分页3
要求:每一页显示一个合同单,每个合同明细不 足5行的补足空行。
第41页
布局行数/列数
布局行数:如果报表是按照行数分页的,那么一张打印 布局列数:如果报表是按照行数分页的,那么一张打印 举例:
纸上可能打印多页报表,该参数设定一张打印纸上纵向可 以打印几排报表 纸上可能打印多页报表,该参数设定一张打印纸上横向可 以打印几排报表
第55页
尽量在sql里排序
报表中往往需要对数据进行排序,排序运算可以 在数据库中进行,也可以在报表端进行,如果报 表中的排序规则是确定的,那么建议排序操作选 择在数据库端进行,因为数据库中有索引,且数 据库是c语言开发的,数据运算速度快。
第56页
尽量在sql里过滤
报表很多时候并不需要对表中的所有记录进行操 作,而是对部分满足条件的记录进行操作,因此 建议过滤操作在数据库中进行,这样取到报表服 务器端的记录数大大减少,既加快了取数的速度 ,也加快了报表的运算速度,因为报表需要处理 的数据少了。
第51页
练习
主子表 按照上例的表样分别用单数据集和多数据集实现
第52页
2.2 写sql的技巧
尽量在sql里进行group
对于汇总类型的报表,往往需要进行分组聚集运算,如果 在数据库中先进行一次分组聚集,能够大大减少取到报表 服务器的记录数,加快取数和报表运算的速度。
第53页
第一种:select 产品,客户,销量 from 购买记录表
要求:通过里程碑图展现某公司各个项目计划与 实际完成时间的对比
第25页
时间走势图

润乾集算报表非常规统计之按段分组

润乾集算报表非常规统计之按段分组

润乾集算报表非常规统计之按段分组报表开发中,经常会碰到一些需要进行非常规统计的报表,固定分组、可重复分组、组内排序,还包括跨行组计算的报表,甚至有些报表本身无数据来源、以及需要对数据源再计算。

这些报表本身具备一定的特殊性,使用常规方法往往难于实现。

对于按段分组报表,各段之间可以有重复,也就可能出现按段可重复的分组报表。

集算报表在完成这类特殊统计报表时比较简单,这里通过一个实例说明实现过程。

报表说明根据员工基本信息表按年龄统计各年龄段区间的人数、奖金等汇总情况。

报表样式如下:这里“30-40岁”和“35-45”岁两个区间是有重复的。

下面来对比一下润乾报表和集算报表实现上的差异。

这个报表的麻烦之处在于需要进行的分组是有重复的,报表要完成较复杂的数据计算工作,但一般报表工具的计算能力较弱,如果采用报表工具本身来完成这个计算工作则会相当复杂,比如采用用润乾报表来实现将会是这样的:在润乾报表中,该类报表主要通过ds.enumGroup()函数完成,报表模板及表达式如下:其中A2单元格表达式为:=ds1.enumGroup(true,age(BIRTHDA Y)>20&&age(BIRTHDAY)<=30,"20岁到30岁",age(BIRTHDAY)>30&&age(BIRTHDA Y)<=40,"30岁到40岁",age(BIRTHDAY)>=35&&age(BIRTHDAY)<45,"35岁到45岁", age(BIRTHDAY)>=45,"45岁以上")润乾报表在实现上使用了ds.enumGroup()函数,在分组较少的时候做起来比较简单,这也是其他报表工具无法比拟润乾报表的方面。

但当分组较多,计算比较复杂的情况下,润乾报表实现起来就比较困难了。

润乾报表使用手册(可编辑修改word版)

润乾报表使用手册(可编辑修改word版)

报表使用手册报表使用手册XX 股份有限公司中国济南目录1 概述............................................................................................................................. .- 3 -2 安装...............................................................................................................................-3 -2.1 准备好安装程序...........................................................................................- 3 -2.2 安装中的选项...............................................................................................- 3 -2.3 授权文件配置...............................................................................................- 4 -3 报表制作.......................................................................................................................- 5 -3.1 报表制作要求...............................................................................................- 5 -3.2 制作一张报表的步骤...................................................................................- 5 -3.3 启动报表设计器...........................................................................................- 6 -3.4 连接数据源...................................................................................................- 7 -3.4.1 数据源对话框..........................................................................................- 7 -3.4.2 编辑数据源..............................................................................................- 7 -3.4.3 注意事项..................................................................................................- 9 -3.5 设计报表格式.............................................................................................- 10 -3.5.1 格式设计................................................................................................- 10 -3.5.2 需注意事项............................................................................................- 11 -3.6 定义参数.....................................................................................................- 11 -3.6.1 参数的编辑............................................................................................- 11 -3.6.2 常用参数举例........................................................................................- 12 -3.7 定义宏.........................................................................................................- 12 -3.7.1 宏的编辑................................................................................................- 12 -3.7.2 常用宏举例............................................................................................- 13 -3.8 建立数据集.................................................................................................- 13 -3.8.1 数据集的编辑........................................................................................- 13 -3.8.2 常用数据集举例....................................................................................- 14 -3.9 设置单元格属性.........................................................................................- 16 -3.9.1 数据集在单元格中应用........................................................................- 16 -3.9.2 显示格式................................................................................................- 16 -3.9.3 设置预警条件........................................................................................- 16 -3.9.4 增加动态背景色....................................................................................- 17 -3.9.5 按参数隐藏列........................................................................................- 17 -3.9.6 主格应用................................................................................................- 17 -3.10 报表预览.....................................................................................................- 18 -3.11 报表发布.....................................................................................................- 18 -4 报表部署.....................................................................................................................- 19 -4.1 部署位置.....................................................................................................- 19 -4.2 Web 中显示................................................................................................- 19 -5 重要概念.....................................................................................................................- 20 -5.1 数据源.........................................................................................................- 20 -5.2 数据集.........................................................................................................- 20 -5.3 参数.............................................................................................................- 20 -5.4 宏定义.........................................................................................................- 21 -5.5 单元格....................................................................................................... .- 22 -5.6 主格.............................................................................................................- 22 -6 常用函数.....................................................................................................................- 24 -6.1 数据集函数.................................................................................................- 24 -6.1.1 select() .....................................................................................................- 24 -6.1.2 select1() ...................................................................................................- 24 -6.1.3 count() .....................................................................................................- 25 -6.2 单元格函数.................................................................................................- 25 -6.2.1 if() ............................................................................................................- 25 -6.2.2 row() ........................................................................................................- 25 -6.2.3 value()......................................................................................................- 25 -6.3 字符串函数.................................................................................................- 25 -6.3.1 pos().........................................................................................................- 25 -6.3.2 mid() ........................................................................................................- 25 -6.4 数据类型转换函数.....................................................................................- 25 -6.4.1 dateTime() ...............................................................................................- 25 -6.4.2 str() ..........................................................................................................- 25 -1概述该文档主要满足iES-E200 电量采集系统中自定义报表制作编写。

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