找回密码
 立即注册

QQ登录

只需一步,快速开始

lbw0511

注册会员

2

主题

9

帖子

75

积分

注册会员

积分
75
最新发帖
lbw0511
注册会员   /  发表于:2018-1-24 10:27  /   查看:20707  /  回复:28
最近在研究活字格,在做ERP项目中,如果在按钮中调用存储过程去执行一些复杂的数据操作?感觉这样后台服务器处理活字格效果会更加强大!

评分

参与人数 2金币 +100 满意度 +5 收起 理由
追风 + 5
Simon.hu + 100

查看全部评分

29 个回复

正序浏览
Noel
初级会员   /  发表于:2018-1-24 10:36:32
推荐
本帖最后由 Noel 于 2018-5-7 10:01 编辑

关于oracle存储过程的连接,请见这篇帖子。下面是关于Sql Server 中存储过程的连接说明。

最近正好做了例子。请见附件。
步骤:
1. 导入用于连接存储过程的自定义web api.
详见:
http://help.grapecity.com.cn/pages/viewpage.action?pageId=5972594


其中导入了2个webapi:
POST executenonquery 用于连接修改数据类型的存储过程,返回值是影响行数
POST executequery 用于连接读取数据类型的存储过程,返回值是数据

2. 配置数据库连接字符串
新建数据表“_DataSources”,新建2个文本类型字段Name,ConnectionString
Name: 使用时的名字
ConnectionString: 数据库连接字符串


3. executenquery示例
请见页面1 的 获取某类别的产品数量  按钮

Js代码解释:
  1. //向ExecuteQuery发送post请求
  2. $.ajax(Forguncy.ForguncyData.ForguncyRoot+'customapi/spapi/ExecuteQuery', {
  3.   method:'post',
  4. dataType:'json', //返回数据为json格式
  5.   data:JSON.stringify({ //发送json格式参数
  6.     ConnectionName:'dev03', //数据连接名称
  7.     ProcedureName:'GetProductByCategory', //存储过程名称
  8.     Parameters:{'@cid': Forguncy.Page.getCell('cid').getValue()} //存储过程参数
  9.   })
  10. }).done(function(data){
  11.   alert(data.ExecuteResult.length); //返回结果
  12. });
复制代码


4. executenonquery 示例
请见页面1 的 更新当前行的库存量 按钮。
需要注意的是,调用此接口需要用户已登录。

JS代码解释:
  1. var p = Forguncy.Page,
  2. storedCount = p.getCell('storedCount').getValue(),
  3. list = p.getListView('表格1'),
  4. id = list.getValue(list.getSelectedRowIndex(), 'id');
  5. //向ExecuteNonQuery'接口发送post请求
  6. $.ajax(Forguncy.ForguncyData.ForguncyRoot+'customapi/spapi/ExecuteNonQuery', {
  7.   method:'post',
  8.   data:JSON.stringify({ //请求中的json格式参数
  9.     ConnectionName:'dev03', //数据库连接名称
  10.     ProcedureName:'UpdateProductStoredCount', //存储过程名称
  11.     Parameters:{'@id': id, '@storedCount': storedCount} //存储过程参数
  12.   })
  13. }).done(function(data){ //返回处理
  14.   var result = data.ExecuteResult;
  15.   alert(result == 1 ? 'Success!' : 'Failed!');
  16.   if(result == 1) list.reload();
  17. });
复制代码


5. executenonquery与Output类型参数 示例
  1. $.ajax(Forguncy.ForguncyData.ForguncyRoot+'customapi/spapi/ExecuteNonQuery', {
  2.   method:'post', dataType:'json',
  3.   data:JSON.stringify({
  4.     ConnectionName:'dev03',
  5.     ProcedureName:'GetProductCount',
  6.     Parameters:{'@cid': Forguncy.Page.getCell('cid').getValue()},
  7.     OutputParameters:{'@count':0} //设定Output类型参数和用于确定类型的默认值
  8.   })
  9. }).done(function(data){
  10.   alert(data.Output['@count']); //获取Output参数的返回值
  11. }).fail(function(data){
  12. alert(data);
  13. });
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

强帖留名  发表于 2019-11-20 13:21
回复 使用道具 举报
hpx209
金牌服务用户   /  发表于:2022-2-12 22:11:30
29#
厉害了,谢谢共享
回复 使用道具 举报
一鹏
高级会员   /  发表于:2021-3-8 14:51:15
28#
新人来,完全不明白是在干啥
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-12-11 09:00:59
27#
guanxinjie 发表于 2020-12-10 10:09
仔细用过,发现个问题,当存储过程查出来一条数据的时候,无法将数据渲染到表格中

请您在求助中心发一个帖子~
回复 使用道具 举报
guanxinjie
中级会员   /  发表于:2020-12-10 10:09:23
26#
仔细用过,发现个问题,当存储过程查出来一条数据的时候,无法将数据渲染到表格中
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-3-24 12:26:44
25#
没记理您的意思,请您在求助中心发一个帖子~
回复 使用道具 举报
15911053487
注册会员   /  发表于:2020-3-21 11:39:00
24#
仔细用过,发现还是有几个问题:
1.不能直接调用存储过程
2.这样的话,还需要建立一个表才能,才能使用这个,非常麻烦
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2019-3-14 10:42:17
23#
2543411082 发表于 2019-3-13 18:39
5.0什么时候发布?

明天(2019/3/15)发布内测版

预计4月底发布正式版
回复 使用道具 举报
2543411082
中级会员   /  发表于:2019-3-13 18:39:18
22#
Simon.hu 发表于 2019-2-21 09:12
等待我们的5.0把,5.0内置存储过程的

5.0什么时候发布?
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2019-2-21 09:12:05
21#
2543411082 发表于 2019-2-20 17:51
JS不会写还有其他方法调用存储过程吗

等待我们的5.0把,5.0内置存储过程的
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部