看起来我不是唯一一个遇到这个问题的人,但这个问题似乎没有答案。
我在 Access 2010 中工作,使用指向 SQL Server 2005 数据库的链接表(通过 SQL Server ODBC 管道)。在该表中,其中一个布尔字段被标记为可为空,并且该表中的几条记录实际上在该字段中具有空值。到目前为止,一切都很好。
Access 出现了,一旦您打开链接表,Access 就会显示 0(假)而不是空白单元格(问题 #1)。如果您尝试修改记录中的任何内容,您会收到一条错误消息,指出该记录已被其他人修改,您的更改无法保存。最后一个问题是由于 Access 不容忍可为空的 bool 字段,并且在尝试保存该值时有点疯狂。
我的研究表明,这可能与 Access 在后台使用 Jet 连接到 SQL Server 数据库有关,而 Jet 显然不支持可为空的布尔值。似乎没有办法配置 Jet 来支持这一点(尽管可能有,如果你在代码中连接)。我还认为 MS 正在用 Office 2010 中使用的另一种技术(我认为是 ACE)取代 Jet,但无法判断这是否是 Access 实际使用的技术。在任何一种情况下,我都找不到关于可空布尔值的可配置选项。
最后,这个问题似乎已经在不久前被带到了 MS,但他们没有答案:https ://connect.microsoft.com/SQLServer/feedback/details/617339/null-bit-fields-produce -spurious-ms-access-errors-when-using-the-native-odbc-driver?wa=wsignin1.0#tabs
我想知道是否还有其他人遇到过这个问题并找到了解决方案。在您提出建议之前,关闭可空选项并将所有空值设置为“假”在我们的案例中并不是一个真正的选项。对我们来说,null 实际上是一个有效的状态,与 'false 有很大不同。
谢谢!