以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于库存问题遇到的难题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=26181)

--  作者:even0898
--  发布时间:2012/11/26 17:30:00
--  关于库存问题遇到的难题

碰到个库存的难题,大伙帮忙看看

1个出库单,一个库存表

 

设计要求:

1.出库单保存后减库存表库存

2.出库单删除后回复库存表库存

代码如下:

减库存

Dim dr As DataRow
Dim cr As Row = Tables("出库单主表.出库单明细").Current
dr = DataTables("物料品牌明细").Find("料号 = \'" & cr("料号") &  "\'")
If dr IsNot Nothing Then
    dr("当前库存") = dr("当前库存") - cr("数量_本次交")
End If

恢复库存

Dim dr As DataRow
Dim cr As Row = Tables("出库单主表.出库单明细").Current
dr = DataTables("物料品牌明细").Find("料号 = \'" & cr("料号") &  "\'")
If dr IsNot Nothing Then
    dr("当前库存") = dr("当前库存") + cr("数量_本次交")
End If

 

我现在碰到个恶心的问题是

我在BEFORESAVEDATROW事件里加以“减库存”的代码,在DATAROWDELETING里放“恢复库存”的代码,当我在新增一条明细,删除后,直接就给我加上刚刚我删除的库存数去了(这种情况在实际操作中很常见,比如选错了物料的情况),刚才试了下,放在DATAROWDELETED的里呢,直接又报错。。

恢复库存的代码到底应该放在哪个事件中呢?


--  作者:38585830
--  发布时间:2012/11/26 17:32:00
--  
发个项目文件
--  作者:even0898
--  发布时间:2012/11/26 17:39:00
--  
以下是引用38585830在2012-11-26 17:32:00的发言:
发个项目文件

。。其实问题很简单,就是2个无关联的表,字段一样,做数据同步。。。

我一是不想有太多关联,二是如果把库存表的库存字段设为表达式的话,初始库存填不进去,所以想用代码来做而已。。

模拟很简单的

一张库存表

字段是 品名 库存量

一张出库单

字段是 品名 数量

 

[此贴子已经被作者于2012-11-26 17:42:49编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/26 17:47:00
--  
 呃,这个问题,判断一下行的类型就行了。

 If cr.DataRow.DataRowState = DataRowState.Added Then Return

--  作者:even0898
--  发布时间:2012/11/26 18:00:00
--  
以下是引用lin_hailun在2012-11-26 17:47:00的发言:
 呃,这个问题,判断一下行的类型就行了。

 If cr.DataRow.DataRowState = DataRowState.Added Then Return

....我想这一点了,郁闷,刚才自己把自己绕晕了,我担心保存后来删出问题。。看来还是得静心想想,谢谢小林