我想知道除了将列数据类型更改为整数之外,是否有更好的方法来解决 MS-Access 无法处理布尔值的 NULL 问题。
我认为你必须使用一个数字,所以,似乎是这样的Allen Browne,Access MVP。
我没有发现:(我已经有一段时间没有编写 Access 了,但我记得涉及相当多的 isNull 检查。
我认为这取决于您希望您的应用程序/解决方案如何解释数据中的NULL。
您是否想在报告中简单地“忽略”它们...即将它们打印为空格或换行符? 在这种情况下,您可以在 SQL 构建器或常规 Access 查询设计器中的列中使用方便的 IsNull 函数以及“立即 if”iif(),如下所示:
IIF(IsNull(BooleanColumnName), NewLine/BlankSpace/Whatever, BooleanColumnName)
另一方面,如果您想将 NULL 视为“False”值,则最好更新列并更改它们类似于:
Update table
SET BooleanColumnName = FALSE
WHERE BooleanColumnName IS NULL
使用左连接从查询返回数据时,我遇到了同样的问题。基础表中需要布尔字段(因此决不能为空),但因为我可能无法通过左连接获得匹配的记录 - 该字段可能为空,我需要知道它是否为空。
最初我按照另一张帖子的建议在查询中使用了 IIF。这在查询中没有问题,但是当我从 VB.Net 调用相同的查询时,我的逻辑语句会得到错误的结果 - 换句话说,当从代码运行查询时,IIF 无法正确执行。我花了很长时间才接受这件事真的发生了!
最后,我通过返回左连接表的唯一 ID 克服了这个问题,然后检查 ID 是否为空而不是布尔字段,这有效。
如果字段本身可为空,这不会解决您的问题,但如果您只是因为像我一样没有找到匹配的记录而得到空值,那么这将解决问题。