设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

【Access小品】搞球不清 -- Null的概述

2015-5-30 14:02| 发布者: admin| 查看: 1691| 评论: 8|原作者: todaynew|来自: www.office-cn.net

摘要:   版友三个太阳同志用了一个IF me.Text0=Null Then这样一个判断,没有能得到正确的结果。于是告诉他应该写做:IF isnull(me.Text0) Then。本来这个问题的解答就此该结束,但三个太阳同志继续问他的写法为什么是错 ...
  版友三个太阳同志用了一个IF me.Text0=Null Then这样一个判断,没有能得到正确的结果。于是告诉他应该写做:IF isnull(me.Text0) Then。本来这个问题的解答就此该结束,但三个太阳同志继续问他的写法为什么是错的。这就使得问题复杂化了,因为对此问题我也没全然搞清楚。

  三个太阳同志的问题关乎Null,而Null就是一个搞球不清的东西。Null不是字符串空,也不是数字0,而是值不确定状态,对Null的通俗理解就是搞球不清。1和1可以比较,1和2也可以比较。但是两个搞球不清是无法比较的,两个不确定也是无法比较的。所以Null与Null当然也就无法构成一个逻辑表达式了。当文本框中没有填写任何东西时,看起来它是空,实际需要将其理解为不确定。所以当文本框没有填写任何东西时它是Null,但它却不能与Null这个字面量进行比较。

  实际上在不同程序语言中,关于Null还是有些差异的。在网页的脚本语言JavaScript中,存在Undefined类型和Null类型,VBa中的Null似乎比较接近JavaScript中Undefined类型。在类C语言中(C、Java等),Null表示一个空对象指针,在类B语言中则是用Nothing来表示。无论如何Null总是琢磨不定和难以理解的。

  好在我们通常不大需要深入的理解Null是什么,而主要是需要判断是不是Null了。在这个层面上,我们可以混淆一些概念,并知道不同的情况下的判断怎么去处理。一般来讲在Vba中,我们能对控件的取值是否为Null进行判断,我们可以用Isnull这个函数进行。而在控件的有效性规则属性中,我们需要写成Is not Null。在查询中我们通常也Is Null。如果你对这些都感到不可理解,你还可以用Nz函数将Null转换为一个确定的值,然后进行比较。

  除了判断外,我们是可以用Null进行某些赋值处理的。比如我们可以为控件的值赋值为Null,或者对某个数据表字段更新查询为Null。不过你如果试图给一个内存变量赋值Null,那是通常是会出错的,除非这个内存变量的类型为Variant。如果这个变量是Object,比如窗体变量、控件变量等,我们可以给它们赋值Nothing,以释放它们。

  综上所述,Null就是个搞球不清,既然是搞球不清,也就不必去刻意地搞清楚。大概齐知道怎么回事,怎么处理就行了。


发表评论

最新评论

引用 风中漫步 2015-5-28 16:40
嗯,定义广泛
引用 roych 2015-5-28 17:21
按我理解,Null为真空(当然不是空字符串了)。既然是真空,那就是什么都没有,数据类型自然算是不确定了。两个不确定类型的数据,是无法比较的。因此“Null=Null”是不可能返回TRUE的,同样地,Null+Null当然也不会返回数值了。
就好比:一头猪+一头牛,不能算是2吧?
引用 sxgaobo 2015-5-28 20:51
深!!!
引用 accben 2015-6-22 09:02
有时我会用 if len(me.Text0)>0 then 代替 if isnull(me.Text0)=true then
空值不好比较,它是一个变体。
引用 purplerose 2016-4-20 10:38
ROYCH 比喻不错呀  就好比:一头猪+一头牛,不能算是2吧? 是两种动物呀!
引用 轻风 2016-4-20 11:30
Null = Null 返回 Null ,不会返回True或False
引用 woshinide 2016-8-14 17:28
roych: 按我理解,Null为真空(当然不是空字符串了)。既然是真空,那就是什么都没有,数据类型自然算是不确定了。两个不确定类型的数据,是无法比较的。因此“Null=Nul ...


查看全部评论(8)

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-25 12:33 , Processed in 0.081973 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部