★★★recordset.update后出现“无法为更新行集定位,一些值可能已在最后读取时改变”?!★★★

tangss 2003-09-15 02:52:04
我要更新记录时出错,代码如下:
With rec
rec.Fields("col_TransID").Value = txtFields(0).Text
rec.Fields("col_Name").Value = txtFields(1).Text
rec.Fields("col_Address").Value = txtFields(2).Text
rec.Fields("col_SysFunc").Value =txtFields(3).Text
rec.Fields("col_Tel").Value = txtFields(4).Text
.UpdateBatch
End With

系统都提示:“无法为更新行集定位,一些值可能已在最后读取时改变”
然后停在.UpdateBatch上面,而增加新记录时则没问题,代码如下:
With rec
.AddNew
rec.Fields("col_TransID").Value = txtFields(0).Text
rec.Fields("col_Name").Value = txtFields(1).Text
rec.Fields("col_Address").Value = txtFields(2).Text
rec.Fields("col_SysFunc").Value =txtFields(3).Text
rec.Fields("col_Tel").Value = txtFields(4).Text
.Update
End With
请高手看看,到底是哪里出错了,多谢!
...全文
87 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
daisy8675 2004-01-12
  • 打赏
  • 举报
回复
突然想到﹐剛看見一個 貼﹐然后想到剛開始用datagrid和access時候出現一個 問題。

還是出現在主鍵﹐因為偶沒有定義一個table的主鍵﹐最后比如數據表中3條數據一樣的時候﹐更新﹐vb無法判斷我到底是更新那一條﹐最后就會出現這個提示﹐然后再去數據庫看﹐更新是更新了﹐但是3條數據全部更新了。sql中我沒有遇見。
daisy8675 2004-01-12
  • 打赏
  • 举报
回复
這個問題我在使用datagrid中間遇見過﹐是自動編號的問題﹐我的對象是access

如果你沒有用自動編號﹐只能理解為更新了不該去更新的地方。

所以只給建議去檢查一下你數據表的字段。
aslbutton 2004-01-12
  • 打赏
  • 举报
回复
我也遇到相同的问题:只要将rec.CursorLocation=asUseClient改成rec.CursorLocation=asUseServer就行了。至于为什么会出这个错误,我也不清楚;如果哪位高手清楚还望指点一二
tangss 2003-09-18
  • 打赏
  • 举报
回复
这个问题在Access中没问题,在SqlServer2000就会出现。
这个估计是没人能解决了,论坛版主也不会吗?
ZgPt 2003-09-18
  • 打赏
  • 举报
回复
你可能使用了ADO的事务,事务回滚后,在事务中已更新的Recordset在数据库中实际被还原了,但Recordset认为成功了。当再次试图更新这个Recordset时,就会出错。
zyh791211 2003-09-18
  • 打赏
  • 举报
回复
要吗,不要写你那些鬼代码,直接将text控件用adodc绑定,再在 command_click里写:
on error goto updateerr
adodc1.recordset.updatebatch
exit sub
updateerr:
msgbox err.description
zyh791211 2003-09-18
  • 打赏
  • 举报
回复
大兄弟,我看你还是重建个表,重新连接,把字段的类型全改为 vchar,不要主键,包你满意
tangss 2003-09-16
  • 打赏
  • 举报
回复
没有建触发器,应该不是这方面的问题

我要的是更新记录,怎么用Insert呢,Insert不是插入吗
yas 2003-09-16
  • 打赏
  • 举报
回复
建议用Insert 语句
txlicenhe 2003-09-16
  • 打赏
  • 举报
回复
有没有触发器影响?
hickman 2003-09-16
  • 打赏
  • 举报
回复
数据源连接串采用{SQL Server}驱动试试:
"Driver={SQL Server};Password=;Persist Security Info=True;UID=sa;DataBase=DBName;Server=Server"
tangss 2003-09-16
  • 打赏
  • 举报
回复
哪里是点的事情呀,当然有.了,现在是系统报错如何解决
找寻蓝色的海 2003-09-16
  • 打赏
  • 举报
回复
flc(知秋一^片^叶) 提的问题也对,用了with ret 后中间的就加个.就可以了
tangss 2003-09-16
  • 打赏
  • 举报
回复
Update报错啊,楼上的
yas 2003-09-16
  • 打赏
  • 举报
回复
狂晕,那就用Update
tangss 2003-09-15
  • 打赏
  • 举报
回复
可以肯定不是自动编号的问题,我没定义这个字段,我不知SQLServer会不会自己加上这个字段。
tangss 2003-09-15
  • 打赏
  • 举报
回复
我看也是主键的问题,但如何解决呢?我要求也把主键更新。写SQL语句肯定没问题,
但rec.Update为何不行呢
txlicenhe 2003-09-15
  • 打赏
  • 举报
回复
100%是主键的问题
abc10 2003-09-15
  • 打赏
  • 举报
回复
这个多半是自动编号的问题:数据库中有一个是自动编号,当你新增一条记录的时候,数据库自动为你加了一个自动编号,而你的显示控件(如datagrid)并不知道,当它去更新数据库内的数据时,和已经添加的自动编号发生了冲突。这里你再起动一次程序,可以发现最后新加一那一条的自动编号已经出现,但这个编号并不是你加的。

处理方法:你的记录集不要选这个自动编号,也不显示它。但如果你不需要新增数据的时候,可以带上这个自动编号。
lzj34 2003-09-15
  • 打赏
  • 举报
回复
.edit 都没有更新啥
加载更多回复(11)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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