DBF表损坏是VFP最大缺点之一,这是由VFP打开表的方式决定的。打开的表与关闭的表,其表头结构不同(可能是为了提高效率)。另外,考虑到单机磁盘空间与速度,并没有建立一个完整的临时文件。正常关闭时会将表头改回,增减过记录的表直接断电,几乎都会破坏。
没有研究过这两种表头的关系,如果没有备注字段、并且知道原表的结构可以手工修复。
1、建立一个空表,结构与要修复的相同
2、用二进制编辑器打开损坏的表,删除第一条记录前的内容保存为文本文件
3、用Append命令将其加入到新表中。
这样的操作可以完全恢复到的最后操作状态。
有一个例外,就是执行PACK命令时断电,修复起来比较难(曾经用了一个2W多记录的表,在486上试过)。
以上都是2005年前做的,现在有修复工具可以解决大部分问题。
05年之后,我几乎不用DFB保存关键数据了,后台用过SQL、Oracle、Access都没有丢失过数据。如果有条件最好用Oracle,它的回溯功能最好。