××××一个棘手的数据库访问报错,高分求救!!!!××××

lhh 2003-04-02 08:55:58
Set adoTempRS = New Recordset
adoTempRS.Open " select * from CZT09 where XTDWDM='" & strERPDWDM & "' and CZSCDH='" & adoGGRS.Fields("S_gcggtzd_ph").Value & "' and CZPROD='" & adoGGMXRS.Fields("S_gcggtzdmx_zj").Value & "' and SSCJDM='" & adoGGMXRS.Fields("S_gcggtzdmx_cj").Value & "' and CZRWBH='" & adoGGMXRS.Fields("S_gcggtzdmx_orwh").Value & "' and CZSEQ=" & adoGGMXRS.Fields("S_gcggtzdmx_wlxh").Value & "", HZerpcnn, adOpenDynamic, adLockOptimistic
iCount = 0
While Not adoTempRS.EOF
iCount = iCount + 1
adoTempRS.Fields("CZRNBR").Value = iCount
adoTempRS.Update
adoTempRS.MoveNext
Wend
在update 后再movenext ,有时会报错::"无法为更新行集定位:一些值可能已在最后读取后改变",但有时又不报,是在那个时候还有其他人也在访问该记录吗?请各位帮忙,歇谢!!!
...全文
4 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihh 2003-07-09
其实就是因为你的程序在修改该数据时,该数据刚刚被别人改过,请改变打开方式或者修改前再次打开以减少错误发生,我以前也经常发现这个问题。
回复
lhh 2003-04-02
To:lihonggen0(李洪根,用.NET,标准答案来了) ,根据你的方法还是报错,位置为adoTempRS.Update,错误报告为:“eof或bof有一个是真,或者当前记录已被删除,所需操作需要一个当前记录”,请各位再好好看看,ok?谢谢!
回复
liufeng_125 2003-04-02
是的,最好能用批更新
回复
vansoft 2003-04-02
UP
回复
lihonggen0 2003-04-02
Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic
回复
MXHCXY 2003-04-02
同意楼上的看法。
回复
lihonggen0 2003-04-02
无法为更新行集定位:一些值可能已在最后读取后改变

有两条相同的记录时会产生此错误,还有就是并发冲突



建议你用数据批更新,最后update
回复
lihonggen0 2003-04-02
iCount = 0
While Not adoTempRS.EOF
iCount = iCount + 1
adoTempRS.Fields("CZRNBR").Value = iCount

adoTempRS.MoveNext
Wend


adoTempRS.Update
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告