以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  两列之间的运算  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=48774)

--  作者:tina2012
--  发布时间:2014/4/4 17:11:00
--  两列之间的运算
如图,出库明细表中,数量-已交数量=剩余数量,目前的问题是一次不能完全交货,如果第一次交了10个,第二次交20个,即“新交数量”填入20,此时“已交数量”更改为30(已交数量+新交数量),然后锁定新交数量列。怎么实现??
图片点击可在新窗口打开查看此主题相关图片如下:01.jpg
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2014/4/4 17:13:00
--  

PrepareEdit 事件

If e.Col.name="新交数量列" AndAlso e.Row.IsNull("新交数量列")=False Then
    e.Cancel = True
End If

--  作者:tina2012
--  发布时间:2014/4/8 14:17:00
--  
如果第一次交了10个,第二次交20个,即“新交数量”填入20,此时“已交数量”更改为30(已交数量+新交数量),这个功能怎么实现??
--  作者:Bin
--  发布时间:2014/4/8 14:19:00
--  
呵呵,不能这么做的. 因为无法判断你是修改,还是新增.
--  作者:tina2012
--  发布时间:2014/4/8 14:24:00
--  
那有没有办法实现类似的功能???通常情况下,货是一次发不完的,是分批交货的


--  作者:Bin
--  发布时间:2014/4/8 14:32:00
--  
通常都是以下另个方案

1.分开为不同的表,发货表以订单号关联,每发一次单独一条数据.

2.用窗口录入,窗口设计修改和新增按钮.点击对应按钮执行对应操作.

--  作者:tina2012
--  发布时间:2014/4/8 15:27:00
--  
关于这个方案,有没有例子呢??多谢
--  作者:Bin
--  发布时间:2014/4/8 15:28:00
--  
思路没什么困难的啊,你那里不懂实现? 上例子.
--  作者:lsy
--  发布时间:2014/4/8 16:01:00
--  
If e.DataCol.Name = "新交数量" AndAlso e.DataRow.IsNull(e.DataCol) = False Then
    e.DataRow("已交数量") = e.DataRow.OriginalValue("已交数量") + e.NewValue
End If