注册 登录
编程论坛 VFP论坛

求助:数据表头损坏,怎么修复

XUFN 发布于 2021-08-03 12:53, 3384 次点击
帖子列表太多,不知道之前有没有人问过类似问题,由于电脑干活时间死了,正在作业的应用程序强行退出,结果后面再运行时,有张表打不开了,能有办法恢复吗?好像有个SET命令是可以的,但我忘记了,先谢谢大侠了
只有本站会员才能查看附件,请 登录
6 回复
#2
sdta2021-08-03 13:25
可能是 SET TABLEVALIDATE TO 命令
或者复制与表同名的*.BAK文件试试
#3
厨师王德榜2021-08-03 13:26
看看是不是这些记录?
只有本站会员才能查看附件,请 登录
#4
XUFN2021-08-03 13:35
楼上的太厉害啦,谢谢谢谢!

输入

SET TABLEVALIDATE TO 0

然后就可以打开了
#5
XUFN2021-08-03 13:36
也谢谢~厨师王德榜~
#6
kimhoo2021-08-15 21:09
因突然断电或不明原因自动重启后,打开某.dbf文件时,如
USE h:\gsdbf\stock20190429.dbf EXCLUSIVE
提示∶'h∶\qsdbf\stock20190429.dbf'已损坏,该表在再次使用前必须经过修复

用的是Foxpro 9.0 SP2可在命令窗口键入∶

CLOSE ALL
SET TABLEVALIDATE TO 0 &&不进行验证
USE h\qsdbf\stock20190429.dbf
COPY TO h\qsdbf\stock20200215.dbf &&可见自动复制的进度显示
SET TABLEVALIDATE TO
#7
吹水佬2021-08-16 11:01
也可以试试修改实际记录数,找回丢失数据记录。
程序代码:
cDBF = FILETOSTR("data_CL.dbf")
nRecHead  = CTOBIN(SUBSTR(cDBF,9,2),"RS2")+1
nRecSize  = CTOBIN(SUBSTR(cDBF,11,2),"RS2")
nRecCount = INT((LEN(SUBSTR(cDBF,nRecHead))-1)/nRecSize)
cDBF = STUFF(cDBF,5,4,BINTOC(nRecCount,"RS4"))
STRTOFILE(cDBF,"data_CL修复.dbf")
1