2013-08-22 106 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