数据窗口 update()出错,找不到原因,但是有出错提示

jimmyxc 2003-07-17 10:02:28
Row changed between retrieve and update.

No changes made to database.

........

我是retrieve()后在数据窗口中setitem()了的
update()的时候报这个错,请高手指教是什么原因照成的,不是每个时候都出错,我是一个循环大概如下
for i=1 to 100
dw.retrieve(i)
dw.setitem(1,1,"0")
dw.update()
next
有的时候可以update,有的时候就报这个错
...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
linleming 2003-07-17
  • 打赏
  • 举报
回复
同意: joss(季节...夏至)
joss 2003-07-17
  • 打赏
  • 举报
回复
楼主的问题应当考虑不要在循环中使用RETRIEVE函数,
你可一次检索多行记录,并对每行记录循环判断,如果符合条件则setitem
并且在update后进行判断,是否保存成功!错误则提示!
这样可减少出错机会!
另外可考虑直接使用嵌入SQL语句来完成此功能!
LLClown 2003-07-17
  • 打赏
  • 举报
回复
是不是在你提取数据后存盘之前,有人已经修改了该条记录,而你的数据窗口的更新属性中选了修改的列等.

我也遇到过,所以我一般将数据窗口的更新属性设为按主键更新,这样就有唯一性
jimmyxc 2003-07-17
  • 打赏
  • 举报
回复
谢谢关心,方法不是问题,我现在就想知道这个报的错是什么意思,在什么情况下会出现
xiongxiao 2003-07-17
  • 打赏
  • 举报
回复
如需要处理的数据量不是几十上百万的话,可以一次检索出来,在循环中用FILTER,可以减少出错机会,你试试
jimmyxc 2003-07-17
  • 打赏
  • 举报
回复
因为我每次检索的参数是在一个数组的循环中提取的
jimmyxc 2003-07-17
  • 打赏
  • 举报
回复
只是一个大概的意思,只是说明这个数据窗口在循环中有的时候可以update,有的时候就报错,可能就在一个循环中就中间报一次,别的时候就是好的,这个报的错平时没有见过,不知道为什么
xiongxiao 2003-07-17
  • 打赏
  • 举报
回复
不好意思,我居然看不明白这段循环做了些什么,retrieve为什么要放在循环中间呢?

611

社区成员

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

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