我有一些Access查询,其中包括将表单的复选框的值设置为“-1”。如果0表示“假”,1表示“真”,我怀疑“-1”意味着“空”(这似乎不太可能,因为TripleState属性为“否”)或“不要更改当前值”。什么是值为-1的复选框?
我尝试了一下,但是我不知道发生了什么,没有刷新表格和查询,我不应该这样做。任何人都可以解释发生了什么?
我有一些Access查询,其中包括将表单的复选框的值设置为“-1”。如果0表示“假”,1表示“真”,我怀疑“-1”意味着“空”(这似乎不太可能,因为TripleState属性为“否”)或“不要更改当前值”。什么是值为-1的复选框?
我尝试了一下,但是我不知道发生了什么,没有刷新表格和查询,我不应该这样做。任何人都可以解释发生了什么?
你错了。 Zero是错误的,在Access中是-1(实际上,在VBA中也是如此)。因此,检查附加到值为-1的字段的复选框。
有趣。在Excel公式中,至少“True”的计算结果为1. –
@ ShawnV.Wilson:在Excel公式中,的确如此。但不是在内部或Access存储时。 (我每天处理这个问题,将Access数据导入到SQL Server或从SQL Server导出到Access,这也是导入dBase/FoxPro数据的一个问题。) –
Null
绝不是除Null
之外的任何东西。它没有数字表示,它基本上意味着“没有价值”;如果-1意味着Null
,那么会使-1有一些“魔法值”,而合法-1值会是不明确的。除Null
以外,没有任何含义是Null
。
当你声明一个变量,你通常给它一个类型:
Dim someInteger As Integer
Dim someBoolean As Boolean
如果你印在每个变量的值,你会得到的Boolean
0
为Integer
,并False
。
然后,您可以类型之间进行转换,并获得这些变量的值Integer
:
Debug.Print someInteger, TypeName(someInteger)
Debug.Print CInt(someBoolean), TypeName(someBoolean)
的someBoolean
整数表示将0
,因为它初始化为False
。
逆工程太 - 你可以将任何Integer
为Boolean
:
Debug.Print CBool(0)
Debug.Print CBool(-1)
Debug.Print CBool(42)
只有CBool(0)
将打印False
- 在VBA确实没有任何具体的True
:有“不假”虽然。 -1
只是一个“非假”的值,方便了,而且语言设计者决定为True
布尔值做一个很好的默认数值表示。但意识到任何非零值也将评估为True
是很重要的。
这根本不是Access(或VBA)的特殊之处。
你错了。零是错误的,在Access中是-1。因此,检查附加到值为-1的字段的复选框。 –
谢谢。做一个答案,我会给它一个检查。 –