Foxtable(狐表)用户栏目专家坐堂 → 如何传递一个表到sql数据库的储存过程中?


  共有2519人关注过本帖树形打印复制链接

主题:如何传递一个表到sql数据库的储存过程中?

帅哥哟,离线,有人找我吗?
有点色
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/10 15:09:00 [只看该作者]

 那你现在执行的结果是什么?有什么问题?


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/4/10 15:34:00 [只看该作者]

原来的跨表更新的代码全部写在beofresavedatarow,那样不是效率很低吗?想改到储存过程中,又不知道怎么处理事务回滚的问题才有此问,觉得可行才行动啊

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/10 15:45:00 [只看该作者]

以下是引用HappyFt在2017/4/10 15:34:00的发言:
原来的跨表更新的代码全部写在beofresavedatarow,那样不是效率很低吗?想改到储存过程中,又不知道怎么处理事务回滚的问题才有此问,觉得可行才行动啊

 

beforesavedatarow事件?每一行的保存都会触发此代码的,难道你要触发多次?

 

你可以单独做一个内部函数保存数据。要保存的时候,就运行一下呗。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/4/10 16:25:00 [只看该作者]

原来是用ft默认的方式保存,beforesavedatarow主要是方便用dr("列1")补捉到变化的数据然后添加到事务函数中遍历执行,
现在就是改用保存按钮直接通过sql函数一次性保存窗口表中所有的数据了,但就是每个窗口的表不同,跨表更新的数据不一样,如果用函数每个窗口的跨表更新都需要一个太多了,而且每次变动都要发布更新,所以想直接在sql数据库中写不同的储存过程来调用,如果想变动直接在sql数据库上修改存储过程就不用再发布新版 本了.
所以才有了上面那些问题.

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/10 16:31:00 [只看该作者]

 没看懂这样做的好处,如果你希望这样做也行。

 

 你用foxtable显示和修改数据,最后保存的时候,一次性保存一下不就好了?有什么问题?


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/4/10 17:07:00 [只看该作者]

用sql一次性保存本窗口的几个表的数据都没有问题, 主要是跨表更新数据的问题

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:a1.txt


附件是采购入库单beforesavedatarow的代码, 保存时要根据品质判断的不同更新库存表中不同的库存数量,更新采购明细中的累计入库等 
这个每行变动都要添加到事务中,所以我现在就想把整个表中变动的数据用sql拼起来一次性传入到储存过程中先生成一个临时表,然后存储过程中再用这个临时表联接其他想要的表来实现跨表更新的需求,这个功能通过储存过程来实现,怎么传递数据进去写过储存过程都没问题,
而是我在保存的sql事务函数中,一些sql语句是保存本表的数据,而一些就是调用这个储存过程来跨表更新数据
我的问题就是怎么保证这个储存过程中执行的sql语句的结果与其他的sql语句都同时生效,要么都不生效.

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/10 17:12:00 [只看该作者]

 在一个事务里面,都是一起提交和一起回滚的。

 

 你的那些逻辑为什么不能用代码来实现?你把值修改了以后,最后把所有表的数据一起保存,不行?一起保存一起回滚。


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/4/10 17:31:00 [只看该作者]

保存一个窗口中的几个表是可以,但是有很多的窗口,就有很多的不同的表啊,不同表字段不同,更新的数据也不同,不可能在一个函数中就全部实现,只能一个窗口就要写一个
函数所以我才想到用不同的储存过程来代替函数,好维护.还是没有回复到我的问题,到底能不能实现啊?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/10 17:42:00 [只看该作者]

 那你就去弄你认为简便的方法吧。

 

 你各个表的数据,用代码处理以后,就有确定的值了,sql语句,你只要把表数据保存而已啊。


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/4/10 18:41:00 [只看该作者]

就是不知道哪种简便呢?我的sql保存的代码已经放在一个函数中,保存按钮就是执行这个函数将相关的sql语句添加到事务函数中一起执行
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sqlsave.txt

但是跨表更新的就不知道怎么能写在一起(内容杂,不知道怎么写才共用),所以在sqlSave的最后面多了一行 tb.save 目的就是让它执行beforesavedatarow中的代码来拼写跨表更新的数据
然后在全局表事件的beforesavedatarow事件中又加一句e.cancel = true 来取消foxtable的保存.
感觉这样最终还是用beforesavedatarow来实现,很怪吧.

老师看看还有什么好的办法啊?


 

 回到顶部
总数 21 上一页 1 2 3 下一页