不是一个表?
打开一个程序的“项目管理器”,发现里面的DBF表有很多在浏览的时候提示“不是一个表”,无论怎么也打不开把里面的数据取出来了,请问有什么解决方法吗? 问题点数:0、回复次数:5Top
1 楼fj_jiangqi(强盗)回复于 2003-08-04 07:07:55 得分 0
如果在vfp中用use打不开,则是表被破坏了,需要修复……
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊Top
2 楼liujianjun_(流星尔)回复于 2003-08-04 08:21:29 得分 0
表被损坏了,需要修复Top
3 楼dywfada(V)回复于 2003-08-18 00:39:44 得分 0
有什么方法可以修复吗?里面的记录还可以找回吗?Top
4 楼mgan(ROOT→〖将来是我〗)回复于 2003-08-18 08:46:36 得分 0
这个就不好说 了
看看 你的 到底坏到什么程度了
Top
5 楼fj_jiangqi(强盗)回复于 2003-08-18 09:29:42 得分 0
修改偏移量为0的1个字节,你要知道原是哪一种表才行。
0x02 FoxBASE
0x03 FoxBASE+/dBASE III PLUS, no memo
0x30 Visual FoxPro
0x43 dBASE IV SQL table files, no memo
0x63 dBASE IV SQL system files, no memo
0x83 FoxBASE+/dBASE III PLUS, with memo
0x8B dBASE IV with memo
0xCB dBASE IV SQL table files, with memo
0xF5 FoxPro 2.x (or earlier) with memo
0xFB FoxBASE
如果还不行的话,修改偏移量4-7的4个字节,这是表的记录数。如果大于实际的记录数表将打不开。要通过计算才行。偏移量10-11的2个字节为记录的宽度,偏移量8-9的2个字节为记录的起始位置。实际记录数=int((文件长度-起始位置)/记录宽度)。根据这里得出的数重新写入记录数(偏移量4-7的4个字节)。这里数的在存储格式为标准c里的整型数。在vfp里要进行转换,字符->数字ctobin(str)+2^31,数字->字符bintoc(int-2^31,字符宽度[1|2|4])。2^31是根据数的宽度确定的。4全为31,2位为15,1位为7。
你可以试试看,如果知道原表版本,一定是可以修恢的。
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊Top



