El acceso produce un error al exportar campos con el tipo de datos single o double a Oracle.

Número de KB original: 301915

Nota:

Requiere conocimientos básicos de macros, codificación e interoperabilidad. Este artículo se aplica a una base de datos de Microsoft Access (.mdb) y a un proyecto de Microsoft Access (.adp).

Síntomas

Cuando se usa el controlador ODBC de Oracle para exportar una tabla de Access que tiene campos de tipo de datos Single o Double, el controlador no puede exportar esos campos como se indica a continuación.

El controlador de Microsoft Oracle muestra el siguiente mensaje de error:

Microsoft Access no pudo anexar todos los datos a la tabla. Se eliminó el contenido de los campos de <> los registros numéricos y se perdieron 0 registros debido a infracciones de clave.

  • Si se eliminaron datos, los datos pegados o importados no coinciden con los tipos de datos de campo ni con la propiedad FieldSize de la tabla de destino.
  • Si los registros se han perdido, los registros pegados contienen valores de clave principal que ya existen en la tabla de destino o infringen las reglas de integridad referencial de una relación definida entre tablas. ¿Quieres continuar de todos modos?

Los controladores ODBC de Oracle hasta la versión 8.1.6 e incluida muestran el siguiente mensaje de error:

ODBC: error de llamada [Oracle][ODBC][ORA] ORA-01401: Valor insertado demasiado grande para la columna (1401)

Causa

En Microsoft Access 97, el proceso de exportación convierte los campos tipo de datos Single y Double en VarChar2(40). Sin embargo, en Microsoft Access 2000 y versiones posteriores, los campos se convierten en VarChar2(4), que es demasiado pequeño para contener los datos.

Solución

Para exportar correctamente los datos a Oracle, use una consulta basada en las tablas pertinentes. Use la función CStr()para convertir el tipo de datos en String.

Por ejemplo, tenga en cuenta la siguiente sintaxis SQL:

SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;

donde dblTest es un campo con un tipo de datos Double. Convierta dblTest en un tipo de datos String realizando el siguiente cambio en la sintaxis sql:

SELECT tblExample.pkeyDataID, CStr([dblTest]) AS Expr1
FROM tblExample;

La consulta ahora se puede exportar correctamente a Oracle.

Este problema se resuelve en Microsoft Jet 4.0 Database Engine Service Pack 8 (SP8).

Estado

Microsoft ha confirmado que se trata de un problema en los productos de Microsoft que aparecen al principio de este artículo.

Más información

Los productos de otros fabricantes mencionados en este artículo son fabricados por compañías que no dependen de Microsoft. Microsoft no ofrece ninguna garantía, implícita o de otro tipo, respecto al rendimiento o la confiabilidad de estos productos.