起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: qweasdzxc

[结贴] 主从表导入

[复制链接]

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-11-7 14:53:27 | 显示全部楼层
本帖最后由 qweasdzxc 于 2017-11-7 15:28 编辑
jishuang 发表于 2017-11-7 13:48
导入的DB的要刷新数据才会加载,而且要看data的分页加载多少条数据

数据量大怎么办?分页是不是就找不到了?
是不是能写action到数据库里用sql操作了?数据量大会卡吧
代码如下也不行啊,先刷新了
  1. Model.prototype.importExcelSuccess = function(event){
  2.            var mainData=this.comp('mainData');
  3.            mainData.refreshData();
  4.            var detailData=this.comp('detailData');
  5.            detailData.refreshData();
  6.             var params = new biz.Request.ActionParam();
  7.                 biz.Request.sendBizRequest({
  8.                         "context" : this.getContext(),
  9.                         "action" : "updateImportAction",
  10.                         "parameters" : params,
  11.                         "directExecute" : true,
  12.                         "callback" : function(data) {
  13.                               debugger
  14.                         }
  15.                 });
  16. }

  17. public static void updateImport(){
  18.         String ksql = "select a,a.fLXBH from XL_LXB a where a.fLXBH like '%新增'";
  19.         Table table=KSQL.select(ksql, null, "/XL/CS/data", null);
  20.         Iterator<Row> iter = table.iterator();
  21.         while(iter.hasNext()){
  22.                 Row row = iter.next();
  23.                     String fLXID=row.getString(0);
  24.                     System.out.println(fLXID);
  25.                     String fLXBH=row.getString("fLXBH");
  26.                     System.out.println(fLXBH);
  27.                     String sql2="update XL_WPB a SET a.fLXID ='"+fLXID+"' WHERE a.fLXID like '%新增'";
  28.                     SQL.executeUpdate(sql2, null, "/XL/CS/data", null);
  29.                     fLXBH=fLXBH.substring(0, fLXBH.length()-2);
  30.                     System.out.println(fLXBH);
  31.                     String sql3="update XL_LXB a SET a.fLXBH ='"+fLXBH+"' WHERE a.fID = '"+fLXID+"'";
  32.                     SQL.executeUpdate(sql3, null, "/XL/CS/data", null);
  33.                 }
  34.         }
复制代码


回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-11-7 15:58:52 | 显示全部楼层
直接导入到数据库的,就应该调用action在java中用sql直接操作数据库,不是在js中再查找数据遍历数据再修改数据保存
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-11-7 16:02:37 | 显示全部楼层
jishuang 发表于 2017-11-7 15:58
直接导入到数据库的,就应该调用action在java中用sql直接操作数据库,不是在js中再查找数据遍历数据再修改 ...

是直接到DB,我上面11楼的代码也是调用action在JAVA中用sql操作,但是不行啊
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-11-7 16:56:04 | 显示全部楼层
具体怎么不行
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-11-7 20:48:25 | 显示全部楼层

1.第一次导入数据后 String ksql = "select a,a.fLXBH from XL_LXB a where a.fLXBH like '%新增'";查不出数据来,导入完成后看数据库里有数据,第二次导入就可以查出来了。
2.像楼5那样的主从excel导入后主表有多条,怎么只取一条?如果第二行不写主表信息,excel导入前校验时遍历到第二行就报空指针
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-11-8 09:56:44 | 显示全部楼层
1.导入的DB的导入后查询是可以获取到的
  1.         public static Table getImportData(){
  2.                 String ksql = "select odr.* from AP_0DR odr where odr.fZB1 like '%新增%'";
  3.                 Table table = KSQL.select(ksql, null, "/appdemo/test/data", null);
  4.                 return table;
  5.         }
复制代码

import.png



import1.png


2.可以把其他行中某一列的值删除,然后在xml中这列上配置check="true"

check: excel中行数据是否有效判断,当check="true"时cell-number对应列值为空,认为此行数据无效将被忽略
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-11-8 10:29:03 | 显示全部楼层
本帖最后由 qweasdzxc 于 2017-11-8 10:31 编辑
jishuang 发表于 2017-11-8 09:56
1.导入的DB的导入后查询是可以获取到的

我设置了check,就是会报错,31行如图4
  1. public static void zcdrProcessAfterImportExcelBeforeAction() {
  2.                         System.out.println("导入前");
  3.                 //获得excel文件
  4.                 Workbook workBook = (Workbook)ModelUtils.getRequestContext().getActionContext().getParameter("excel");
  5.                 Sheet sheet = workBook.getSheetAt(0);//获得sheet表1

  6.                 for(int i=1;i<=sheet.getLastRowNum();i++){ //(从第二行开始)对行进行循环
  7.                   Row row=sheet.getRow(i);
  8.                   Cell cell1=row.getCell(0);//第一列
  9. //                  Cell cell2=row.getCell(1);//第二列
  10. //
  11.                   
  12.                   String flxbh = cell1.toString();// 类型编码
  13.                   cell1.setCellValue(flxbh+"新增");
  14. //                              String flxmc = cell2.toString();// 类型名称
  15.                                 
  16.                             Cell cell3=row.getCell(2);//第三列
  17.                   Cell cell4=row.getCell(3);//第四列
  18.                   String fwpbh = cell3.toString();// 类型编码
  19.                                 String fwpmc = cell4.toString();// 类型名称  
  20.                                 String ksql = "INSERT INTO XL_WPB p (p, p.version, p.fLXID ,p.fWPBH ,p.fWPMC) VALUES ('"+ CommonUtils.createGUID() +"', 0, '新增', '"+ fwpbh +"', '"+ fwpmc +"')";
  21.                   KSQL.executeUpdate(ksql, null, "/XL/CS/data", null);
  22.                }
  23.         }
复制代码
  1. 2017-11-08 10:24:00 excute stream action, params:{"accept":"application/json","action":"importExcel","actionFlag":"__action_0__","activity":"mainActivity","contentType":"json","executeContext":"","executor":"","parameters":{"config":{"@type":"xml","xml":"<config use-default="true" to="DB" excel-file="E:\\BeX5_V3.7(XL)\\apache-tomcat\\temp\\afd832cb-409c-46fc-abfc-91e495dd059d.excel.tmp" mapping-file="E:\\BeX5_V3.7(XL)\\apache-tomcat\\temp\\41d15672-6c86-4d76-9505-6004129263c8.excel.tmp"><data><concept name="XL_LXB"><relation name="XL_LXB" type="String"/><relation name="fLXBH" type="String"/><relation name="fLXMC" type="String"/><relation name="version" type="Integer"/></concept></data></config>"},"createActionParam":{"action":"createXL_LXBAction","activity":"mainActivity","parameters":{"table":{"@type":"table","rows":[],"userdata":{"idColumnDefine":"XL_LXB","idColumnName":"XL_LXB","idColumnType":"String","model":"/XL/CS/data","relationAlias":"fLXBH,fLXMC,version","relationTypes":"String,String,Integer","relations":"XL_LXB.fLXBH,XL_LXB.fLXMC,XL_LXB.version","updateMode":"whereVersion"}}},"process":"/XL/CS/process/zcdr/zcdrProcess"},"saveActionParam":{"action":"saveXL_LXBAction","activity":"mainActivity","parameters":{"table":{"@type":"table","rows":[{"fLXBH":{"changed":"1"},"fLXMC":{"changed":"1"},"userdata":{"id":{"value":"96A8FE940B1A4D92831A5905F678633F"},"isModified":true,"recordState":"new"},"version":{"changed":"1","value":0}}],"userdata":{"idColumnDefine":"XL_LXB","idColumnName":"XL_LXB","idColumnType":"String","model":"/XL/CS/data","relationAlias":"fLXBH,fLXMC,version","relationTypes":"String,String,Integer","relations":"XL_LXB.fLXBH,XL_LXB.fLXMC,XL_LXB.version","sys.count":2,"sys.rowid":"XL_LXB","updateMode":"whereVersion"}}},"process":"/XL/CS/process/zcdr/zcdrProcess"}},"process":"/XL/CS/process/zcdr/zcdrProcess"}
  2. java.lang.reflect.InvocationTargetException
  3.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  4.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  5.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  6.         at java.lang.reflect.Method.invoke(Method.java:497)
  7.         at com.justep.system.action.Engine.invokeActions(Native Method)
  8.         at com.justep.system.action.Engine.invokeActions(Unknown Source)
  9.         at com.justep.business.server.BusinessServer.doAction(Unknown Source)
  10.         at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
  11.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  12.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  13.         at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
  14.         at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
  15.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  16.         at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
  17.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  18.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  19.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  20.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  21.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  22.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  23.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  24.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  25.         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  26.         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
  27.         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
  28.         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  29.         at java.lang.Thread.run(Thread.java:745)
  30. Caused by: java.lang.reflect.InvocationTargetException
  31.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  32.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  33.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  34.         at java.lang.reflect.Method.invoke(Method.java:497)
  35.         at com.justep.system.action.Engine.invokeAction(Native Method)
  36.         at com.justep.system.action.Engine.invokeAction(Unknown Source)
  37.         at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
  38.         at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
  39.         at com.justep.excel.ImportGenerator.generate(ImportGenerator.java:121)
  40.         at Excel.importExcel(Excel.java:88)
  41.         ... 27 more
  42. Caused by: java.lang.NullPointerException
  43.         at ZcdrProcess.zcdrProcessAfterImportExcelBeforeAction(ZcdrProcess.java:31)
  44.         ... 37 more
复制代码



003.png
002.png
004.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-11-8 10:47:36 | 显示全部楼层
你只需第一行数据,那就只获取第一行的
获取其他的行可以自己加空的判断啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-11-8 11:47:30 | 显示全部楼层
jishuang 发表于 2017-11-8 10:47
你只需第一行数据,那就只获取第一行的
获取其他的行可以自己加空的判断啊 ...

我的导入后excel编码填的是4,类型string,导进去后,在后台获取到的是4.0,什么原因?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-11-8 14:09:54 | 显示全部楼层
数据库中存的是4.0?
导入事件中获取excel中的值看看是什么
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-28 12:08 , Processed in 0.062889 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表