这是帮助中的一个例子,跨表计算的:
If
e.DataCol.Name = "产品名称" Then '如果内容发生变动的是产品列
If e.NewValue Is Nothing Then '如果新值是空白,也就是产品列的内容为空
e.DataRow("单价") = Nothing '那么清空此行单价列的内容
Else
Dim dr As DataRow'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = DataTables("产品").Find("[产品名称] = '" & e.NewValue & "'")
If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
e.DataRow("单价") = dr("单价")
End If
End If
End If
我在想,将第二行和第六行的 e.NewValue 换成 e.datarow.(e.datacol)
这样可以运行吗,有什么区别吗?
我记得这个是可以运行的,因为帮助中有类似的例子。
[此贴子已经被作者于2009-4-19 22:56:39编辑过]
应该e.datarow("列名称")来代替吧。
[此贴子已经被作者于2009-4-19 23:03:55编辑过]
如果在Datacolchanged事件中,是一样的。
如果在DatacolChanging事件中,e.NewValue表示即将写入的值,e.DataRow("列名")表示现在的值。
哦,有一点点区别!
我正在认真地看帮助,理解它们的意义。
每一次看都有不同的感觉!
这一次,理解了表对象如:col、row、table 、datatable等等 与 代码中的对象、计算返回结果的对象、我需要的结果对象类型 相匹配方面的东西。
老大确实太不易了!
佩服!
[此贴子已经被作者于2009-4-19 23:17:43编辑过]