| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1905 人关注过本帖
标题:怎么撤销Recall all?
只看楼主 加入收藏
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:6 
怎么撤销Recall all?
用Recall all将所有之前标记号的都给找回来了。有没有办法撤销Recall all这个动作,还原到之前的样子啊?
搜索更多相关主题的帖子: 撤销 
2011-12-01 01:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
在recall all之前启动事务处理,反悔时回滚。

授人以渔,不授人以鱼。
2011-12-01 01:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
事务处理,好像是VFP8以后新增的,VFP6没有这个功能。如果你真想要反悔,只能自己写一个recall函数替代原有的recall命令,才有办法反悔。

授人以渔,不授人以鱼。
2011-12-01 01:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
代码就不给你写了,给思路吧:原理其实很简单,delete操作,只是在数据库记录的开头写一个标志,标识它已被删除,那么其余命令就知道回避,而所谓的recall,不过是把这个标志抹去,就恢复非删除的身份了。那么,我们的操作就是,对数据库循环一次,每遇到deleted()为真的记录,先把这条记录的记录号recno()抄到一个数组(或临时数据表)中,然后recall它,循环完了就是recall all完毕。当要反悔的时候,按照记下来的那些记录号,重新delete它,就可以恢复原状。

但是注意:delete之后,凡是执行过pack操作的,没有后悔的余地,那是彻底真的从物理上消失了。其实,我看到个别人爱用pack,似乎不知道这东西的本质是什么。

授人以渔,不授人以鱼。
2011-12-01 02:26
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 3楼 TonyDeng
哦,我用的VFP5.0, 在命令窗口试了下是不能回滚回去。。
2011-12-01 03:14
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 4楼 TonyDeng
这个可以试着写下,到时候有问题再请教
2011-12-01 03:16
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:10 
RECALL ALL FOR DELETED()
2011-12-01 09:21
快速回复:怎么撤销Recall all?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014975 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved