Access操作必須使用一個可更新的查詢

2021-02-24 Office交流網

錯誤描述:
在執行更新查詢時候報錯:操作必須使用一個可更新的查詢 

錯誤原因: 
有幾個主要的錯誤原因: 
這個錯誤發生在當你的程序試圖執行更新資料庫或其它類似操作時。這是因為 ADO由於以下的幾個原因而不能夠寫資料庫造成的。 
1. 最普遍的原因是匿名用戶帳號(IUSR_MACHINE)對該資料庫文件沒有寫權限。 
要解決這個問題,在管理器中調整資料庫文件的屬性,讓匿名用戶有正確的權限。 
當使用ACCESS資料庫時,不僅要給文件寫的權限,還要給該目錄寫 的權限,因為 
Jet需要在該目錄建立一個.ldb文件。 


2. 第二個原因是資料庫沒有使用正確的模式打開。應該使用下面的方法打開。 

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

注意默認的Mode是設置0(adModeUnknown),它是允許更新的。 

3. 還有可能是在ODBC管理器中將該DSN的只讀選項選中。


4. 你是在同時更新兩個表中的欄位,也會出現這個錯誤信息,解決辦法是分開來更新 
這兩個表中各自欄位。 


5.當你使用了一個從低版本中(如ACCESS2.0,ACCESS7.0)載入到高版本(ACCESS 2000) 
中的查詢時,在執行這個查詢會出現該錯誤。

如果是winXP系統
在文件夾選項裡面默認使用簡單共享(推薦),把這個選項去掉,
再在文件夾上右鍵點擊,就會出現安全這個選項卡,
原來默認的沒有,然後在安全選項卡裡面可以設置用戶的寫入權限了
右擊資料庫>安全>everyone>將需要的勾上

其它相關解決方案

錯誤描述:
在執行更新查詢時候報錯:操作必須使用一個可更新的查詢 具體的語句如下:

CurrentDB.Execute "Update 表1 inner join 查詢1 on 表1.關鍵欄位=查詢1.關鍵欄位SET 表1.名稱= 查詢1.名稱"


錯誤原因:
以上述的錯誤語句為例:更新查詢要求 表1 和 查詢1 必須都是 可更新(可以修改其中的數據) 的才可以執行

解決方法:
錯誤原因找到,解決方法無非是將 查詢1 更改為一個 可更新(可以修改其中的數據)  的對象即可,這裡我使用了以下的解決方法:
將 查詢1 生成一個新表 表2:

CurrentDB.Execute "Select 查詢1.* INTO 表2 FROM 查詢1"

然後查詢語句更改為:

CurrentDB.Execute "Update 表1 inner join 表2 on 表1.關鍵欄位=表2.關鍵欄位 SET 表1.名稱= 表2.名稱"

然後刪除掉表2即可:

CurrentDB.Execute "drop table 表2"

另外的解決方案

Access操作必須使用一個可更新的查詢

Microsoft JET Database Engine (0x80004005) 操作必須使用一個可更新的查詢。 

解決辦法有以下幾種(針對不同的伺服器可能解決辦法不一樣,在這裡假設網站主目錄為wwwroot):

A、在wwwroot文件夾上面點擊右鍵-「屬性」-取消「只讀」 
此方法最簡單、偶爾有效 
B、在您的資料庫文件上文件夾上面點擊右鍵-「屬性」-「安全」-添加用戶:「IUSR_計算機名」 並開放「IUSR_計算機名」的讀取、寫入權限 

Access提示「操作必須使用一個可更新的查詢」的解決辦法
問題:
軟體工程師開發了一個asp.net+access網站,本地調試增、刪、改和查都沒有異常。部署到伺服器windows2008 R2的IIS上運行後,查詢沒有異常。
可是在修改操作提交時,產生異常:提示「操作必須使用一個可更新的查詢」。

原因:
這個錯誤發生在當你的程序試圖執行更新資料庫或其它類似操作時,沒有寫入資料庫的操作權限。

解決方法:
將access資料庫設置可寫權限。


錯誤信息:

Microsoft OLE DB Provider for ODBC Drivers error ''80004005''
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an
updateable query.


或者是: 

Microsoft JET Database Engine (0x80004005)

操作必須使用一個可更新的查詢。

相關焦點

  • Access中查詢SQL資料庫中文字符的問題處理
    用access連結sql server中的表,建立選擇查詢時,無法查找中文數據,在這裡採用了傳遞查詢來解決這個問題。
  • Access查詢基礎
    大家好,前面介紹了Access資料庫表部分的內容,後面開始介紹Access資料庫查詢部分的內容。使用查詢,用戶可以查找所需要的信息,並且可以對查找的信息進行一系列操作。本節就是介紹下查詢部分的基礎知識框架,先了解即可,後續會詳細講解。
  • Access資料庫的用途和優缺點
    比爾蓋茨看過Ruby的原型後決定把這個基於Basic語言的組件作為一個獨立的可擴展應用程式與Access聯合開發。這個項目稱作Thunder。這兩個項目互相獨立的被作為底層的窗口引擎開發並且互不兼容。然而,在VBA出現後它們被合併在一起。1995年末,access 95發布,這是世界上第一個32位關係型資料庫管理系統,使得access的應用得到了普及和繼續發展。
  • 在Access中使用sql查詢
    Microsoft Office Access是微軟把資料庫引擎的圖形用戶界面和軟體開發工具結合在一起的一個資料庫管理系統。作者表示,在ACCESS中使用SQL查詢語句檢查SQL語法時非常有用,以下為大家列出操作步驟。  操作步驟如下:  【創建】->【查詢設計】
  • mongodb基礎操作之update更新操作
    可以使用與find()方法中相同的查詢選擇器。   update:要應用的修改。有關詳細信息,請參見更新參數。   upsert:可選的。如果設置為真,則在沒有文檔匹配查詢條件時創建一個新文檔。默認值為false,當沒有找到匹配項時,不插入新文檔。   multi:可選的。如果設置為true,則更新滿足查詢條件的多個文檔。
  • (精品)VB資料庫操作典型舉例(VB+ACCESS)
    本節課程,讓我們通過一個典型的例子,來詮釋VB操作資料庫的全部過程,熟悉如何使用VB+ACCESS實現完整的資料庫操作,即如何實現VB對ACCESS資料庫的增
  • select查詢操作與聯合查詢
    上一節本節是對於SQL語句select詳細演示操作,本節是對於select練習演示操作。統計中國,每個省的總人口,找出總人口大於500萬的,並按總人口從大到小排序,顯示前三名和後三名注意,如果這裡使用了子查詢,因為兩個查詢結果都使用了order by 子句,為排除報錯使用子查詢select *from (select district,sum(population)from citywhere countrycode='CHN'group by
  • MySQL 入門(1):查詢和更新的內部實現
    也就是說,查詢語句必須得和之前完全一致,每一個字節都一樣,大小寫敏感,甚至不能多一個空格。  但是,這裡的緩存是非常容易失效的。為了保證查詢的冪等性,當某一張表有數據更新後,這個表的緩存也將失效。  所以,對於更新壓力大的資料庫來說,查詢緩存的命中率會非常低。建議只在讀多寫少的資料庫開啟緩存。
  • Access的基本操作
    您可能會看到目的不明的功能或尚不知道如何使用的功能。查看Access為您提供的資料庫入門方法,它是需要工作的現有資料庫,還是已經計劃好並可以使用的新資料庫。打開一個現有的資料庫吧,這比較容易。如果資料庫已經存在,則可以通過單擊「文件」選項卡(在工作區的左上方)並從顯示的命令列表中選擇「打開」來打開它。
  • 使用PowerShell安裝Windows10更新,只需一條命令
    儘管更新會在Windows10上自動發生,甚至可以通過「Windows更新」手動下載,但是如果你必須管理多個系統,你正在嘗試修補新的安裝,或者想要創建自定義腳本來自動化安裝過程,你還可以使用命令行在PowerShell上使用PSWindowsUpdate查詢和安裝缺少的修補程序。
  • 【Access基礎】Access中使用SQL語句應掌握的幾點技巧
  • 如何創建ACCESS資料庫表格?
    access是微軟的關係資料庫管理系統,界面簡潔易操作,是最好上手的資料庫,易學易操作,是最適合非計算機專業人員學習的資料庫。access擁有強大的數據處理和統計分析能力,處理速度快,操作方便。用access開發的各類企業軟體,大幅了提高企業管理人員的工作效率。
  • 2016年計算機二級Access基礎知識總結
    :追加查詢  2、將成績在90分以上的記錄找出後放到一個新表中,比較合適的查詢為:生成表查詢  3、在查詢的設計視圖中,可以添加資料庫表,也可以添加查詢  4、在一個表中存有學生姓名,性別,班級,成績等數據,若想統計各個班哥哥分數段的人數,最好的查詢方式為:交叉表查詢  5、創建一個交叉表查詢,在「交叉表「行上,有且只有一個的是的是列標題和值
  • 如何使用智能SQL查詢提升應用程式性能?
    如果一個請求很慢,它不太可能影響其他請求,是這樣嗎?資料庫是由應用程式中運行的所有進程使用的共享資源。即便只有一處設計不當的訪問也可能拖累整個系統的性能。本文討論了一些巧妙的SQL查詢方法,已完全改變了我們系統的一些部分,從而提升了應用程式性能,最終改善客戶體驗。
  • LINQ:進階 - LINQ 標準查詢操作概述
    返回序列的方法會延遲查詢執行,並返回一個可枚舉的對象。       對於在內存中集合上運行的方法(即擴展 IEnumerable<T> 的方法),返回的可枚舉對象將捕獲傳遞到方法的參數。在枚舉該對象時,將使用查詢運算符的邏輯,並返回查詢結果。
  • 通俗理解access與approach:兩者都可表達「接近」,有什麼區別?
    access 表示「通道」(可以是具體的通道),走過通過是為了「獲取」,有通道才有「(使用或見到的)機會」,給予的通道就是「權利」。常見應用舉例:一,關於「通道」:The only access to my house is along that narrow road.
  • 一文了解各大圖資料庫查詢語言 | 操作入門篇
    文章的開頭我們先來看下什麼是圖資料庫,根據維基百科的定義:圖資料庫是使用圖結構進行語義查詢的資料庫,它使用節點、邊和屬性來表示和存儲數據。雖然和關係型資料庫存儲的結構不同(關係型資料庫為表結構,圖資料庫為圖結構),但不計各自的性能問題,關係型資料庫可以通過遞歸查詢或者組合其他 SQL 語句(Join)完成圖查詢語言查詢節點關係操作。
  • Raycast年末更新:新增懸浮便籤、瀏覽器書籤查詢
    除了常規的 bug、漏洞修復、體驗優化之外,陸續增加了不少新的特性,如窗口管理、詞典、通訊錄查詢等等。作為 2020 年最後一次更新,Raycast 開發團隊看起來也做了充分的準備才發布的,新增支持瀏覽器書籤查詢以及懸浮便籤功能,簡單上手之後發覺也是非常實用。
  • 利用DAO與ADO,VBA與Access資料庫相連接
    我的講解從簡單入手,逐漸將進入較為複雜的階段,之前的內容主要以了解範疇的知識較多,將逐漸過渡到實際的操作。這講內容仍需要讀者以了解為側重,但相關的知識點還是需要有一個清晰的輪廓。VBA可以訪問的資料庫類型有Microsoft access、dBase、Microsoft SQLServer、Oracle 等,這給VBA的利用範圍得到擴展。
  • 如何創建access資料庫
    如何創建access資料庫?若要創建Access資料庫,需要首先創建一個資料庫表,然後定義要存儲在該表中的所有欄位的名稱。使用Access資料庫表,您可以將文件劃分為單獨的部分。例如,一個資料庫表可以保存您所有客戶的姓名和地址,第二個資料庫表可以保存您所有員工的姓名和地址,而第三個資料庫表可以保存您的供應商的姓名和地址。 Access將所有這些相關信息存儲在硬碟上保存的單個Access文件中。若要設計Access資料庫,可以從頭開始創建資料庫,也可以使用可以修改的現有模板。設計資料庫意味著既要定義用於存儲信息的欄位數,又要定義每個欄位可以容納的最大數據量。