我有一些Access查询,其中包括将表单复选框的值设置为" -1"。如果0表示" False" 1表示" True",我怀疑" -1"或者意味着" Null" (这似乎不太可能,因为TripleState属性是" No"),或者"不要改变当前值"。
我进行了一些实验,但我不知道在没有刷新表格和查询的情况下发生了什么,我真的不应该这么做。谁能解释一下发生了什么?
答案 0 :(得分:1)
答案 1 :(得分:0)
Null
绝不是Null
以外的任何内容。它没有数字表示,它基本上意味着“没有价值”;如果-1表示Null
,那将使-1成为“魔法值”,而合法-1值将是不明确的。除了Null
之外,什么都不是Null
。
声明变量时,通常会给它一个类型:
Dim someInteger As Integer
Dim someBoolean As Boolean
如果您在每个变量中打印了值,那么0
将获得Integer
,False
会获得Boolean
。
然后,您可以在不同类型之间进行转换,并获取以下任何变量的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)的特殊性。