access空值Null的常见错误
- 2019-09-30 16:29:00
- tmtony8 原创
- 11845
在access中,遇到Null时的常见问题:
1:条件为空
如果在查询的字段下输入条件,则它返回匹配的记录。如果记录中有Null值记录呢?
如在个人信息查询中, 输入“张三”可以筛选他的记录。
“张三”
输入Not "张三",可以筛选出不是“张三”的非空记录
NOT “张三”
显然这结果是这两个查询都不包含姓名为Null的记录
解决办法:
指定Null。对于上面的第二个查询,要满足不是“张三”的所有记录,条件必须是:
Is Null Or Not "张三"
2:表达式中有Null
涉及Null的计算通常会导致空值。
如在文本框的ControlSource属性中输入如下表达式,显示支付的金额:
= [单价]*[数量]
如果数量为NUll,因此文本框什么也不显示。
解决办法
使用Nz()函数为Null指定一个值:
= Nz([单价],0)-Nz([数量],0)
3:外键为空
Access中主键是不能有空值的,但是却允许外键出现空值。在大多数情况下,我们应该阻止这种可能使记录孤立的情况出现。
如在商品订购中,在订单表中有订单编号,在订单明细中,订单编号是外键,access是允许外键为空的。
由于订单明细中的这些记录与主表中的任何记录都不匹配,因此这些孤立的记录将不再显示。
解决办法
在表设计视图中,将外键字段的必需属性设置为Yes,除非明确希望在外键中使用Null。
4:空值和非变量
在VBA中,唯一可以包含Null的数据类型是Variant。当字段的值分配给非变量时,都必须考虑该字段可能为空的可能性。
如下面的代码:
Dim strName as String Dim lngID As Long strName = Me.MiddleName lngID = Me.ClientID
当MiddleName字段包含Null时,会将Null分配给字符串,此时会产生error
同样,将ClientID值分配给数字变量可能会导致错误。
解决办法
(a)如果需要使用空值,请使用Variant数据类型。
(b)使用Nz()函数指定要用于Null的值。例如:
strName = Nz(Me.MiddleName,“”) lngID = Nz(Me.ClientID,0)
5:比较为空
如表达式:
If [fname] = Null Then这又是Null的一个错误:结果既不是True也不是False,而是Null。
解决办法
使用IsNull()函数:
If IsNull([fname]) Then
6:忘记Null既不是True也不是False。
这两个结构是否做同样的工作?
(a) If [fname] = "王" Then MsgBox "It's a 王" Else MsgBox "It's not a Smith" End If (b) If [fname] <> "王" Then MsgBox "It's not a 王" Else MsgBox "It's a 王" End If
当“姓名”为Null时,这两个代码相互矛盾。在这两种情况下,If都失败,因此执行Else,从而导致出现矛盾的消息。
解决办法
(a)处理比较的所有三个结果- 正确,错误和无效:
If [fname] = "王" Then MsgBox "It's a 王" ElseIf [fname] <> "王" Then MsgBox "It's not a 王" Else MsgBox "We don't know if it's a 王" End If
(b)在某些情况下,Nz()函数可让您一起处理两种情况。例如,以相同的方式处理Null和零长度的字符串:
If Len(Nz([fname],"")) = 0 Then
- office课程播放地址及课程明细
- Excel Word PPT Access VBA等Office技巧学习平台
- 将( .accdb) 文件格式数据库转换为早期版本(.mdb)的文件格式
- 将早期的数据库文件格式(.mdb)转换为 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 数据库引擎和访问连接引擎以阻止对远程数据库的访问(remote table)
- Access 365 /Access 2019 数据库中哪些函数功能和属性被沙箱模式阻止(如未启动宏时)
- Access Runtime(运行时)最全的下载(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些电脑无法正常注册的解决办法(regsvr32注册时卡住)
- office使用部分控件时提示“您没有使用该ActiveX控件许可的问题”的解决方法
- RTF文件(富文本格式)的一些解析
- Access树控件(treeview) 64位Office下出现横向滚动条不会自动定位的解决办法
- Access中国树控件 在win10电脑 节点行间距太小的解决办法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 树控件 ListView列表等64位MSCOMMCTL.OCX控件下载
- VBA或VB6调用WebService(直接Post方式)并解析返回的XML
- 早期PB程序连接Sqlserver出现错误
- MMC 不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- sql server连接不了的解决办法
- localhost与127.0.0.1区别
- Roych的浅谈数据库开发系列(Sql Server)
- sqlserver 自动备份对备份目录没有存取权限的解决办法
- 安装Sql server 2005 express 和SQLServer2005 Express版企业管理器 SQLServer2005_SSMSEE
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |