我有通过ODBC连接到MySQL服务器(不是Microsoft SQL Server)的MS Access 2007表的问题 .
If unique identifier in MySQL table is BIGINT - all cells content is displayed like this: "#Deleted".
我发现这篇文章:
"#Deleted" errors with linked ODBC tables (at support.microsoft.com)
它说:
以下是一些可用于避免此行为的策略:避免输入除唯一索引之外完全相同的记录 . 避免更新触发唯一索引和另一个字段的更新 . 由于此数据类型存在固有的舍入问题,因此不要将Float字段用作唯一索引或作为唯一索引的一部分 . 使用SQL传递查询执行所有更新和插入,以便准确了解发送到ODBC数据源的内容 . 使用SQL传递查询检索记录 . SQL传递查询不可更新,因此不会导致“#Delete”错误 . 避免在构成链接ODBC表的唯一索引的任何字段中存储Null值 .
但我没有“避免”这些东西 . 我的问题出在BIGINT . 为了确定是否这样,我创建了2个表,一个具有INT id,一个具有BIGINT . 就是这样 .
我无法在 生产环境 数据库中将BIGINT更改为INT .
Is there any way to fix this?
我正在使用:Access 2007,mysql-connector-odbc-3.51.30-winx64,MySQL服务器5.1.73 .
3 回答
您可以尝试在Access查询上创建表单,并使用查询中的CInt()将BIGINT转换为INT . 这在表单处理之前发生 . 根据您的情况,您可能需要在查询中转换为字符串(CStr()),然后手动处理验证用户是否使用IsNumeric输入了数字 . 我的想法是欺骗表单而不是试图解释数据类型,这似乎是你的问题 .
Access 2016现在支持BigInt:https://blogs.office.com/2017/03/06/new-in-access-2016-large-number-bigint-support/
MySQL驱动程序可以选择将
BIGINT
值转换为INT
. 这会为你解决问题吗?