将数据类型为 single 或 double 的字段导出到 Oracle 时,Access 会导致错误
原始 KB 编号: 301915
注意
需要具备基本的宏、编码和互操作性技能。 本文适用于 Microsoft Access 数据库 (.mdb) 和 Microsoft Access 项目 (.adp) 。
症状
使用 Oracle ODBC 驱动程序导出具有数据类型为 Single 或 Double 的字段的 Access 表时,驱动程序无法导出这些字段,如下所示。
Microsoft Oracle 驱动程序显示以下错误消息:
Microsoft Access 无法将所有数据追加到表。 删除了数字>记录 () 中的<字段内容,0 个记录 () 因键冲突而丢失。
- 如果删除了数据,则粘贴或导入的数据与目标表中的字段数据类型或 FieldSize 属性不匹配。
- 如果记录丢失,要么粘贴的记录包含目标表中已存在的主键值,要么违反了表之间定义的关系的引用完整性规则。 是否仍要继续?
最高版本 8.1.6(包括版本 8.1.6)的 Oracle ODBC 驱动程序显示以下错误消息:
ODBC - 调用失败 [Oracle][ODBC][ORA] ORA-01401:插入的值对于列 (#1401)
原因
在 Microsoft Access 97 中,导出过程将 Single 和 Double 数据类型字段转换为 VarChar2 (40) 。 但是,在 Microsoft Access 2000 及更高版本中,字段将转换为 VarChar2 (4) ,这太小而无法保存数据。
解决方案
若要成功将数据导出到 Oracle,请使用基于相关表的查询。 使用 CStr () 函数将数据类型转换为 String。
例如,请考虑以下 SQL 语法:
SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;
其中,dblTest 是数据类型为 Double 的字段。 通过对 SQL 语法进行以下更改,将 dblTest 转换为字符串数据类型:
SELECT tblExample.pkeyDataID, CStr([dblTest]) AS Expr1
FROM tblExample;
现在可以成功将查询导出到 Oracle。
此问题在 Microsoft Jet 4.0 数据库引擎 Service Pack 8 (SP8) 中得到解决。
状态
Microsoft 已确认这是本文开头列出的 Microsoft 产品中的问题。
更多信息
本文中讨论的第三方产品由 Microsoft 以外的其他公司提供。 对于这些产品的性能或可靠性,Microsoft 不作任何暗示保证或其他形式的保证。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈