【发布时间】:2011-06-13 11:09:59
【问题描述】:
看起来我不是唯一遇到此问题的人,但似乎没有解决此问题的方法。
我在 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 有很大的不同。
谢谢!
【问题讨论】:
-
这是自 Access 97 以来的一个已知问题:support.microsoft.com/kb/278696/EN-US。由于过去 14 年没有发生任何变化,我预计不会很快有任何修复......
标签: sql-server ms-access nullable ms-jet-ace