标题:请给看看这是什么原因造成的,不能更新 数据库或对象为只读
只看楼主
jingjing316
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:293
专家分:541
注 册:2009-8-11
结帖率:92.31%
已结贴  问题点数:20 回复次数:6 
请给看看这是什么原因造成的,不能更新 数据库或对象为只读
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 不能更新。数据库或对象为只读。
/ww/exam/exam/iamno_lx.asp, 第 49 行
iamno_lx.asp的代码如下:
<!--#include file="conn.asp"-->
 <%
  if session("username")="" then
  response.redirect "relogin.asp"
  end if

%><html>
<%
username=request.cookies("username")
kcid=request("kcid")
chapter=request("chapter")

sql1="SELECT  * from tbistest where username='"&username&"' and kao=0 and kcid="&kcid&" and chapter="&chapter
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn,3,2

do while  not rs1.eof

 
   rs1("istest")=0
 
 
    rs1.update

rs1.movenext

loop

sqldel1="SELECT  uans,userdata.isread,userdata.tmid  from tbtk,userdata  where username='"&username&"' and tbtk.tmid=userdata.tmid and kao=0 and tbtk.kcid="&kcid&" and chapter="&chapter&" order by userdata.tmid "
set rsdel1=server.createobject("adodb.recordset")
rsdel1.open sqldel1,conn,3,2

do while  not rsdel1.eof
   
    if rsdel1("isread")=1 then
        sqldel2="SELECT  *  from userdataread  where username='"&username&"' and  tmid="&rsdel1("tmid")&" and paperno=0 order by  readid "
        set rsdel2=server.createobject("adodb.recordset")
        rsdel2.open sqldel2,conn,3,2
        
        do while  not rsdel2.eof
             rsdel2("ruans")=""
             rsdel2.update
             rsdel2.movenext
        loop
        
    end if
 
    rsdel1("uans")=""
    rsdel1.update   行49

rsdel1.movenext

loop


    response.redirect "selecttype.asp?kcid="&kcid&"&chapter="&chapter

%>
搜索更多相关主题的帖子: 数据库 对象 
2010-10-09 10:50
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:15 
rsdel1.open sqldel1,conn,3,2
先把这里的参数改为
rsdel1.open sqldel1,conn,1,3
试试看,如果还是只读就要查看数据库权限设置了
2010-10-09 13:04
jingjing316
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:293
专家分:541
注 册:2009-8-11
得分:0 
改成rsdel1.open sqldel1,conn,1,3
还是出同样的提示
看了一下,数据库所在文件夹属性为“只读”,无法改变,文件系统时FAT32的,使用的是access数据库
2010-10-09 14:59
kangli_kl
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:134
专家分:489
注 册:2008-4-5
得分:5 
你把数据库文件放在ntfs文件系统下,更改一下iuser的存取权限,改为可以修改,容纳后就是楼上说的数据库游标类型改为 conn,1,3
你试下吧,没问题的

求上而得中,求中而得下。
2010-10-09 15:37
jingjing316
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:293
专家分:541
注 册:2009-8-11
得分:0 
我从网上看到rs.update不支持多表连接的更新,只适用于一个表,应该使用conn.excute,不过还未试验
如果把
rsdel1("uans")=""
    rsdel1.update  
换成下面这个

    conn.execute " update userdata set ans=""  where  where username='"&username&"' and tbtk.tmid=userdata.tmid and kao=0 and tbtk.kcid="&kcid&" and chapter="&chapter&" order by userdata.tmid "
提示字符串的语法错误 在查询表达式
请再帮忙看一下是哪个地方错误


[ 本帖最后由 jingjing316 于 2010-10-9 17:04 编辑 ]
2010-10-09 16:54
mony1000
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-15
得分:0 
可能是权限问题你右击您的文件属性,然后选择安全,然后在里面添加个everyone,下面属性为全控制
2010-10-15 12:45
asp2008
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2010-4-3
得分:0 
以下是引用jingjing316在2010-10-9 16:54:47的发言:

我从网上看到rs.update不支持多表连接的更新,只适用于一个表,应该使用conn.excute,不过还未试验
如果把
rsdel1("uans")=""
    rsdel1.update  
换成下面这个

    conn.execute " update userdata set ans=""  where  where username='"&username&"' and tbtk.tmid=userdata.tmid and kao=0 and tbtk.kcid="&kcid&" and chapter="&chapter&" order by userdata.tmid "
提示字符串的语法错误 在查询表达式
请再帮忙看一下是哪个地方错误
改成
conn.execute " update userdata set ans=""  where  where username='"&username&"' and tbtk.tmid=userdata.tmid and kao=0 and tbtk.kcid='"&kcid&"' and chapter='"&chapter&"' order by userdata.tmid "
试一下
2010-10-19 13:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322331-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.121928 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved