Access вызывает ошибку при экспорте полей с одним или двойным типом данных в Oracle

Исходный номер базы знаний: 301915

Примечание.

Требуются базовые навыки работы с кодом, макросами и взаимодействия. Эта статья относится к базе данных Microsoft Access (.mdb) и к проекту Microsoft Access (ADP).

Симптомы

При использовании драйвера Oracle ODBC для экспорта таблицы Access с полями типа данных Single или Double драйверу не удается экспортировать эти поля следующим образом.

Драйвер Microsoft Oracle отображает следующее сообщение об ошибке:

Microsoft Access не удалось добавить все данные в таблицу. Содержимое полей в <числовых> записях было удалено, а 0 записей было потеряно из-за ключевых нарушений.

  • Если данные были удалены, вставленные или импортированные данные не соответствуют типам данных полей или свойству FieldSize в целевой таблице.
  • Если записи были потеряны, вставленные записи содержат значения первичного ключа, которые уже существуют в целевой таблице, или нарушают правила целостности ссылок для связи, определенной между таблицами. Ты хочешь продолжить?

Драйверы Oracle ODBC до версии 8.1.6 включительно отображают следующее сообщение об ошибке:

ODBC — сбой вызова [Oracle][ODBC][ORA] ORA-01401: вставлено слишком большое значение для столбца (No 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. Преобразуйте dblTest в тип данных String, внося следующее изменение в синтаксис SQL:

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

Теперь запрос можно успешно экспортировать в Oracle.

Эта проблема устранена в microsoft Jet 4.0 Database Engine с пакетом обновления 8 (SP8).

Состояние

Корпорация Майкрософт подтвердила, что это проблема в продуктах Майкрософт, перечисленных в начале этой статьи.

Дополнительные сведения

Сторонние продукты, которые обсуждаются в этой статье, производятся компаниями, независимыми от Microsoft. Корпорация Майкрософт не дает никаких явных, подразумеваемых и прочих гарантий относительно производительности или надежности этих продуктов.