If e.DataCol.name = "SN" Then
If e.DataRow("体态") = "通用态" Then
Dim dr1 As DataRow = DataTables("库存通用态表").Find("物料编码 = '" & e.DataRow("物料编码") & "'")
If dr1 IsNot Nothing Then
dr1("库存数量") = dr1("库存数量") + 1
dr1("可用数量") = dr1("可用数量") + 1
Else
Dim dr2 As DataRow = DataTables("库存通用态表").AddNew
dr2("物料编码") = e.DataRow("物料编码")
dr2("物料名称") = e.DataRow("物料名称")
dr2("库位类别") = e.DataRow("库位类别")
dr2("体态") = e.DataRow("体态")
dr2("库存数量") = 1
dr2("可用数量") = 1
End If
这段代码我同事说有潜在的风险。(如果多任务并发进行)
比如这句dr1("可用数量") = dr1("可用数量") + 1
当设备SN进来,第一次读可用数量,读出来是100,这时还没进行加1和赋值的动作。恰巧另外一个客户端把可用数量给改为了80.这时我去加1,然后赋值。是在读出来100的基础上加1然后赋值的,最后可用数量变为了101了。而非81了。
如何避免这种情况。
是用存储过来来实现吗?怎么弄?