以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 求助一个数量计算的完美解决办法,或思路 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=45105) |
-- 作者:coch2004 -- 发布时间:2014/1/15 19:06:00 -- [求助] 求助一个数量计算的完美解决办法,或思路 各位,请教一下, 我现在有一个销售订单表 里面型号为A 订单数量为1000个, 现在做了一个销售出货表, 里面已经对A型号出货了两条记录,分别是第一条记录的数量为200个,第二条记录的数量为300个. 余数为500个没有出货,好了,我要在销售出货表中新增一张销售出货. 在销售出货表的DataColchanged事件中用sql sum来先求出A型号在销售出货表中的出货总数量(依上面的例子是总出货量为500个),然后再判断我还能最多出多少数量的A型号货物.
好了,现在我新增一张销售出货表,新增一行,型号为A的货物,然后填写数量,代码执行正常.逻辑计算出来的A型号总出货数量也正常.
但以我现在的代码及逻辑,如果不是新增行,而是修改A型号之前的出货记录时,(代码执行正常)但计算数量会出错误. 错误的原因我知道,但我不知道怎么去处理这个错误.
原因:如果修改记录时.因为用的是sql后台计算, 如上面 我修改第一条数量为200个的记录.因为200个的数量已经保存在sql数据库了.如果再修改这200数量就会触发datacolchanged事件.如200改成100个,那么.sql代码执行后,就会认为sql数据库中出货总数量是之前的200+300 再加我修改的这个数量(100个),其实我修改完后,正确的数量是100个+300个.
请教以上如何解决.
表达的意思,不知道各位能明白吗? 如果有碰到过此问题的狐友一看就会明白. 谢谢!
请见以下代码 If e.Col.Name="出货数量" Then [此贴子已经被作者于2014-1-15 19:11:39编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/1/15 19:38:00 -- 这样改一下试试 If e.Col.Name="出货数量" Then If e.Row("客户单号")<>Nothing And e.Row("分批单号")<>Nothing And e.Row("商品名称")<>Nothing And e.Row("品牌")<>Nothing And e.Row("封装")<>Nothing Then Dim sql As new SQLCommand \'计算出销售出货表中的出货总量 sql.C sql.CommandText="select sum(出货数量) From {销售出货明细表} Where 客户" & _ "名称=\'" & e.Row("客户名称") & "\'And 客户单号=\'" & e.Row("客户单号") & "\'And 分批" & _ "单号=\'" & e.Row("分批单号") & "\'And 商品名称=\'" & e.Row("商品名称") & "\'And 品牌=\'" & e.Row("品牌") & "\'And 封装=\'" & e.Row("封装") & "\'" Dim sql1 As new SQLCommand sql1.C \'按条件查询出本商品的销售订单数量 sql1.CommandText="select 数量 From {销售订单明细表} Where 客户" & _ "名称=\'" & e.Row("客户名称") & "\'And 客户单号=\'" & e.Row("客户单号") & "\'And 分批" & _ "单号=\'" & e.Row("分批单号") & "\'And 商品名称=\'" & e.Row("商品名称") & "\'And 品牌=\'" & e.Row("品牌") & "\'And 封装=\'" & e.Row("封装") & "\'" If sql1.ExecuteScalar -sql.ExecuteScalar+e.Row("出货数量")-e.Row.DataRow.OriginalValue("出货数量") <0 Then MessageBox.Show("出货数量大于销售订单数量!","提示:",MessageBoxButtons.OK,MessageBoxIcon.Information) End If End If End If |
-- 作者:coch2004 -- 发布时间:2014/1/15 19:45:00 -- okOK 就看代码一定行,谢谢了, 因为 如果是新增那么 原始值为0 加减都无所谓,如果是修改记录 减去原始值就OK了.
谢谢,谢谢! 帮了我大忙!!!
在广州想了一个下午,没有想出来思路!! [此贴子已经被作者于2014-1-15 19:46:00编辑过]
|