Обнуляемые поля типа bool в связанных таблицах MS Access

Похоже, я ' m не единственный, кто столкнулся с этой проблемой, но, похоже, нет ответа на эту проблему.

Я работаю в Access 2010, использую связанную таблицу с базой данных SQL Server 2005 (через SQL Сервер ODBC pipe). В этой таблице одно из логических полей помечено как допускающее значение NULL, и несколько записей в этой таблице действительно имеют значение NULL в поле. Пока все хорошо.

Входит Access, и как только вы открываете связанную таблицу, Access показывает 0 (ложь) вместо пустой ячейки (проблема №1). И если вы попытаетесь изменить что-либо в записи, вы получите сообщение об ошибке, в котором говорится, что запись была изменена кем-то другим, и ваши изменения не могут быть сохранены. Эта последняя проблема связана с тем, что Access не допускает пустых полей типа bool и немного сходит с ума при попытке сохранить значение.

Мои исследования показывают, что это могло иметь какое-то отношение к Access, использующему Jet в фоновом режиме для подключения к базе данных SQL Server, а Jet, по-видимому, не поддерживает bools, допускающие значение NULL. Похоже, что нет способа настроить Jet для поддержки этого (хотя, возможно, есть, если вы подключаетесь в коде). Я также думал, что MS заменяет Jet другой технологией, используемой в Office 2010 (я думаю, ACE), но не могу сказать, действительно ли это то, что используется Access. В любом случае я не могу найти никаких настраиваемых параметров, касающихся булевых значений, допускающих значение NULL.

Наконец, эта проблема, похоже, недавно была передана в MS, но на их стороне нет ответа: https: // connect .microsoft.com / SQLServer / feedback / details / 617339 / пустые битовые поля производят ложные ошибки доступа ms при использовании родного драйвера odbc? wa = wsignin1. 0 # tabs

Мне интересно, сталкивался ли кто-нибудь еще с этим и нашел решение. И прежде чем вы предложите это, отключение параметра NULL и установка для всех NULL значения false в нашем случае не вариант. Для нас значение null на самом деле является допустимым состоянием и сильно отличается от false.

Thx!

5
задан Tony Toews 24 January 2011 в 21:10
поделиться