您当前的位置: 首页 > 数据库教程 > ACCESS教程 > 使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决

使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决

作者:不详 来源:网络 发布时间: 2011-04-13 15:08 点击:
前两天使用oledb连接excel的办法为单位某部门从一个excel的多个sheet中作连选抽出需要的数据,程序非常简单,结果很快就出来,原来手工需要很长时间才能选出的结果现在几乎一点击就有了结果。使用人员非常满意,由于是多人使用,开始只是将结果显示在一个页面上。后来

使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决

  前两天使用oledb连接excel的办法为单位某部门从一个excel的多个sheet中作连选抽出需要的数据,程序非常简单,结果很快就出来,原来手工需要很长时间才能选出的结果现在几乎一点击就有了结果。使用人员非常满意,由于是多人使用,开始只是将结果显示在一个页面上。后来他们要求将结果写入该xls文件的另一个sheet中,我随便写了个语句以为可以立马搞掂,没想到居然出现了“操作必须使用一个可更新的查询”。因为读取结果正常,我开始以为是excel文件所处的文件夹没有写权限所致。增加了相应权限后,结果依然如故。没办法还是检查程序吧,仔细检查了一下,问题发现了,原来开始只是为了读取excel我将连接写成了如下格式:
  
  Private filename As String=Server.MapPath(".")+"test.xls;Extended Properties='Excel8.0;HDR=yes;IMEX=1'"
  
  Dim constr As String="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filename
  
  特别注意
  
  Extended Properties='Excel8.0;HDR=yes;IMEX=1'
  
  A:HDR(HeaDer Row)设置
  
  若指定值为Yes,代表Excel档中的工作表第一行是栏位名称
  
  若指定值為No,代表Excel档中的工作表第一行就是資料了,沒有栏位名称
  
  B:IMEX(IMport EXport mode)设置
  
  IMEX有三种模式,各自引起的读写行为也不同,容後再述:
  
  0is Export mode
  
  1is Import mode
  
  2is Linked mode(full update capabilities)
  
  我这里特别要说明的就是IMEX参数了,因为不同的模式代表著不同的读写行为:
  
  当IMEX=0时为“汇出模式”,这个模式开启的Excel档案只能用来做“写入”用途。
  
  当IMEX=1时为“汇入模式”,这个模式开启的Excel档案只能用来做“读取”用途。
  
  当IMEX=2时为“连結模式”,这个模式开启的Excel档案可同时支援“读取”与“写入”用途。
  
  看完这些大家就不用再说我的写如为什么有问题了吧。我将连接改为如下:
  
  Private filename As String=Server.MapPath(".")+"test.xls;Extended Properties='Excel8.0;HDR=yes;IMEX=2'"
  
  Dim constr As String="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filename
  
  运行一切ok。

分享到:
本文"使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4