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

QQ登录

只需一步,快速开始

查看: 5923|回复: 6

[分享] 分享一下,调用存储过程生成报表数据(SQL Server)

  [复制链接]

53

主题

313

帖子

1134

积分

金牌会员

Rank: 6Rank: 6

积分
1134
QQ
发表于 2015-10-16 18:00:21 | 显示全部楼层 |阅读模式
版本: X5.2.7 小版本号:
数据库: MS SQLServer 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 8 浏览器: IE9
分享一下,调用存储过程生成报表数据(SQL Server)
不容易啊,X5示例中没有类似的参考

http://bbs.wex5.com/forum.php?mod=viewthread&tid=56429
今天看了好多帖子,有用Oracle数据库的,上面的帖子中有说明返回select * from ABC 数据的存储过程,都不行啊,结合下面的帖子,测试通过了
http://www.cnblogs.com/jams742003/archive/2009/07/20/1526889.html

以下是测试通过的代码

1.-----------------------------------------------------
        //这是Action的Java代码
        public static Table Report_FullWithProc(String qVouID) {
                java.sql.Connection conn;
                try {
                        conn = com.justep.model.ModelUtils.getConnection("/TestApp/dX/data");
                        java.sql.CallableStatement proc = conn.prepareCall("{call apsP_getVouData (?)}");
                        proc.setString(1, qVouID);
                        ResultSet rs = proc.executeQuery();
                        Table table = com.justep.system.util.BizUtils.resultSet2Table(rs, "/TestApp/dX/data");
                        return table;
                } 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中的js代码
        function loadVouPrtData(){
//        加载数据到报表
        var dsqvm=justep.xbl("vouMain");
        var tvid=dsqvm.getCurrentID();
        if (tvid == null || tvid == undefined || tvid == "") {
                alert("请选择1张单据。");
                //return false;
                tvid="";
        }
        var rd=justep.xbl("rd2");//rd2这是 reportData(报表数据) 对象
        rd.setStringVar("qVouID", tvid);
        var rr=justep.xbl("reportPrt");//reportPrt 这是 report(报表) 对象
        rr.refresh();

};

3.-----------------------------------------------------
--这是sql server中的存储过程

CREATE proc [dbo].[apsP_getVouData](
@qVouID nvarchar(100)=null
)
/*===============================================
@qVouID---nvarchar 单据主键
===============================================*/

as
declare @xSQL nvarchar(4000)

set @xSQL='select *
from testVouMain mm
where (1=1)
'

if (isnull(@qVouID,'')!='')
begin
        set @xSQL=@xSQL+char(13)+' and mm.fID='''+@qVouID+''''
end
else
begin
        set @xSQL=@xSQL+char(13)+' and  mm.fID is null'
end



--select @xSQL
exec( @xSQL)
GO






评分

参与人数 2威望 +20 收起 理由
fcci + 10
Masion + 10 很给力!

查看全部评分

57

主题

375

帖子

1509

积分

金牌会员

Rank: 6Rank: 6

积分
1509
QQ
发表于 2015-10-19 11:37:40 | 显示全部楼层
回复

使用道具 举报

66

主题

350

帖子

2011

积分

金牌会员

Rank: 6Rank: 6

积分
2011
发表于 2015-12-21 10:23:17 | 显示全部楼层
收藏
回复

使用道具 举报

5

主题

32

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
发表于 2015-12-31 15:43:42 | 显示全部楼层
ModelUtils 无法解析啊
回复 支持 反对

使用道具 举报

5

主题

32

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
发表于 2016-1-8 13:29:18 | 显示全部楼层
eeshang 发表于 2015-12-31 15:43
ModelUtils 无法解析啊

我也是啊。。
回复 支持 反对

使用道具 举报

53

主题

313

帖子

1134

积分

金牌会员

Rank: 6Rank: 6

积分
1134
QQ
 楼主| 发表于 2016-4-13 22:44:40 | 显示全部楼层

java代码中,引入这些:
import java.util.HashMap;
import java.sql.*;
import javax.naming.*;

import com.justep.system.data.*;
import com.justep.system.data.DatabaseProduct;
import com.justep.system.data.Table;
import com.justep.system.data.SQL;
回复 支持 反对

使用道具 举报

31

主题

138

帖子

584

积分

高级会员

Rank: 4

积分
584
QQ
发表于 2017-2-19 12:51:47 | 显示全部楼层
good stuff, thank you!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 00:20 , Processed in 0.089672 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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