在学习表事件DataColChanged,下面的代码有个地方没搞懂:如果是新增一个产品,此时DataColChanged事件中,OldValue应该是空值,NewValue才是新增的产品名称,我理解,这里应该是用NewValue,然后到库存表中看新增的产品是否存在,如果用OldValue,相当于到库存表中看是否有产品ID为空值的记录。但下面代码中dr = DataTables("库存").Find("产品ID = '" & e.OldValue & "'")用的是oldValue,也能正常运行,为什么?
假定有个产品表和一个库存表,两个表都有产品编号、产品名称、产品规格3列,且没有建立关联。希望
①产品表新增一个产品,库存表也增加此产品
②产品表删除一个产品,库存表也删除此产品
③在产品表正更改产品的编号、名称或规格后,库存表也同步修改
在产品表的DataColChanged事件中的代码如下:
Select Case e.DataCol.Name
Case "产品ID" '刚编辑的列是产品ID
Dim dr As DataRow
'到库存表中查找,看是否存在刚编辑列的产品ID(旧值),为什么要取旧值,而不取新值??
dr = DataTables("库存").Find("产品ID = '" & e.OldValue & "'")
If dr Is Nothing '如果不存在,说明需要将产品表中的产品ID,产品名称,产品规格添加到库存表
dr = DataTables("库存").AddNew() '在库存表中新增一行
dr("产品ID") = e.DataRow("产品ID")
dr("产品名称") = e.DataRow("产品名称")
dr("产品规格") = e.DataRow("产品规格")
Else '如果库存表中存在产品表中编辑的产品ID
dr("产品ID") = e.DataRow("产品ID")
End If
Case "产品名称","产品规格"
Dim dr As DataRow = DataTables("库存").Find("产品ID = '" & e.DataRow("产品ID") & "'")
If dr IsNot Nothing
dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
End If
End Select
[此贴子已经被作者于2020/9/27 9:32:50编辑过]