2016-11-10 83 views
0

我有一些Access查询,其中包括将表单的复选框的值设置为“-1”。如果0表示“假”,1表示“真​​”,我怀疑“-1”意味着“空”(这似乎不太可能,因为TripleState属性为“否”)或“不要更改当前值”。什么是值为-1的复选框?

我尝试了一下,但是我不知道发生了什么,没有刷新表格和查询,我不应该这样做。任何人都可以解释发生了什么?

+1

你错了。零是错误的,在Access中是-1。因此,检查附加到值为-1的字段的复选框。 –

+0

谢谢。做一个答案,我会给它一个检查。 –

回答

1

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

+0

有趣。在Excel公式中,至少“True”的计算结果为1. –

+1

@ ShawnV.Wilson:在Excel公式中,的确如此。但不是在内部或Access存储时。 (我每天处理这个问题,将Access数据导入到SQL Server或从SQL Server导出到Access,这也是导入dBase/FoxPro数据的一个问题。) –

0

Null绝不是除Null之外的任何东西。它没有数字表示,它基本上意味着“没有价值”;如果-1意味着Null,那么会使-1有一些“魔法值”,而合法-1值会是不明确的。除Null以外,没有任何含义是Null

当你声明一个变量,你通常给它一个类型:

Dim someInteger As Integer 
Dim someBoolean As Boolean 

如果你印在每个变量的值,你会得到的Boolean0Integer,并False

然后,您可以类型之间进行转换,并获得这些变量的值Integer

Debug.Print someInteger, TypeName(someInteger) 
Debug.Print CInt(someBoolean), TypeName(someBoolean) 

someBoolean整数表示将0,因为它初始化为False

逆工程太 - 你可以将任何IntegerBoolean

Debug.Print CBool(0) 
Debug.Print CBool(-1) 
Debug.Print CBool(42) 

只有CBool(0)将打印False - 在VBA确实没有任何具体的True:有“不假”虽然。 -1只是一个“非假”的值,方便了,而且语言设计者决定为True布尔值做一个很好的默认数值表示。但意识到任何非零值也将评估为True是很重要的。

这根本不是Access(或VBA)的特殊之处。

相关问题