将数据类型为 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 不作任何暗示保证或其他形式的保证。