Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共2 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]datacolchanged触发其他表有时候会丢数据

1楼
dahai 发表于:2024/5/29 19:03:00
用的阿里云sql数据库,在上面有三个表《采购入库》,《库存明细》,《入库统计》。《采购入库》表的“库房确认”列,由待入库—>已入库或者已入库—>待入库都会触发datacolchanged事件,从而对《库存明细》,《入库统计》两个表进行增减行操作。
目前遇到的问题是:datacolchanged事件发生了,但是没有对《库存明细》,《入库统计》两个表进行操作,或者只对其中的一个表进行了操作。不是经常发生,极偶尔才出现,请专家帮看看这样设计有问题吗?

《采购入库》datacolchanged事件代码如下:
If e.DataCol.Name = "库房确认" Then
    If e.OldValue = "待入库" And e.NewValue = "已入库" Then
        '在《采购入库》表中的变化
        e.DataRow("入库日期") = Date.Today '库房确认,由待入库变为已入库,那么当前的日期就为入库日期
        e.DataRow("操作人") = User.Name
        e.DataRow.Save()
        '在《入库统计》表中的变化
        Dim dr As DataRow = DataTables("入库统计").AddNew
        dr("入库日期") = e.DataRow("入库日期")
        dr("入库序号") = e.DataRow("入库序号")
        dr("名称") = e.DataRow("名称")
        dr("型号") = e.DataRow("型号")
        dr("数量") = e.DataRow("数量")
        dr("单价") = e.DataRow("单价")
        dr.Save()
        '在《库存明细》表中的变化
        Dim kdr As DataRow = DataTables("库存明细").AddNew
        kdr("入库日期") = e.DataRow("入库日期")
        kdr("入库序号") = e.DataRow("入库序号")
        kdr("名称") = e.DataRow("名称")
        kdr("型号") = e.DataRow("型号")
        kdr("数量") = e.DataRow("数量")
        kdr("单价") = e.DataRow("单价")
        kdr.Save()
    End If
    '事先需要datacolchanging 判断物料是否还在,以及数量是否和入库时一致,如果不在或者不一致,不允许变更。
    If e.OldValue = "已入库" And e.NewValue = "待入库" Then
        DataTables("库存明细").SQLDeleteFor("入库序号 = '" & e.DataRow("入库序号") & "'")
        DataTables("入库统计").SQLDeleteFor("入库序号 = '" & e.DataRow("入库序号") & "'")
        e.DataRow("操作人") = Nothing
        e.DataRow("入库日期") = Nothing
        e.DataRow.Save()
    End If
End If


此主题相关图片如下:datacolchanged.jpg
按此在新窗口浏览图片

2楼
有点蓝 发表于:2024/5/30 8:51:00
请不要发重复的问题:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=192115
共2 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .01563 s, 2 queries.