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 字段转换为是/否的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 转换为 TINYINT

SQL表将日期列转换为纪元

带有/在字段名称中的 ODBC 链接数据库

如何创建指向字段名称中带有句点的 SQL Server 视图的 Jet ODBC 链接?

oracle odbc连接sqlserver 无法查询字段

MySQL "tinyInt1isBit or tinyint" 相关问题解析