零值的处理
假定某个表的金额列,由单价、数量、折扣三列计算得出,可以将该表的DataColChanged事件代码设置为:
Dim
dr As DataRow = e.DataRow显然如果我们只输入数量、单价中的一个,金额列的计算结果等于0。
即使我们没有输入数量、单价、折扣中的任何一个值,如果重置其中某一列,金额列的内容同样也会等于0。
如果你希望只有同时输入了单价和数量的情况下,才计算金额,避免金额出现0值,可以将DataColChanged事件代码改为:
Dim
dr As DataRow = e.DataRow这样如果数量或者单价中任何一个为空,金额也会自动清空,而不会出现0值。
如果你希望在任何情况下,某一列都不能出现0值,那么代码会更简单,同样用金额列为例,只需将DataColChanging事件代码设为:
If
e.DataCol.Name = "金额" Then注意上面的代码设置在DataColChanging事件中,而不是DataColChanged事件中。这样可以在金额列的值发生变化之前进行拦截干预,判断新的值是否为0,如果为0,则将新值设为Nothing,这样金额列的值就永远不可能为0了。
如果你希望表中所有的数据列,都不能出现零值,可以将DataColChanging事件代码设为:
If e.DataCol.IsNumeric Then
If e.NewValue =
0
Then
e.NewValue =
Nothing
End
if
End If