Foxtable(狐表)用户栏目专家坐堂 → [求助]关于空值的理解


  共有2809人关注过本帖树形打印复制链接

主题:[求助]关于空值的理解

帅哥哟,离线,有人找我吗?
无我是天机
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
[求助]关于空值的理解  发帖心情 Post By:2015/1/28 9:14:00 [只看该作者]

在帮助文档里面有这么一段示例

示例五

如果要允许修改订单号,但禁止删除订单号,也就是说订单号列内容不允许为空,可以将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 Nothinge.DataRow.IsNull("列名")可以,而e.DataRow("列名") Is Nothing却不行,区别到底在哪儿?请高手们不吝赐教!


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/28 9:18:00 [只看该作者]

语法就是这样,你无需纠结它.



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/28 9:19:00 [只看该作者]

Nothing 的意思是 不存在。IsNull判断的是 1、 是否存在;2、是否为空值(默认值)


 回到顶部
帅哥哟,离线,有人找我吗?
无我是天机
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2015/1/28 12:40:00 [只看该作者]

谢谢,明白了

 回到顶部