Foxtable(狐表)用户栏目专家坐堂 → [求助] 求助一个数量计算的完美解决办法,或思路


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

主题:[求助] 求助一个数量计算的完美解决办法,或思路

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


加好友 发短信
等级:三尾狐 帖子:604 积分:6988 威望:0 精华:0 注册:2012/5/30 16:01:00
[求助] 求助一个数量计算的完美解决办法,或思路  发帖心情 Post By: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
    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("出货数量") <0 Then
            MessageBox.Show("出货数量大于销售订单数量!","提示:",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
    End If
End If

[此贴子已经被作者于2014-1-15 19:11:39编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:604 积分:6988 威望:0 精华:0 注册:2012/5/30 16:01:00
  发帖心情 Post By:2014/1/15 19:45:00 [只看该作者]

okOK 就看代码一定行,谢谢了, 因为 如果是新增那么 原始值为0 加减都无所谓,如果是修改记录 减去原始值就OK了.

 

谢谢,谢谢! 帮了我大忙!!!

 

在广州想了一个下午,没有想出来思路!!

[此贴子已经被作者于2014-1-15 19:46:00编辑过]

 回到顶部