在帮助文档里面有这么一段示例:示例五
如果要允许修改订单号,但禁止删除订单号,也就是说订单号列内容不允许为空,可以将DataColChanging事件代码设置为:
If e.DataCol.Name = "订单号" Then
If e.NewValue Is Nothing Then
MessageBox.Show("订单号不允许为空!")
e.Cancel = True
End If
End If
前面提到DataColChanging事件触发的时候,新的值还没有写入表中,所以如果要判断新的值是否为空,只能用:e.NewValue Is Nothing。
如果要判断旧值是否为空,则既可用:e.OldValue Is Nothing,也可用IsNull方法判断: e.DataRow.IsNull("列名")。
切不可用 e.DataRow("列名") Is Nothing 来判断旧值是否为空,因为对于数值列,如果值为空,e.DataRow("列名")返回的是0,如果是日期列,则返回#01/01/0001#,显然这都不是空值。
我疑惑的地方是:为什么e.OldValue Is Nothing和e.DataRow.IsNull("列名")可以,而e.DataRow("列名") Is Nothing却不行,区别到底在哪儿?请高手们不吝赐教!