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

QQ登录

只需一步,快速开始

查看: 1444|回复: 3

[结贴] 概念action 重写后,EXCEL 导出 DB 模式出错,查询界面数据正常

[复制链接]

11

主题

29

帖子

126

积分

初级会员

Rank: 2

积分
126
QQ
发表于 2015-4-20 14:31:09 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
重写action后,数据查询到界面没有问题,

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
        at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1031)
        at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)
        at oracle.jdbc.driver.OracleStatement.doScrollExecuteCommon(OracleStatement.java:4047)
        at oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:4187)
        at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1271)
        at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
        at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
        at Financial.ExecSQL(Financial.java:907)
        at Financial.queryHI_BXZXTJ(Financial.java:1596)
        at sun.reflect.GeneratedMethodAccessor227.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeAction(Native Method)
        at com.justep.system.action.Engine.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
        at Excel.getDBData(Excel.java:42)
        at Excel.exportExcel(Excel.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:595)
java.lang.NullPointerException
        at Financial.queryHI_BXZXTJ(Financial.java:1597)
        at sun.reflect.GeneratedMethodAccessor227.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeAction(Native Method)
        at com.justep.system.action.Engine.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
        at Excel.getDBData(Excel.java:42)
        at Excel.exportExcel(Excel.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:595)


那个SQL语句在数据库上执行正常

页面信息

页面信息

11

主题

29

帖子

126

积分

初级会员

Rank: 2

积分
126
QQ
 楼主| 发表于 2015-4-20 14:41:40 | 显示全部楼层
public static Table queryHI_BXZXTJ(String concept,String select,String from,String aggregate,String dataModel,String fnModel,String condition,List range,Boolean distinct,String idColumn,String filter,Integer limit,Integer offset,String columns,String orderBy,String aggregateColumns,Map variables) throws Exception{
                        //System.out.println("filter=" + filter);
                        String fName=ContextHelper.getPersonMember().getOgn().getFName();
                        String ognID=ContextHelper.getPersonMember().getOgn().getID();
                       
                        String pType="全部";
                       
                        if(hasRoleByCode("BXLDCK")){
                                pType="全部";
                        }else{
                                if(fName.indexOf("枢纽场站")>0){
                                        pType="场站";
                                }else{
                                        pType="公司机关";
                                        ognID=ContextHelper.getPersonMember().getDept().getID();
                                }
                        }
                       
                        //System.out.println("year11=" + variables.size());
                        String year=variables.get("year").toString();
                        String lastYear=(Integer.parseInt(year)-1)+"";
                        String bDate=variables.get("bdate").toString();
                        String eDate=variables.get("edate").toString();
                        //System.out.println("year=" + year);
                        String sql = "select * from (SELECT T1.FID,T1.VERSION,T1.FNAME,T1.FSEQUENCE,T1.FPARENT AS FSJKM,getReimbursemonth(t1.fid,'"+year+"','"+bDate+"','"+eDate+"','"+ognID+"','"+pType+"')/10000 AS FBXJE,getReimbursemonth(t1.fid,'"+lastYear+"','"+bDate+"','"+eDate+"','"+ognID+"','"+pType+"')/10000 AS FSNBX,getReimbursemonth(t1.fid,'"+year+"','"+year+"-01-01','"+eDate+"','"+ognID+"','"+pType+"')/10000 AS FBNLJBX, getBuget(t1.fid,'"+ognID+"','"+year+"','"+pType+"') AS FSUMPRICE,'"+pType+"' as fJGLX  FROM HIMS_FL_BUDGETITEM T1) HI_BXZXTJ where "+ filter;
                        Connection conn = null;
                        ResultSet rs = null;
                        String tableColNames = "";
                        String tableColTpyes = "";
                        String tableColIds = "";
                        int RowNum = 0;
                        Table table = null;
                        try {
                                conn = ModelUtils.getConnection(data_model);
                                Model model = ModelUtils.getRootModel();
                                rs = ExecSQL(conn, sql);
                                ResultSetMetaData rmd = rs.getMetaData();
                                List<String> names = new ArrayList<String>();
                                List<String> types = new ArrayList<String>();
                                for (int i = 1; i <= rmd.getColumnCount(); i++) {
                                        names.add(rmd.getColumnName(i));
                                        types.add(ColumnTypes.transSqlType(rmd.getColumnType(i)));
                                        if (i == 1) {
                                                tableColIds = rmd.getColumnName(i);
                                                tableColTpyes = ColumnTypes.transSqlType(rmd.getColumnType(i));
                                                //tableColNames="字段"+i;
                                        } else {
                                                tableColIds = tableColIds + "," + rmd.getColumnName(i);
                                                tableColTpyes = tableColTpyes + "," + ColumnTypes.transSqlType(rmd.getColumnType(i));
                                                //tableColNames=tableColNames+","+"字段"+i;
                                        }


                                }
                                table = TableUtils.createTable(model, names, types);
                                table.getProperties().put(Table.PROP_NAME_ROWID, "FID");
                                table.getProperties().put(Table.PROP_DB_COUNT, RowNum);
                                table.getProperties().put("relations", tableColIds);
                                table.getProperties().put("relation-types", tableColTpyes);
                                table.getProperties().put("relation-names", tableColNames);


                                while (rs.next()) {
                                        Row row = table.appendRow();
                                        for (ColumnMetaData cmd : table.getMetaData().getColumnMetaDatas()) {
                                                if (ColumnTypes.STRING.equals(cmd.getType()))
                                                        row.setString(cmd.getName(), rs.getString(cmd.getName()));
                                                else if (ColumnTypes.INTEGER.equals(cmd.getType())) {
                                                        rs.getObject(cmd.getName());
                                                        if (rs.wasNull())
                                                                row.setInteger(cmd.getName(), null);
                                                        else
                                                                row.setInt(cmd.getName(), rs.getInt(cmd.getName()));
                                                } else if (ColumnTypes.BLOB.equals(cmd.getType()))
                                                        row.setBlob(cmd.getName(), rs.getBlob(cmd.getName()));
                                                else if (ColumnTypes.DATE.equals(cmd.getType()))
                                                        row.setDate(cmd.getName(), rs.getDate(cmd.getName()));
                                                else if (ColumnTypes.DATETIME.equals(cmd.getType()))
                                                        row.setDateTime(cmd.getName(), rs.getTimestamp(cmd.getName()));
                                                else if (ColumnTypes.DECIMAL.equals(cmd.getType()))
                                                        row.setDecimal(cmd.getName(), rs.getBigDecimal(cmd.getName()));
                                                else if (ColumnTypes.FLOAT.equals(cmd.getType())) {
                                                        rs.getObject(cmd.getName());
                                                        if (rs.wasNull())
                                                                row.setFloatObject(cmd.getName(), null);
                                                        else
                                                                row.setFloat(cmd.getName(), rs.getFloat(cmd.getName()));
                                                } else if (ColumnTypes.OBJECT.equals(cmd.getType()))
                                                        row.setValue(cmd.getName(), rs.getObject(cmd.getName()));
                                                else if (ColumnTypes.TEXT.equals(cmd.getType()))
                                                        row.setText(cmd.getName(), rs.getString(cmd.getName()));
                                                else if (ColumnTypes.TIME.equals(cmd.getType()))
                                                        row.setTime(cmd.getName(), rs.getTime(cmd.getName()));
                                                else
                                                        throw new ModelException("接收到错误的columnType:" + cmd.getType());
                                        }
                                }
                        } catch (Exception e) {
                                e.printStackTrace();
                        } finally {
                                if (rs != null) {
                                        rs.close();
                                        rs = null;
                                }
                                if (conn != null) {
                                        conn.close();
                                }
                        }
                        return table;
       
       
       
       
       
       
       
       
       
       
       
        }

源代码
回复 支持 反对

使用道具 举报

11

主题

29

帖子

126

积分

初级会员

Rank: 2

积分
126
QQ
 楼主| 发表于 2015-4-20 15:00:07 | 显示全部楼层
主要是我这个action 查询时需要 传入参数
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36064
发表于 2015-4-21 09:28:32 | 显示全部楼层
java代码调试看一下
excel.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 03:23 , Processed in 0.059297 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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