我正在将Access .ADP项目转换为带有链接表的.ACCDB。我知道使用SQL Server后端时的一个大问题是使用可空bit
字段,因为Access的Yes/No
数据类型不允许空值。所以我将所有可空的bit
字段转换为tinyint
。但是,Access仍将这些字段映射为Yes/No
,并将所有空值转换为零。
有没有人对如何阻止它有任何建议?我已经仔细检查了有问题的字段是否设置为tinyint
,并且在SSMS中查询我发现绝大多数记录都是空的。但我能想到的只是刷新或删除并重新创建链接表,而这并不能解决问题。
答案 0 :(得分:1)
我使用nullable int字段存储-1(对于Yes),0(对于No)和null(不知道/未定义)有更多的运气。访问表单完全理解这些值,并且当绑定到复选框并用于过滤等时它们会正确响应。如果将Required属性设置为No,则可以使用本机Access表btw执行此操作时绑定到复选框时将显示为灰色。
答案 1 :(得分:1)
在我的案例中,答案是我应该记住的,但却让我感到不安。希望将来对其他人有所帮助。
我的链接表实际上链接到后端的视图(我在问题中肯定应该提到的)。基础表更改时视图is not automatically refreshed上的元数据。我已将基础表中的所有可空bit
字段更改为tinyint
,但就视图而言,它们仍为bit
。
昨晚,我删除并重新创建了所有视图,然后刷新了Access中的链接表。问题解决了!