什么乐观并发失败啊,请指教!

heroes33 2005-09-30 07:20:29
错误:
“乐观并发检查失败,已在此游标外修改了该行”

我是用记录集的:
Call rs.Open(str, con, adOpenKeyset, adLockOptimistic, adCmdText)

请问大概是哪个部分问题?
...全文
276 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
province_ 2005-10-03
  • 打赏
  • 举报
回复
用ADOPENSTATIC游标类型吧,不要用键值游标adOpenKeyset。
igxk 2005-10-03
  • 打赏
  • 举报
回复
我也来看看!
faysky2 2005-10-02
  • 打赏
  • 举报
回复
if rs.bofthen
rs.moveFirst
end if
if rs.eof then
rs.moveLast
end if
king_ 2005-09-30
  • 打赏
  • 举报
回复
我觉得可以先判断
if Recordset.eof= true and Recordset.bof=true then
Recordset.movefirst
end if
heroes33 2005-09-30
  • 打赏
  • 举报
回复
啊,是当记录集MoveFirst时报的错。。。
不知用什么方法解决
heroes33 2005-09-30
  • 打赏
  • 举报
回复
啊,好详细的解析。。
现在大概情况是这样的:
在主界面有个滚动条,滚动将显示不同的数据,有个更新按钮,点后弹出更新窗体,当我
成功更新数据后回到主界面,由于想把更新后的内容同步显示回主界面,作了如下一行代码:
frmMain.lblName.Caption=frmUpdate.lblName.Caption
更新都成功,而且frmMain.lblName.Caption也同步了新内容,但一滚动时就报错了。
现在错误提示:
Row cannot be located for Updating.Some value may have been changed since it was
last read.

但我不加上面那行代码就没事的,但数据不能即时同步显示到主界面,要滚动一下,再滚动回来
才显示到更新后的内容
northwolves 2005-09-30
  • 打赏
  • 举报
回复
估计是与ADO 的 LOCKTYPE 有关,修改参数试试.




LockType 属性


指示编辑过程中对记录使用的锁定类型。

设置和返回值

设置或返回以下某个 LockTypeEnum 的值。

常量 说明
adLockReadOnly 默认值,只读。无法更改数据。
adLockPessimistic 保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。
adLockOptimistic 开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用 Update 方法时锁定记录。
adLockBatchOptimistic 开放式批更新。用于与立即更新模式相反的批更新模式。


说明

打开 Recordset 前设置 LockType 属性可指定打开时提供者应该使用的锁定类型。读取该属性可返回在打开的 Recordset 对象上正在使用的锁定类型。Recordset 关闭时 LockType 属性为读/写,打开时该属性为只读。

提供者可能不支持所有的锁定类型。如果某提供者不支持所需的 LockType 设置,则将替换为其他类型的锁定。要确定 Recordset 对象可用的实际锁定功能,请通过 adUpdate 和 adUpdateBatch 使用 Supports 方法。

如果 CursorLocation 属性被设置为 adUseClient,将不支持 adLockPessimistic 设置。设置不支持的值不会产生错误,因为此时将使用支持的最接近的 LockType 的值。

远程数据服务用法 当在客户端 (ADOR) 的 Recordset 对象上使用时,LockType 属性只能设置为 adLockOptimisticBatch。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧