什么是值为-1的复选框?

时间:2016-11-10 01:46:28

标签: vba

我有一些Access查询,其中包括将表单复选框的值设置为" -1"。如果0表示" False" 1表示" True",我怀疑" -1"或者意味着" Null" (这似乎不太可能,因为TripleState属性是" No"),或者"不要改变当前值"。

我进行了一些实验,但我不知道在没有刷新表格和查询的情况下发生了什么,我真的不应该这么做。谁能解释一下发生了什么?

2 个答案:

答案 0 :(得分:1)

你错了。 Zero为false,在Access中为-1(实际上,在VBA中也是如此)。因此,检查附加到值为-1的字段的复选框。

答案 1 :(得分:0)

Null绝不是Null以外的任何内容。它没有数字表示,它基本上意味着“没有价值”;如果-1表示Null,那将使-1成为“魔法值”,而合法-1值将是不明确的。除了Null之外,什么都不是Null

声明变量时,通常会给它一个类型:

Dim someInteger As Integer
Dim someBoolean As Boolean

如果您在每个变量中打印了值,那么0将获得IntegerFalse会获得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)的特殊性。