當您將數據類型為單一或雙精度浮點數的欄位匯出至 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 不以暗示或其他方式擔保這些產品的效能或可靠性。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應