空值的判断
按照这个搜索
我们来测试一下,你先在某行输入日期,年、月两列的值确是自动计算得出了,可是如果你删除日期列的内容,按道理年、月列的内容应该为空。
但事实上,年、月都会等于1,原因何在呢?
这是因为在日期列为空的时候,通过行返回的日期值并不是空值,而是等于:
#01/01/0001#
同样如果没有输入数量和单价,金额也不会为空,而是等于0,因为数值列为空的时候,其返回的值也不是空值,而是0。
所以为了“完美”,我们将DataColChanged事件代码改为:
Dim dr As
DataRow = e.DataRow
Select
Case e.DataCol.Name
Case
"数量","单价","折扣"
If dr.IsNull("数量") OrElse dr.IsNull("单价") Then '如果数量或单价为空
dr("金额") = Nothing
Else
dr("金额") = dr("数量") * dr("单价") * (1 - dr("折扣"))
End If
Case
"日期"
If
dr.IsNull("日期") Then
'如果日期列为空
dr("年")
= Nothing
dr("月") = Nothing
Else
dr("年") = dr("日期").Year
dr("月") = dr("日期").Month
End
If
End
Select