以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- datacolchanged 与 datarowdeleting 的关系 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=161590) |
-- 作者:edisontsui -- 发布时间:2021/3/23 16:22:00 -- datacolchanged 与 datarowdeleting 的关系 数据表“出入库”的 datacolchanged 有如下代码: \'自动更新采购单的收货数量 If e.DataCol.name = "入库数量" Dim dr1 As DataRow dr1 = DataTables("采购单").Find("物料编号 = \'" & e.DataRow("物料编号") & "\' And 采购单号 = \'" & e.DataRow("采购单号") & "\' And 采购单行号 = \'" & e.DataRow("采购单行号") & "\'") If dr1 IsNot Nothing dr1("收货数量") = dr1("收货数量") + e.DataRow("入库数量") - e.OldValue End If End If 数据表“出入库”的 datarowdeleting 有如下代码: \'自动更新采购单的收货数量 If e.DataRow.isnull("采购单号") = True Else Dim dr As DataRow = DataTables("采购单").find("采购单号 = \'" & e.DataRow("采购单号") & "\' And 采购单行号 = \'" & e.DataRow("采购单行号") & "\' And 物料编号 = \'" & e.DataRow("物料编号") & "\'") If dr IsNot Nothing dr("收货数量") = dr("收货数量") - e.DataRow("入库数量") End If End If 上面是“出入库”这个数据表里面的代码,如果我删除一条记录的话,采购单里面“收货数量”是否会发生两次变化,也就是说,datacolchanged 触动一次变化,datarowdeleting 又触动一次变化?我现在就发现,删除一条记录时采购单里面的“收货数量”发生了双倍的变化。不知道是什么原因?
|
-- 作者:有点蓝 -- 发布时间:2021/3/23 16:35:00 -- 删除行不会触发datacolchanged 事件的。应该还有其它代码影响了 |
-- 作者:edisontsui -- 发布时间:2021/3/24 9:05:00 -- \'自动更新批号表的库存数量 If e.DataRow.isnull("批号") = True Else Dim dr As DataRow = DataTables("批号表").find("批号 = \'" & e.DataRow("批号") & "\' And 物料编号 = \'" & e.DataRow("物料编号") & "\' and 批号=\'" & e.DataRow("批号") & "\'") If dr IsNot Nothing \'以下这段会导致采购单数量变化加倍,所以删除了2021/3/24 \' dr("库存数量") = dr("库存数量") - e.DataRow("入库数量") - e.DataRow("出库数量") End If End If \'自动更新生产指令的已入库数量 If e.DataRow.isnull("指令单号") = True Else Dim dr As DataRow = DataTables("生产指令").find("指令单号 = \'" & e.DataRow("指令单号") & "\' And 产品代号 = \'" & e.DataRow("物料编号") & "\'") If dr IsNot Nothing dr("已入库数量") = dr("已入库数量") - e.DataRow("入库数量") End If End If \'自动更新采购单的收货数量 If e.DataRow.isnull("采购单号") = True Else Dim dr As DataRow = DataTables("采购单").find("采购单号 = \'" & e.DataRow("采购单号") & "\' And 采购单行号 = \'" & e.DataRow("采购单行号") & "\' And 物料编号 = \'" & e.DataRow("物料编号") & "\'") If dr IsNot Nothing \'以下这段会导致采购单数量变化加倍,所以删除了2021/3/24 \' dr("收货数量") = dr("收货数量") - e.DataRow("入库数量") \' dr("退货数量") = dr("退货数量") + e.DataRow("出库数量") End If End If \'自动更新销售单的收货数量和退货数量 If e.DataRow.isnull("销售单号") = True Else Dim dr As DataRow = DataTables("销售单").find("销售单号 = \'" & e.DataRow("销售单号") & "\' And 销售单行号 = \'" & e.DataRow("销售单行号") & "\' And 产品代号 = \'" & e.DataRow("物料编号") & "\'") If dr IsNot Nothing dr("退货数量") = dr("退货数量") - e.DataRow("入库数量") dr("交货数量") = dr("交货数量") + e.DataRow("出库数量") End If End If \'自动更新铝铜库存表的来料公斤 If e.DataRow.isnull("采购单号") = False If e.DataRow("类别") = "铝铜" Dim dr As DataRow = DataTables("铝铜库存表").find("采购单号 = \'" & e.DataRow("采购单号") & "\' And 采购单行号 = \'" & e.DataRow("采购单行号") & "\' And 出入库单号 = \'" & e.DataRow("出入库单号") & "\' and 物料编号 = \'" & e.DataRow("物料编号") & "\'") If dr IsNot Nothing dr("来料公斤") = dr("来料公斤") - e.DataRow("入库数量") End If End If End If \'用于重新计算模具清单"的生产模数 vars("filter") = "模具型号 = \'" & e.DataRow("模具型号") & "\'" \'用于计算余数 e.DataRow("入库数量") = 0 e.DataRow("出库数量") = 0 \'余数计算结束 上面是“出入库” datarowdeleting 里面的全部代码。有两个红色字体的位置我把其代码注释了,就不会发生翻倍的问题了。是不是最后两句紫色的代码有问题?如果是,要怎么修改?谢谢。 |
-- 作者:有点蓝 -- 发布时间:2021/3/24 9:13:00 -- 确实是。紫色的代码会触发datacolchanged 事件 |