2010-07-06 73 views
0

我的MS Access表中有一个空列的文本列,在插入新记录时默认为默认值。我的问题是,我似乎无法检查这个字段是否为空,并且等于Null或等于“”。例如,没有这些“读”现场为空:MS Access默认值

If [Field] = "" Or [Field] = Null Then 

我一直使用Access 2007年开发这个数据库,我最近与Access 2003,这是当我觉得这个问题打开了它开始。这可能是原因吗?如果是这样,只需打开并使用Access 2007再次保存解决它?

回答

2

当您与null进行比较时,您需要使用IsNull函数。使用传统的ANSI SQL逻辑,NULL <> Null,所以你需要一个特殊的函数来测试null。

If [Field] = "" Or IsNull([Field]) 
+0

非常感谢! – 2010-07-06 20:32:03

+0

可以很方便地说'If Trim([field]&vbNullstring)= vbNullString' – Fionnuala 2010-07-06 21:29:31

2

首先,我会建议你做两件事情之一:

  1. 设置你的领域,不允许零长度字符串。这样你只能测试是否为空。

  2. 如果您觉得您必须允许存储ZLS,然后将默认值设置为ZLS。尽管如此,该领域仍然有可能结束,因此这可能会或可能不会有所帮助。

我不认为ZLS的存储具有任何实用性。它几乎总是一个快捷方式来容纳数据被附加到源返回ZLS的空字段而不是空值。

您还应该阅读空值。艾伦·布朗有一些网页解释这一切非常好:

:用VBA代码的空值的工作

方面

这些文章是面向Access的,但对于那些使用任何数据库的人来说可能是有价值的,特别是相对新手,因为写作的会话风格。

-1

你应该尝试:

If Nz([Field], "") = "" Then 

因为:

If [Field] = "" 

在:

If [Field] = "" Or IsNull([Field]) 

仍然会抛出一个空的错误!

+0

只是不正确。Null =“”返回Null,它不是True,并且在布尔测试中正确计算,当字段为空时评估为If Null或True Then。由于(Null或True)评估为True,因此完全没有问题。 -1在发布之前不进行测试。 – 2010-09-07 22:25:43