當您將數據類型為單一或雙精度浮點數的欄位匯出至 Oracle 時,存取會造成錯誤

原始 KB 編號: 301915

注意事項

需要基本的巨集、編碼和互通性技能。 本文適用於 Microsoft Access 資料庫 (.mdb) 和 Microsoft Access 專案 (.adp) 。

徵狀

當您使用 Oracle ODBC 驅動程式導出具有 Single 或 Double 資料類型欄位的 Access 資料表時,驅動程式無法匯出這些欄位,如下所示。

Microsoft Oracle 驅動程序會顯示下列錯誤訊息:

Microsoft Access 無法將所有數據附加至數據表。 已刪除數字>記錄 () 中的<字段內容,而0筆記錄 (的) 因索引鍵違規而遺失。

  • 如果數據已刪除,則您貼上或匯入的數據與目的地數據表中的欄位數據類型或 FieldSize 屬性不符。
  • 如果記錄遺失,可能是您貼上的記錄包含目的地數據表中已存在的主鍵值,或是它們違反數據表之間定義之關聯性的引用完整性規則。 您還是要繼續嗎?

Oracle ODBC 驅動程式最多包含 8.1.6 版,會顯示下列錯誤訊息:

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 轉換成 String 數據類型:

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

查詢現在可以成功匯出至 Oracle。

此問題已在 Microsoft Jet 4.0 Database Engine Service Pack 8 (SP8) 中解決。

狀態

Microsoft 已確認這是本文開頭所列 Microsoft 產品中的問題。

其他相關資訊

本文提及的協力廠商產品是由獨立廠商所製造,與 Microsoft 無涉。 Microsoft 不以暗示或其他方式擔保這些產品的效能或可靠性。