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

请给看看这是什么原因造成的,不能更新 数据库或对象为只读

jingjing316 发布于 2010-10-09 10:50, 900 次点击
错误类型:
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

%>
6 回复
#2
yms1232010-10-09 13:04
rsdel1.open sqldel1,conn,3,2
先把这里的参数改为
rsdel1.open sqldel1,conn,1,3
试试看,如果还是只读就要查看数据库权限设置了
#3
jingjing3162010-10-09 14:59
改成rsdel1.open sqldel1,conn,1,3
还是出同样的提示
看了一下,数据库所在文件夹属性为“只读”,无法改变,文件系统时FAT32的,使用的是access数据库
#4
kangli_kl2010-10-09 15:37
你把数据库文件放在ntfs文件系统下,更改一下iuser的存取权限,改为可以修改,容纳后就是楼上说的数据库游标类型改为 conn,1,3
你试下吧,没问题的
#5
jingjing3162010-10-09 16:54
我从网上看到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 编辑 ]
#6
mony10002010-10-15 12:45
可能是权限问题你右击您的文件属性,然后选择安全,然后在里面添加个everyone,下面属性为全控制
#7
asp20082010-10-19 13:26
以下是引用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 "
试一下
1