注册 登录
编程论坛 ASP技术论坛

错误 '80004005'

robin_fan 发布于 2012-07-15 19:11, 581 次点击
错误:Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC Microsoft Access Driver] 不能更新。数据库或对象为只读。

小弟用一个access数据库,代码如下:
<%
Set cMain = Server.CreateObject("Adodb.Connection")
    cMain.connectionString = "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & Server.MapPath("/MySite/SartEvaluation.mdb")
    cMain.Open
sql="SELECT * FROM test LEFT JOIN [select chShanghai.id from chShanghai where chShanghai.qn = 20122]. AS t ON test.id = t.id WHERE (([test].[id]=[t].[id]) and (((test.v1)=False)));"

set rs2 = server.CreateObject("Adodb.Recordset")
rs2.open sql,cMain,3,3

do while not rs2.eof                                 
    rs2("v1")=true
    rs2.movenext()
loop
rs2.update()
rs2.close           
set rs2=nothing           
cMain.close           
set cMain=nothing
 %>
4 回复
#2
coretear2012-07-15 22:10
别的没看,先看到的这个
rs2.open sql,cMain,3,3

改rs2.open sql,cMain,1,3
#3
coretear2012-07-15 22:17
哦 有个大问题,这个效率更高,sql语句要活用


Set cMain = Server.CreateObject("Adodb.Connection")
    cMain.connectionString = "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & Server.MapPath("/MySite/SartEvaluation.mdb")
    cMain.Open
sql="SELECT id FROM test LEFT JOIN [select chShanghai.id from chShanghai where chShanghai.qn = 20122]. AS t ON test.id = t.id WHERE (([test].[id]=[t].[id]) and (((test.v1)=False)));"
cMain.execute("update test set v1='true' where id in ("&sql&")")

[ 本帖最后由 coretear 于 2012-7-15 23:20 编辑 ]
#4
robin_fan2012-07-16 09:35
回复 3楼 coretear
大侠门,还是不行。肯定不是权限问题,我都加everyone写入了。联合两个表后的数据是不是不能更新啊?
#5
coretear2012-07-16 13:31
你把你的数据结构 发出来才行啊 我上面的写法没问题
1