office交流网--QQ交流群号

Access培训群:792054000         Excel免费交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

Access操作必须使用一个可更新的查询

2020-02-03 08:00:00
网络摘录
转贴
8515


错误描述:
在执行更新查询时候报错:操作必须使用一个可更新的查询



错误原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为 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) 
操作必须使用一个可更新的查询。




    分享