Access数据库培训
网站公告
·Access快速平台QQ群号:277422564    ·Access快速开发平台下载地址及教程    ·欢迎添加微信交流账号:Accessoft7    ·如何快速搜索本站文章|示例|资料!    
您的位置: 首页 > 技术文章 > 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群 (群号:115120150)       access源码网店

最新评论 查看更多评论(9)

2019/1/10 16:14:46fxhgood
Null:是一个无法被赋予合理值时的状态,VBA就认为是null。

2015/8/8 8:35:06王大哥1314
好文!

2015/5/29 19:50:15大道天涯
尽管作为开发爱好者,但是毕竟我们是使用Access等别人已经做好的东西和规则。类似于上文提出的问题,本人完全同意作者的观点,认为就是没有必要搞清楚其中的缘由,因为对于这一点我们真的只需要知道怎么去使用好Null就行了。就像中国象棋,我们只需要知道马走“日”字、相走“田”字,并没必要去探究为什么这样,因为我们都不是规则的制定者韩信,而绝大多数人也不具备韩信的规则制定能力。我想,CS玩的好的人,未必都会程序设计,更未必都具备设计出CS的能力吧!反过来说,CS的作者,也未必是CS玩的最好的玩家!

2015/5/29 15:44:59来福
一下子上升到哲学的高度了。

2015/5/29 14:45:24丘山
表达的很给力
赞一个!

发表评论您的评论将提升作者分享的动力!快来评论一下吧!

用户名:
密 码:
内 容:
 

常见问答

技术分类

相关资源

最新帖子

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