我有一些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的字段的複選框。 –
謝謝。做一個答案,我會給它一個檢查。 –