当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制 ----问题的解决方法如下:
第一:ACC转成SQL数据库主键变没了,设置主键就行了
第二:是动态游标集是在客户端还是服务器端的问题。
详细资料如下:
· adUseServer:让数据存储管理光标。
· adUseClient:让ADO管理光标。
可以在打开连接或记录集之前设置这个属性:
conPubs.CursorLocation = adUseServer
conPubs.Open strConn
或者:
rsAuthors.CursorLocation = adUseClient
rsAuthors.Open "authors", conPubs
缺省的光标是基于服务器的,理解这两种类型的区别非常重要。对于一个服务器光标来说,数据存储的任务是管理记录,所以,当使用服务器光标建立一个记录集时,数据存储管理着记录的移动、记录的更新等等。
对于一个客户光标,记录集的全部内容复制给客户,受本地客户光标服务管理。这意味着对于一个客户光标,打开一个具有大量记录的记录集要比使用基于服务器的光标打开相同记录集所花费的时间长得多。
这个问题解决得方法就是在rs1.open sql,conn,1,3 前加上
rs.cursorlocation=3 就行了。
---------------------------------------
在 access 中运行正常,把数据库转成sql-server2000 ,出现上述错误,
部分代码如下:
rs.open sql,conn,1,3
rs.update
ADODB.Recordset 错误 '800a0cb3'
解决方法如下:
Table中加:主键设置
原因:主键丢失,id自增量丢失
其它内容:
sql="select * from 表名1 where s_id in (select s_id from 表名2)"
需要用如下语句执行:
set rs=conn.execute(sql)
不要用如下语句执行:
rs.open sql,conn,1,1
以上来自百度空间:http://hi.baidu.com/fu90678/blog/item/109696d56c21a9c151da4bd3.html
rs.CursorLocation=3 是什么意思
3 就是rs.CursorLocation = adUseClient
就是代表使用客户端光标,和他对应的是 rs.CursorLocation = adUseServer 服务端光标
---------------------------
看一下,比我解释的清楚
CursorLocation 属性
设置或返回游标服务的位置。
设置和返回值
设置或返回可设置为以下某个常量的长整型值。
常量 说明
adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。
adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有 好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch。
adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。
说明
该属性允许在可用于提供者的各种游标库中进行选择。通常,可以选择使用客户端游标库或位于服务器上的某个游标库。
该属性设置仅对属性已经设置后才建立的连接有影响。更改 CursorLocation 属性不会影响现有的连接。
对于 Connection 或关闭的 Recordset 该属性为读/写,而对打开的 Recordset 该属性为只读。
由 Execute 方法返回的游标继承该设置。Recordset 将自动从与之关联的连接中继承该设置。
远程数据服务用法 当用于客户端 (ADOR) Recordset 或 Connection 对象时,只能将 CursorLocation 属性设置为 adUseClient。
以上来自百度知道:http://zhidao.baidu.com/question/19796482.html

