| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 345 人关注过本帖
标题:关于删除命令的一点心得
只看楼主 加入收藏
总是出错
Rank: 2
等 级:论坛游民
威 望:1
帖 子:191
专家分:20
注 册:2012-12-24
结帖率:70.27%
收藏
已结贴  问题点数:20 回复次数:3 
关于删除命令的一点心得
VFP中,删除分为物理删除和标记删除 。物理删除的命令为PACK和ZAP.PACK命令是在标记删除的基础上进行的,是对部分记录进行物理删除。PACK命令运行后。被删除的记录无法恢复。ZAP 则是把整个表的记录全部物理删除,不需要先进行标记删除。
值得注意的是,这两个命令的运行前提是:表需要独占打开。而且PACK命令是在标记删除(delete)命令的基础上进行的。
而标记删除则是对部分记录打上一个删除标记,生效否需要用SET DELETE对表进行设置。.当设置为ON时,又删除标记的记录就不会显示,也不会被其它命令访问,操作上等同于删除了。删除标记可以取消,取消后表记录等同于正常记录。但是如果用PACK命令的时候,不管SET DELETE 的设置如何,又删除标记的记录均会被物理删除,而且无法恢复。
说真心话,我对独占方式打开表的问题一直没有搞得太清楚。所以对用PACK命令一直时心存畏惧。只有用笨办法,在表单操作的时候,只用DELETE命令。补救办法是在程序打开或者运行后,再用独占方式打开表进行物理删除。再表单中用PACK命令,表格会呈空白状,当然也可以恢复,但是如果此时是在缓冲得条件下,马上就会面临无法找到表的囧况。(表已经被独占了,SELE命令无法把表装入当前工作区)
搜索更多相关主题的帖子: 物理 记录 delete 删除 命令 
2020-08-31 21:38
wengjl
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:1825
专家分:3249
注 册:2007-4-27
收藏
得分:0 
PACK为什么要独占,因为PACK后,表中的记录的物理次序从被彻底删除的第一条记录开始,后面的记录的物理序号均被重新排列了,所以必须要独占。标记删除,表中的记录物理排序是没有任何变化的。

只求每天有一丁点儿的进步就可以了
2020-09-01 08:36
wengjl
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:1825
专家分:3249
注 册:2007-4-27
收藏
得分:20 
如果不是独占,就可以PACK的话,举个例子,一个表中有1000条记录,那系统内部(或表的内部)有一个ID号(这个ID是人们看不见)是1-1000的。当第5、6二条记录被你PACK了,表内的ID号变成了1-998了,1-4号的记录系统的记忆不变,7--1000号的记录系统的记忆变都变了,但系统中需要数据时(别的用户),还是按7--1000来查找的,结果是第999号、1000号的数据找不到会出错,其他数据虽能找到,但也是出错了--张冠李戴了。所以美国佬设计时规定要独占是必须的。
换一角度来理解:就是你家中的物品有序地放着,用时很易找,某一天,你老婆把物品的摆放打乱了一下,没诉你,当你某刻急需时,是无法在短时找到。如果你老婆把重新放置的规则告诉你,你就易找到了。表独占后再打开,等于是告知物品存放位置变过了……

只求每天有一丁点儿的进步就可以了
2020-09-01 09:03
总是出错
Rank: 2
等 级:论坛游民
威 望:1
帖 子:191
专家分:20
注 册:2012-12-24
收藏
得分:0 
回复 3楼 wengjl
谢谢告知
2020-09-02 03:44
快速回复:关于删除命令的一点心得
数据加载中...
 
   



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

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