2016-11-10 109 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)的特殊之處。

相關問題