討論出錯——設置必須是可更新的查詢
發(fā)表時間:2024-01-08 來源:明輝站整理相關軟件相關文章人氣:
[摘要]這里是微軟官方站點對此的解釋,通常來說,這個是一個權限問題。 http://support.microsoft.com/support/kb/articles/Q175/1/68.ASP 特征: 下面是使用ADO和ASP遇到這個情況的一種錯誤代碼。 Microsoft OLE DB Provide...
這里是微軟官方站點對此的解釋,通常來說,這個是一個權限問題。
http://support.microsoft.com/support/kb/articles/Q175/1/68.ASP
特征:
下面是使用ADO和ASP遇到這個情況的一種錯誤代碼。
Microsoft OLE DB Provider for ODBC Drivers error ' 80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] 操作必須是一個可更新的查詢
原因:
本篇文章描述了三個該錯誤發(fā)生的主要原因以及錯誤產生區(qū)域。盡管這兒引用的是ACCESS數(shù)據庫,但是對其他類型的數(shù)據庫也同樣適用。
解決辦法
這個錯誤通常是在你對數(shù)據庫內容做更新或者在試圖改變數(shù)據庫內容的時候產生的,這個錯誤的發(fā)生是因為您的ADO操作由于以下的某個原因而導致寫入失敗:
1、最普遍的原因是您的INTERNET來賓帳號(Iuser_machine)沒有寫入數(shù)據庫(ACCESS)的權限,您可以在瀏覽器安全設置里給該帳號設置正確的權限。注意:當使用ACCESS和ADO的時候,也必須給該帳號以寫目錄的權限,也就是存放該MDB文件的地方,這個是因為數(shù)據庫引擎會建立一個.LDB文件來出路數(shù)據庫的鎖定操作。你同時也應該給INTERNET臨時文件夾設置讀寫權限,因為數(shù)據庫引擎有可能會在該目錄里面建立相關臨時文件。
2、第二個原因是數(shù)據庫的打開方式不對,比如打開方式是不可寫的,也會導致該錯誤,當您使用CONNECTION對象的時候,您可以使用如下代碼:
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
注意,默認的模式是0,一般說來,該模式是允許更新操作的
3、另外一個原因是你有可能在ODBC管理器里把相應的DNS設置里讓READ ONLY選項給選中了
4、最后一個原因(FOR SQL),您的操作可能違反了數(shù)據庫參照完整性,下面是一些普遍的導致該錯誤的操作:
比如您在試圖改變一些不能改變的部件:比如交叉表、SQL PASS-THROUGH,連接,或者UPDATE操作一些已經設置為唯一的選項,比如一個自動編號的ID等等。
還有一個普遍的原因是你的JOIN操作包含了沒有唯一索引的關聯(lián)表,在這種情況下,SQL無法保證您要試圖更新的表里的數(shù)據是唯一的。
任何一種原因都可能發(fā)生在很多情況下面,當您試圖去更新一和一對多的聯(lián)合,也會發(fā)生這個錯誤,除非允許層疊更新,請注意實施數(shù)據參照完整性
希望能對你有所幫助。