以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 负库存销售问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100486) |
-- 作者:minxizai -- 发布时间:2017/5/12 10:53:00 -- 负库存销售问题 With DataTables("库存") dd = .Find("[商品名称] = \'" & e.DataRow("商品名称") & "\'","业务日期 Desc",1) \'找出倒数第二次订购PD01产品的记录 If dd Is Nothing Then MessageBox.Show("当前产品没有库存","提示",MessageBoxButtons.OK) e.DataRow("数量") = 0 If dd("库存_数量") - e.DataRow("数量") >= 0 Then dt("出库_数量") = e.DataRow("数量") Else MessageBox.Show("输入数量超过库存数量:" & dd("库存_数量") & ",请重新输入","提示",MessageBoxButtons.OK) e.DataRow("数量") = 0 End If End If End With 上面代码当产品未录入库存数据时,会把销售数量设置为0 ,数量列默认值是1 执行时出现 Exception has been thrown by the target of an invocation. Object reference not set to an instance of an object. 该如何解决?
[此贴子已经被作者于2017/5/12 10:54:37编辑过]
|
-- 作者:有点色 -- 发布时间:2017/5/12 11:01:00 -- 查不到dd的时候,你不能使用 dd("库存_数量") 的值的
With DataTables("库存") |
-- 作者:minxizai -- 发布时间:2017/5/12 11:26:00 -- Case "数量" Dim dt As DataRow \'否则在库存表查找同名的产品行,将找到的行赋值给变量dt dt = DataTables("库存").Find("[销售关联列] = \'" & e.DataRow("_Identify") & "\'") If dt IsNot Nothing Then \'如果找到了同名的产品行,也就是dt不是Nothing Dim dd As DataRow With DataTables("库存") dd = .Find("[商品名称] = \'" & e.DataRow("商品名称") & "\'","业务日期 Desc",1) \'找出倒数第二次订购PD01产品的记录 If dd Is Nothing Then MessageBox.Show("当前产品没有库存","提示",MessageBoxButtons.OK) e.DataRow("数量") = 0 Else If dd("库存_数量") - e.DataRow("数量") >= 0 Then dt("出库_数量") = e.DataRow("数量") Else MessageBox.Show("输入数量超过库存数量:" & dd("库存_数量") & ",请重新输入","提示",MessageBoxButtons.OK) e.DataRow("数量") = 0 End If End If End With End If e.DataRow("金额") = e.DataRow("单价") * e.DataRow("数量") 上面代码为什么在连续销售同一个产品时,不再判断负库存销售的情况? 而在销售产品1,再销售产品2,再销售产品1时就没问题
[此贴子已经被作者于2017/5/12 11:31:56编辑过]
|
-- 作者:有点色 -- 发布时间:2017/5/12 11:33:00 -- 你为什么要写第一个判断?
Case "数量" [此贴子已经被作者于2017/5/12 11:33:50编辑过]
|
-- 作者:minxizai -- 发布时间:2017/5/12 11:50:00 -- 谢谢 应该是日期排序出问题了,换别的列排序就解决了。同一个订单明细日期都是一样的, 第一个判断是重复了,复制前面输入商品时的判断。 |
-- 作者:有点色 -- 发布时间:2017/5/12 11:57:00 -- 加入多个列判断呗
dd = .Find("[商品名称] = \'" & e.DataRow("商品名称") & "\'","业务日期 Desc, _Identify desc",1) \'找出倒数第二次订购PD01产品的记录 |