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

QQ登录

只需一步,快速开始

查看: 895|回复: 3

[结贴] 如何利用X5平台,调用金蝶ERP,Oracle存储过程

[复制链接]

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
QQ
发表于 2016-5-6 13:40:31 | 显示全部楼层 |阅读模式
目前状况为:
    1、客户对x5平台了解不多,能利用搭建简单的报表应用
    2、对于调用第三方系统内的存储过程,无从下手整个搭建过程很模糊
    3、在论坛上已经搜索了很多帖子,还没得到解决

希望给远程解决,从建立action一步一步帮忙演示一下。谢谢!

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35910
发表于 2016-5-6 13:45:43 | 显示全部楼层
在新建action的时候java代码中直接调用存储过程,这个是java标准,然后调用平台的提供的API把返回的ResultSetz转换为平台选的Table类型,前提是你的java方法返回的参数类型要是Table ,可以参考
   http://bbs.wex5.com/forum.php?mo ... 8&pid=165003901
然后在.w中reportData上直接关联这个action,添加业务字段就可以,然后在excel中添加就可以
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
QQ
 楼主| 发表于 2016-5-10 09:56:09 | 显示全部楼层
1、action 代码端,注意函数名称和 UI2文件对应
public static Table person(String strName){
                 
                java.sql.Connection conn;
                System.out.println(strName);
        try {                        
                conn = com.justep.model.ModelUtils.getConnection("/jxc/inware/data");
                java.sql.CallableStatement proc = conn.prepareCall("{ call person(?,?) }");
                proc.setString(1,strName);
                proc.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
                proc.execute();
               
                //ResultSet rt = proc.executeQuery();
               ResultSet rt = (ResultSet)proc.getObject(2);
               
               Table table = com.justep.system.util.BizUtils.resultSet2Table( rt,"/jxc/inware/data");
               System.out.println(table.size());
               return  table;
                               //com.justep.system.util.BizUtils.resultSet2Table( rt,"/jxc/inware/data");
           
        } catch (NamingException e) {
                // TODO Auto-generated catch block                                
                e.printStackTrace();
                return null;
        } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return null;
        }}

2、UI端
Model.prototype.button1Click = function(event){
                var rd=this.comp("reportData1");//rd2这是 reportData(报表数据) 对象
                
                rd.setStringVar("strName",this.comp('input1').val());
                //rd.setStringVar("strName", "于昊");
                    this.comp('report1').refresh();
        };

管理员可以结贴了。
回复 支持 反对

使用道具 举报

42

主题

119

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
QQ
发表于 2016-6-7 17:17:34 | 显示全部楼层
jishuang 发表于 2016-5-6 13:45
在新建action的时候java代码中直接调用存储过程,这个是java标准,然后调用平台的提供的API把返回的ResultS ...

proc.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
里oracle.jdbc.OracleTypes.CURSOR报错
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 07:36 , Processed in 0.065082 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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