2013-08-22 32 views
-1

我有一個包含布爾值的字段列,這個布爾值顯示爲-1,0或者顯然0表示空值。 當我在where子句中使用這個值時,測試它是否爲false,我得到所有的假記錄,就像我應該的那樣。我正在測試這與3狀態複選框。如果我把它放在NULL,那麼我得不到記錄(在字段中不允許有null)。但是,當我把它變成真實的時候,我沒有看到任何結果。查詢vba中的位/布爾值

任何想法?

編輯:

我使用的查詢是不是很有趣,它基本上只是: "SELECT *a lot* FROM *a lot* WHERE T0001_orders.t0001_active = " & me.chkbx.value 我相信我使用的SQLserver,我通過ODBC進行連接(?)。這可能是不正確的,我對這一部分沒有太多打擾,這可能是我無法弄清楚的原因。

+0

數位缺失她:發表您的查詢和結果。數據庫看起來像樣本也是有用的。你使用了哪個數據庫?你如何連接它? – 2013-08-22 11:11:20

+0

好吧,當我在這裏工作時,這部分已經建立了,所以我不太確定,但我會嘗試添加更多信息。 – TheLaurens

回答

1

您可能遇到null問題。當你使用where something = NULL的時候,它在msssql服務器中將不起作用。

你將不得不使用其中一些是空

嘗試這些3條語句,你可能會看到那裏的錯誤所在。

SELECT a lot FROM a lot WHERE T0001_orders.t0001_active is null 
SELECT a lot FROM a lot WHERE T0001_orders.t0001_active =0 
SELECT a lot FROM a lot WHERE T0001_orders.t0001_active =1 

爲空返回所有空值

場= 1返回所有真正

場= 0返回全是假的

+0

對於這個特定的字段,是null返回沒有任何東西,= 0返回所有的假字段,-1也沒有返回任何東西 – TheLaurens

+0

好吧,<> 0似乎工作,所以我會用這個,我的問題如何正確查詢儘管 – TheLaurens

+1

真的仍然存在。嘗試 通過T0001_orders.t0001_active 從多個組中選擇計數(*),T0001_orders.t0001_active以查看是否有任何其他值。 Vba.false = 0和任何其他數字是真的,但真正的真實= -1 – Archlight