Access操作必须使用一个可更新的查询
- 2020-02-03 08:00:00
- 网络摘录 转贴
- 8866
错误描述:
在执行更新查询时候报错:操作必须使用一个可更新的查询
错误原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为 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):
此方法最简单、偶尔有效
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)操作必须使用一个可更新的查询。
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |