ODBC 链接表将 Tinyint 字段转换为是/否
Posted
技术标签:
【中文标题】ODBC 链接表将 Tinyint 字段转换为是/否【英文标题】:ODBC Linked Tables Convert Tinyint Fields to Yes/No 【发布时间】:2013-03-25 18:30:25 【问题描述】:我正在将 Access .ADP 项目转换为带有链接表的 .ACCDB。我知道使用 SQL Server 后端时的一个大问题是使用可空的 bit
字段,因为 Access 的 Yes/No
数据类型不允许空值。所以我将所有可以为空的bit
字段转换为tinyint
。但是,Access 仍将这些字段映射为Yes/No
,并将我的所有空值都转换为零。
有人对如何让它停止这种情况有任何建议吗?我已经仔细检查了有问题的字段是否设置为tinyint
,并且在 SSMS 中查询我发现绝大多数记录都是空的。但我能想到的只是刷新或删除并重新创建链接表,这并不能解决问题。
【问题讨论】:
【参考方案1】:使用可空 int 字段存储 -1(表示是)、0(表示否)和 null(不知道/未定义),我有更多的运气。 Access 表单完全理解这些值,并且当绑定到复选框并用于过滤等时它们会正确响应。空值(如果您将 Required 属性设置为 No,您可以使用本机 Access 表执行此操作)在绑定到复选框时将显示为灰色。
【讨论】:
感谢您的建议。我只绑定到选项组,而不是复选框,所以我认为这无关紧要,但我会在早上试一试。【参考方案2】:在我的情况下,答案是我应该记住的,但我忘记了。希望将来对其他人有所帮助。
我的链接表实际上链接到后端的视图(我肯定应该在我的问题中提到这一点)。基础表更改时视图 is not automatically refreshed 上的元数据。我已将基础表中所有可为空的bit
字段更改为tinyint
,但就视图而言,它们仍然是bit
。
昨晚,我删除并重新创建了所有视图,然后刷新了 Access 中的链接表。问题解决了!
【讨论】:
以上是关于ODBC 链接表将 Tinyint 字段转换为是/否的主要内容,如果未能解决你的问题,请参考以下文章