asp写入excel错误解决方法参考: ‘80004005‘ 操作必须使用一个可更新的查询

今天给学校编写一个新生注册程序,在录入新生信息时发现执行到rs.update语句时,出现以下错误提示:

 
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'[Microsoft][ODBC Excel 驱动程序] 操作必须使用一个可更新的查询
检查了excel文件属性及其所在目录属性,发现都已经给了iuser以写入权限,应该权限没有问题的。
在baidu上也搜了很多,类似的问题都说是权限问题,后来最终在微软的官网上找到了下面的一段话:
要解决此问题,请使用下列方法:
  • 请确保该记录集对象的LockType属性未设置为只读
  • 请确保您试图打开的文件不会存储为只读。
  • 如果您要连接到一个 DSN,请执行以下步骤:
    1. 打开控制面板,然后单击ODBC 数据源管理器
    2. 双击您的 DSN。
    3. ODBC Microsoft Excel 设置对话框中,单击选项
    4. 请确保未选中只读复选框。
  • 如果您使用的无 dsn 的连接,请确保包含"只读 = 0"选项,在连接字符串中的。例如:
    cn.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\MyDoc.xls;ReadOnly=0;" 
    
    果断在连接字符串后面加上一个readonly=0,果然解决了。
    下面就把我的连接语句完整的贴出来,以供其他朋友碰到这个问题时可以参考(我是采用asp连接excel的方式进行操作的):
    
      dbpath="#test.xls" 
      set rs=server.createobject("ADODB.RECORDSET")
      rsstr="driver={microsoft excel driver (*.xls)};dbq="&server.mappath(dbpath)&";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';ReadOnly=0;"
      rsql="SELECT * FROM [Sheet1$] WHERE t1='" & t1 & "' AND t2='" & t2 & "'"
    rs.open rsql,rsstr,0,1(读取数据时)
    rs.open rsql,rsstr,1,3(写入数据时)
    
    微软官网参考地址:http://support.microsoft.com/kb/316475/zh-cn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值