以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 用事务逐行处理数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91875) |
-- 作者:pyh6918 -- 发布时间:2016/10/20 19:07:00 -- 用事务逐行处理数据 For Each dr As DataRow In DataTables("预记帐").DataRows ‘预记帐表是事先添加的要出库的明细
这是库存出库的代码,由于网络原因经常出错!如何将这段代码改成事务,请各位老大帮忙! |
-- 作者:有点蓝 -- 发布时间:2016/10/20 20:22:00 -- 除非使用sql操作,否则没有办法使用事务:http://www.foxtable.com/webhelp/scr/2933.htm 上面代码优化一下,可以这样,可以有效提高运行速度 DataTables("库存").StopRedraw DataTables("库存").Load DataTables("出入库明细").StopRedraw For Each dr As DataRow In DataTables("预记帐").DataRows \'预记帐表是事先添加的要出库的明细 Dim cr As DataRow = DataTables("出入库明细").AddNew cr("商品类别")=dr("商品类别") cr("日期")=dr("日期") cr("业务类型")="出库" cr("商品编号")=dr("商品编号") cr("商品名称")=dr("商品名称") cr("会计帐务流水号")=kjz("帐务流水号") cr("数量")=dr("销售数量") cr("商品成本")=dr("贷方发生额") cr("销售额")=dr("销售额") cr("客户_名称")=dr("客户名称") cr("客户_编号")=dr("客户编号") cr("客户_客户经理")=dr("客户经理") cr("流水号")="C" & Format(dr("日期"),"yyyyMMdd") & format(sz("库房流水号"),"00000") cr("经办人")=user.Name Dim kc As DataRow = DataTables("库存").Find("商品编号=\'" & dr("商品编号") & "\'") If kc IsNot Nothing Then kc("商品库存金额")=kc("商品库存金额")-dr("贷方发生额") kc("累计出库金额")=kc("累计出库金额") + dr("贷方发生额") kc("商品库存")=kc("商品库存")-dr("销售数量") kc("累计出库数量")=kc("累计出库数量") + dr("销售数量") kc("平均进货价格")=format(kc("商品库存金额") / kc("商品库存"),"0.00") End If Next DataTables("出入库明细").Save DataTables("出入库明细").ResumeRedraw DataTables("库存").Save DataTables("库存").ResumeRedraw 另外再优化还可以看看:http://www.foxtable.com/webhelp/scr/2225.htm
|
-- 作者:pyh6918 -- 发布时间:2016/10/20 20:46:00 -- 我的数据库是SQL的,麻烦帮我改下,觉得用事务出错要少一些,防止执行一半时出错。比如有点10个要出库的商品,执行5个突然出错了,这就比较麻烦了。 |
-- 作者:有点蓝 -- 发布时间:2016/10/20 20:59:00 -- 上传项目和数据库,否则没有办法改 |
-- 作者:pyh6918 -- 发布时间:2016/10/20 21:17:00 -- 已经投入使用了,上传数据库比较麻烦,您给我改个大概就行,我自己一点点测试,多谢了! |
-- 作者:有点蓝 -- 发布时间:2016/10/20 21:25:00 -- 没有办法大概,看不到业务逻辑和数据结构,做出来的东西有害无益。 就是把代码操作改为sql的update/insert等等,自己研究一下sql:http://www.foxtable.com/webhelp/scr/1827.htm
|