第一篇:關(guān)于在ExcelVBA中用Recordset對象訪問更新ACCESS數(shù)據(jù)表運行時錯誤的小結(jié)
關(guān)于在ExcelVBA中用Recordset對象訪問更新ACCESS數(shù)據(jù)表產(chǎn)生實時錯誤'-2147217887(80040e21)'的小結(jié)
網(wǎng)上對于更新數(shù)據(jù)庫表[運行時錯誤'-2147217887(80040e21)':多步操作產(chǎn)生錯誤。請檢查每一步的狀態(tài)值?;蛘?無法更新字段。]給出的幾種解釋:(1)字符串長度超過數(shù)據(jù)表預(yù)設(shè)限制;(2)數(shù)據(jù)類型不符;(3)無主鍵。還有一個是修改了游標(biāo)類型解決問題的,但是我遇到的都不是這幾種。
最近,為了維護單位的人事工資管理系統(tǒng),需要將人員的學(xué)歷信息先在一張Excel電子表中維護好,然后再在VBA中利用Recordset對象訪問更新ACCESS數(shù)據(jù)表。由于先前的查詢中為了避免“無效的NULL引用”,對查詢字段都用iff(IsNull(),)來包裹。在后面的更新中,直接復(fù)制先前的語句來修改,保留了先前的iff(IsNull(),)包裹語句,這導(dǎo)致對Recordset查詢結(jié)果的字段進行賦值以備更新時總是提示:
“運行時錯誤'-2147217887(80040e21)':多步操作產(chǎn)生錯誤。請檢查每一步的狀態(tài)值?!?/p>
頭一天晚上在百度上查了一晚上也沒有解決問題,排出字符串長度超過數(shù)據(jù)表預(yù)設(shè)限制,排出數(shù)據(jù)類型不符,也不是無主鍵的問題,??第二天晚上再來:
這次,我改變了Recordset對象的打開方式,直接用Rse.Open SQL, cnn, adOpenStatic, adLockPessimistic打開要更新的結(jié)果集,提示依然在,但是有了改變:
“運行時錯誤'-2147217887(80040e21)':無法更新字段?!?/p>
錯誤代碼還是一樣的,就是釋義變了,如圖:
免不了又上百度搜索一番,但是也是無果而終,到底是什么原因呢?昨晚我曾把包裹“所學(xué)專業(yè)”字段的iff(IsNull(),)函數(shù)刪除,但當(dāng)時并未解決問題,今天,抱著試一試的想法,我把所有的iff(IsNull(),)包裹函數(shù)全部去除,??,結(jié)果,通過??!