给你贴段帮助:
空值的判断
假定某个表的金额列,由单价、数量、折扣三列计算得出,此外年、月两列,由日期列计算得出。
根据我们之前的经验,可以将该表的DataColChanged事件设置为:
Dim
dr As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "数量","单价","折扣"
dr("金额") = dr("数量") * dr("单价") * (1 - dr("折扣"))
Case "日期"
dr("年") = dr("日期").Year
dr("月") = dr("日期").Month
End Select
上面的代码看上去很完美,金额、年、月三列都能自动计算得出,可真的没问题吗?
我们来测试一下,你先在某行输入日期,年、月两列的值确是自动计算得出了,可是如果你删除日期列的内容,按道理年、月列的内容应该为空。
但事实上,年、月都会等于1,原因何在呢?
这是因为在日期列为空的时候,通过行返回的日期值并不是空值,而是等于: #0001-01-01#
所以为了“完美”,我们将DataColChanged事件代码改为:
Dim
dr As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "数量","单价","折扣"
dr("金额") = dr("数量") * dr("单价") * (1 - dr("折扣"))
Case "日期"
If dr.IsNull("日期") Then '如果日期列为空
dr("年") = Nothing
dr("月") = Nothing
Else
dr("年") = dr("日期").Year
dr("月") = dr("日期").Month
End If
End Select
这样输入日期,年、月列的值能自动计算得出,删除日期,年、月列也会自动被清空。