データ型が single または double のフィールドを Oracle にエクスポートすると、アクセスによってエラーが発生する

元の KB 番号: 301915

注:

基本的なマクロ、コーディング、相互運用性のスキルが必要です。 この記事は、Microsoft Access データベース (.mdb) と Microsoft Access プロジェクト (.adp) に適用されます。

現象

Oracle ODBC ドライバーを使用して、データ型 Single または Double のフィールドを持つ Access テーブルをエクスポートすると、ドライバーは次のようにこれらのフィールドのエクスポートに失敗します。

Microsoft Oracle ドライバーには、次のエラー メッセージが表示されます。

Microsoft Access では、テーブルにすべてのデータを追加できませんでした。 数値>レコードの<フィールドの内容が削除され、キー違反のために 0 レコードが失われました。

  • データが削除された場合、貼り付けたデータまたはインポートしたデータが、変換先テーブルのフィールド データ型または FieldSize プロパティと一致しません。
  • レコードが失われた場合、貼り付けたレコードに宛先テーブルに既に存在する主キー値が含まれているか、テーブル間で定義されているリレーションシップの参照整合性規則に違反します。 とにかく続行しますか?

バージョン 8.1.6 までの Oracle ODBC ドライバーには、次のエラー メッセージが表示されます。

ODBC - 呼び出しに失敗しました [Oracle][ODBC][ORA] ORA-01401: 列の挿入値が大きすぎます (#1401)

原因

Microsoft Access 97 では、エクスポート プロセスによって、単一データ型フィールドと Double データ型フィールドが VarChar2(40) に変換されます。 ただし、Microsoft Access 2000 以降では、フィールドは VarChar2(4) に変換され、データを保持するには小さすぎます。

解決方法

データを Oracle に正常にエクスポートするには、関連するテーブルに基づくクエリを使用します。 CStr()関数を使用して、データ型を String に変換します。

たとえば、次の SQL 構文を考えてみましょう。

SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;

dblTest は、データ型が Double のフィールドです。 SQL 構文に次の変更を行って、dblTest を String データ型に変換します。

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

これで、クエリを Oracle に正常にエクスポートできるようになりました。

この問題は、Microsoft Jet 4.0 データベース エンジン Service Pack 8 (SP8) で解決されています。

状態

Microsoft は、この記事の冒頭に記載されている Microsoft 製品の問題であることを確認しました。

詳細情報

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示または黙示にかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。