服務(wù)熱線
153 8323 9821
將SQLSERVER轉(zhuǎn)成ACCESS時(shí),提交更新數(shù)據(jù)的操作,經(jīng)常出現(xiàn)"操作必須使用一個(gè)可更新的查詢"的錯(cuò)誤.
原因:
有幾個(gè)主要的錯(cuò)誤原因:
這個(gè)錯(cuò)誤發(fā)生在當(dāng)你的程序試圖執(zhí)行更新數(shù)據(jù)庫或其它類似操作時(shí)。這是因?yàn)?
ADO由于以下的幾個(gè)原因而不能夠?qū)憯?shù)據(jù)庫造成的。
1、最普遍的原因是匿名用戶帳號(hào)(IUSR_MACHINE)對(duì)該數(shù)據(jù)庫文件沒有寫權(quán)限。
要解決這個(gè)問題,在管理器中調(diào)整數(shù)據(jù)庫文件的屬性,讓匿名用戶有正確的權(quán)限。當(dāng)使用ACCESS數(shù)據(jù)庫時(shí),不僅要給文件寫的權(quán)限,還要給該目錄寫 的權(quán)限,因?yàn)镴et需要在該目錄建立一個(gè).ldb文件。
// 2003 系統(tǒng)要加 Authenticated Users 的權(quán)限
2、第二個(gè)原因是數(shù)據(jù)庫沒有使用正確的模式打開。應(yīng)該使用下面的方法打開。
SQL = "UPDATE Products Set UnitPrice = 2;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = 3 '3 = adModeReadWrite
Conn.Open "myDSN"
Conn.Execute(SQL)
Conn.Close
注意默認(rèn)的Mode是設(shè)置0(adModeUnknown),它是允許更新的。
3、還有可能是在ODBC管理器中將該DSN的只讀選項(xiàng)選中。
4、你是在同時(shí)更新兩個(gè)表中的字段,也會(huì)出現(xiàn)這個(gè)錯(cuò)誤信息,解決辦法是分開來更新這兩個(gè)表中各自字段。
5、當(dāng)你使用了一個(gè)從低版本中(如ACCESS2.0,ACCESS7.0)載入到高版本(ACCESS 2000)中的查詢時(shí),在執(zhí)行這個(gè)查詢是會(huì)出現(xiàn)該錯(cuò)誤
// 轉(zhuǎn)載...
出錯(cuò)舉例:
Microsoft JET Database Engine (0x80004005)
操作必須使用一個(gè)可更新的查詢。
/LeadBBS/inc/Board_Popfun.asp, 第 569 行
需要權(quán)限:服務(wù)器管理員,否則聯(lián)系服務(wù)器管理員進(jìn)行
示例操作系統(tǒng):Windows 2000 Server
1.找到你存放網(wǎng)站的文件夾,比如你的網(wǎng)站存放在D:\WEB\News.com
右鍵點(diǎn)擊文件夾,選擇屬性
點(diǎn)擊小圖查看大圖
2.出來新窗口,選擇安全,點(diǎn)擊按鈕添加(D)
點(diǎn)擊小圖查看大圖
3.在出來的窗口中,找到IUSER_開頭的名稱,并雙擊,點(diǎn)擊確定.
點(diǎn)擊小圖查看大圖
4.確定后的結(jié)果是這個(gè)窗口,在安全的名稱列表中多了剛才選擇的用戶
點(diǎn)擊下面的按鈕 高級(jí)(V)...
點(diǎn)擊小圖查看大圖
5.在彈出的新小窗口中,繼續(xù)點(diǎn)擊 查看/編輯(V) 按鈕
點(diǎn)擊小圖查看大圖
6.出來新窗口..
點(diǎn)擊小圖查看大圖
7.重新選擇權(quán)限分配.
點(diǎn)擊小圖查看大圖
8.點(diǎn)擊應(yīng)用完成設(shè)置