office交流網(wǎng)--QQ交流群號及微信交流群

Access培訓群:792054000         Excel免費交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請用微信掃碼)

        

錯誤3349 無法記録所做的更改,因爲您輸入的值違反瞭爲此錶或列錶定義的設(shè)置(例如,您所輸入的值小於最小值或大於最大值)。請更正錯誤併重試

2020-05-02 08:00:00
zstmtony
原創(chuàng)
8216

在幫客戶定做一箇Access繫統(tǒng),需要導入Excel的數(shù)據(jù)

  使用命令:

  DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "銷售數(shù)據(jù)", strFile, True  'SaleReport 導入Excel數(shù)據(jù)


但齣現(xiàn)以下的錯誤


錯誤 #3349:無法記録所做的更改,因爲您輸入的值違反瞭爲此錶或列錶定義的設(shè)置(例如,您所輸入的值小於最小值或大於最大值)。請更正錯誤併重試


英文齣錯信息:"3349: You cannot record your changes because a value you entered violates the settings defined for this table or list (for example, a value is less than the minimum or greater than the maximum). Correct the error and try again."



解決辦法:

  1.手工導入這箇Excel錶,髮現(xiàn)有異常,提示 産品代碼 和産品組 數(shù)字類型轉(zhuǎn)換異常  ,因爲産品代碼 産品組前麵 是一些數(shù)字類的代碼,但導入時 可以後麵的些産品代碼是文本,但Excel導入時一般會根據(jù)列的前幾行來確定這箇列的數(shù)據(jù)類型

     因爲前麵是數(shù)字,所以Access以爲是數(shù)字類型,但後麵的內(nèi)容卻是文本,所以導入齣錯

  2.在excel中將這2列 格式改爲文本,再導入就正常瞭



相關(guān)的文章:


我在過去一年中一直運行良好的TransferSpreadsheet函數(shù)存在問題。

我正在從每次啟動應用程序時都會打開的錶單的open事件運行VBA代碼。
該代碼刪除訪問暫存錶的內(nèi)容,然後使用transferspreadsheet函數(shù)將2箇excel文件導入到暫存文件中。
我已逐步完成代碼,併且該錯誤髮生在下麵的第一箇docmd上。
DoCmd.TransferSpreadsheet acImport,“ tblScrtchSO”,_
“ C:\ Users \ mviolet \ My Documents \ OptiTrak2 \ QuarantineTesting \ Internal_Sales_Orders.xls”,
True'- 從內(nèi)部銷售excel文件DoCmd.TransferSpreadcactSrt,導入“,_
“ C:\ Users \ mviolet \我的文檔\ OptiTrak2 \ QuarantineTesting \ MK_Sales_Orders.xls”,是'-'從MK_Sales_Orders導入
如果我註釋掉第一箇docmd,則第二箇可以運行。因此,第一箇文件中的數(shù)據(jù)似乎是罪魁禍首,但是數(shù)據(jù)看起來還可以。我嚐試從第一箇excel文件中刪除數(shù)據(jù)行,但是卽使隻有一行excel數(shù)據(jù),牠仍然會失敗。
錯誤消息是:
“ 3349:您不能記録所做的更改,因爲您輸入的值違反瞭爲此錶或列錶定義的設(shè)置(例如,值小於最小值或大於最大值)。更正錯誤併嚐試再次?!?br /> 暫存錶上沒有規(guī)則。與暫存錶沒有關(guān)繫。
excel文件是xls文件,數(shù)據(jù)庫是Access 2010中運行的mdb文件。該應用程序正在使用用戶級安全性。
感謝您的任何想法。
標記
丹尼爾·皮諾
2013年12月10日,下午10:24
如果您嚐試手動導入會怎樣?
excel列數(shù)據(jù)是否與Access錶字段數(shù)據(jù)類型匹配?
您是否已使用瞭有效的舊工作簿,併將其與未能看到髮生變化的工作簿進行瞭比較?(假設(shè)更改已在Excel中髮生,可能不是這種情況,但絶對值得驗證)
基思·穆勒(Keith Mueller)
2013年12月10日,下午10:28
馬剋,
我會檢查您的數(shù)據(jù)類型。excel文件中可能存在“錯誤”數(shù)據(jù)。您可能試圖將太大的數(shù)字放入整數(shù)字段,或者可能試圖將錯誤的日期放入日期字段。
我必鬚使導入暫存錶中的字段主要是文本字段,因爲導入文件中的數(shù)據(jù)不良。然後,我可以在ETL的“轉(zhuǎn)換”步驟中“驗證”數(shù)據(jù)。
祝你好運,開心,
基思
市場
2013年12月11日下午04:55
感謝您的建議。
手動將excel文件導入Access暫存錶中,併創(chuàng)建一箇Access錯誤錶,指示第110行上的Excel錯誤。當我返迴Excel併查看第110行時,牠是最後一行之後的第一箇“空”記録數(shù)據(jù)的。我選擇併刪除瞭Excel中的行併保存瞭文件。當我迴到Access併再次手動導入時,牠現(xiàn)在可以正確導入,現(xiàn)在transferspreadsheet似乎也可以正常工作。
transferspreadsheet函數(shù)不會在Excel中查找第一箇空行併在此處停止(不導入空記録)嗎?在“空”行110中是否有不可見的字符?還是轉(zhuǎn)帳電子錶格使用瞭某種程度上錯誤的Excel範圍?
無論如何,牠似乎正在工作。
基思·穆勒(Keith Mueller)
2013年12月11日,下午08:47
...在該行中有東西,一箇單元格中可能有空格...如果繼續(xù)齣現(xiàn)該錯誤,則需要調(diào)整錶中的數(shù)據(jù)類型,就像我説過我使用允許空值的文本字段一樣,然後“清理”數(shù)據(jù)。
安尼爾是對的!手動導入引髮瞭錯誤...
很高興您找到瞭牠!
dmhzx
2013年12月12日,上午03:53
傳輸電子錶格有其自己的黑暗而神秘的方法來決定要導入多少行以及要導入多少列。
經(jīng)常會穫得65000行以上的空數(shù)據(jù)(或者説是習慣)
excel中的數(shù)據(jù)質(zhì)量通常很差,以至於我最終一次導入一箇單元格。
有趣的項目通常是
11月31日這樣的
日期,例如
文檔長度超過255箇字符的“ TBA” Ttiles 日期(順便説一下,transferspreadshheet會自動截斷而不會報告錯誤。
在數(shù)據(jù)末尾添加空格。
如果有“序列號”要導入的數(shù)字,其中有些數(shù)字帶有前導零,您最終可能會隻輸入進來的數(shù)字,或者除這些之外的所有東西,或者前導零掉瞭,具體取決於您設(shè)置傳輸方式的方式
一件事,如果一箇excel導入突然停止工作,幾乎可以肯定是excel文件中的數(shù)據(jù)所引起的。根據(jù)文件
的大小,一次存儲一箇單元的速度仍然可能會非???。
    分享
    聯(lián)繫我們
    聯(lián)繫人: 王先生
    Email: 18449932@qq.com
    QQ: 18449932
    微博: officecn01
    移動訪問