2011-03-05 53 views
1

我得到的ERROR: 3073 Operation must use an updateable querySOMETIMES,在執行一個INSERT statment。INSERT INTO在MS Access 2010中有時會錯誤:3073操作必須使用一個可更新的查詢

我在Windows 7 PC上沒有問題,但是我爲此編寫的人有時會遇到錯誤。她還在Windows 7上安裝了MS Access 2010.

正如我所說我從來沒有在我的電腦上得到過它,而她只是有時候纔得到它。代碼將插入多行,然後通過錯誤,而其他時間則不會通過錯誤。

如果我在一個.mdb文件或單獨文件中包含代碼和數據,則會發生該錯誤。 下面的代碼片段:

OrderHdrInsertStmnt = " INSERT INTO ORDER_HDR " _ 
& "(ORDER_ID, SOURCE_CODE, ORDER_DATE, SHIP_FNAME, SHIP_LNAME, SHIP_EMAIL, SHIP_COMP, SHIP_PHONE, SHIP_ADDR, SHIP_CITY, SHIP_STATE, SHIP_ZIP, SHIP_CNTRY, " _ 
& " BILL_FNAME, BILL_LNAME, BILL_EMAIL, BILL_COMP, BILL_PHONE, BILL_ADDR, BILL_CITY, BILL_STATE, BILL_ZIP, BILL_CNTRY, " _ 
& " TAX, SHIPPING, TOTAL, MOD_DATE, INSERT_DATE) " _ 
& " VALUES (" _ 
& "'" & OrderId & "','" & SourceCode & "','" & Orderdate & "','" & ShipFName & "','" & ShipLName & "','" & ShipEmail & "','" & ShipComp & "','" & ShipPhone & "','" & ShipAddr & "','" & ShipCity & "','" & ShipState & "','" & ShipZip & "','" & ShipCntry _ 
& "','" & BillFName & "','" & BillLName & "','" & BillEmail & "','" & BillComp & "','" & BillPhone & "','" & BillAddr & "','" & BillCity & "','" & BillState & "','" & BillZip & "','" & BillCntry _ 
& "','" & OrderTax & "','" & OrderShipping & "','" & OrderTotal & "','" & ImportDate & "','" & ImportDate & "');" 

然後我用

dbsCurrent.Execute OrderHdrInsertStmnt, dbFailOnError 

任何援助將是偉大的!

+0

是所有這些字段VarChar /字符串? – N0Alias 2011-03-05 02:24:18

+0

我有一種混合物。有String,Double,Date和Lon變量類型。 – Gary 2011-03-05 03:06:02

+0

值(你試圖插入)是否一樣?例如, OrderId的值,OrderDate – shahkalpesh 2011-03-05 20:35:49

回答

0

當您對查詢運行更新語句時,通常會發生錯誤,因此不清楚應更新哪些記錄。你顯然沒有那樣做。

是否有可能你連接到插入語句的一些數據有時是錯誤的值,例如數字中的字符串或NULL等。這將是最可能的解釋。錯誤最可能的原因是某種非標準輸入,它被連接到語句中。

+1

感謝您的意見。令人困惑的事情是,我沒有在我的電腦上看到這個錯誤,但是另一個錯誤。我們有相同的訪問文件,以及一切(認真)。唯一的區別是電腦。這是導入過程的一部分,有時候一切都可以正常導入,下一次不導入。我只是希望我可以在我的電腦上重新創建問題。 – Gary 2011-03-05 20:33:32

+0

什麼格式是導入源,以及如何打開它? – 2011-03-05 21:22:45

+0

好的!這是我做的... – Gary 2011-03-06 02:59:21

0

這些表是否共享,您是否同時更新/插入?

我正在同一記錄上運行多用戶更新測試。
該表是:一個ID和一個文本字段,
查詢是:更新文本= randomString WHERE ID = 800(ID 800存在...)
Execute方法:CurrentDb.Execute(QRY)

在每臺計算機上超過200次的10倍我有錯誤3073.因此,我認爲這意味着「表被鎖定爲別人」

有關信息,在其他測試(同一表)上,但在插入模式下使用記錄集addNew和更新我有錯誤3343(數據庫格式無法識別)

顯式消息:P

+1

不,他們不是。我已通過添加「重試」臨時修復它。如果我收到錯誤,我會等待1秒鐘,然後重新執行。我從來不需要等一次以上,但是我已經寫了它,所以如果它嘗試超過5次插入任何內容,那麼它就存在這個過程。不是最乾淨的方式,但它已經解決了這個問題。 – Gary 2011-04-12 10:16:44

0

我開發了一個獨立的Visual Basic程序,使用MS Access DB的朋友超過2年前。最近,他抱怨在會話中添加第二條記錄時遇到「操作必須使用可更新的查詢」錯誤。那就是:每次他使用該程序時,只有第1條記錄被添加/更新。

在搜索網絡,各種論壇後,我找不到可能的答案。

最終,我的案例的解決方案/解散:似乎我的朋友在後臺運行的新安裝的備份軟件(Memeo Backup)會以某種方式導致問題。禁用備份程序,該程序可以再次工作。

因此,請嘗試禁用後臺程序,看看是否有任何問題。

0

我在插入時出現同樣的錯誤。我使用從VBA運行的VALUES子句插入到鏈接表中。當我將插入目標表移入本地mdb時,它解決了這個問題。然後我能夠將本地表中的所有行插入到鏈接表中。

相關問題