Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-教程

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

时 间:2015-05-28 16:26:30
作 者:煮江品茶   ID:10802  城市:武汉
摘 要:【Access小品】搞球不清 -- Null的概述
正 文:

  版友三个太阳同志用了一个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就是个搞球不清,既然是搞球不清,也就不必去刻意地搞清楚。大概齐知道怎么回事,怎么处理就行了。


Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助