A:如何修復被破壞的VFP表(*.dbf)
----目前在我國,有相當一部分正在運行應用程序是用VFP 編寫的,由于突然斷電、程序非法關閉等原因,經(jīng)常會導致VFP數(shù)據(jù)庫.DBF文件被破壞,如果數(shù)據(jù)庫被破壞了,用VFP打開數(shù)據(jù)庫.DBF時,會出現(xiàn) "notatable/dbf "錯誤提示,導致無法用VFP打開。
----首先介紹一下VFP數(shù)據(jù)庫.DBF的文件結構:
----VFP數(shù)據(jù)庫*.DBF的文件結構由頭記錄和數(shù)據(jù)記錄組成,頭記錄定義該DBF的結構并包含與該庫相關的其它信息。頭記錄由文件位置0字節(jié)開始。
----數(shù)據(jù)庫頭部幾個關鍵字節(jié)含義如下:(注:庫文件中存儲整數(shù)時低位字節(jié)在前)
----字節(jié)偏移說明
----0 庫文件的版本類型
----1-3 最近更新的日期(YYMMDD)
----4-7 庫文件中記錄的個數(shù)
----8-9 第一條記錄的起始位置
----10-11 一條記錄的長度(包括刪除標記)
----其它字節(jié)的具體描述不在此贅述,可以參考有關部門書籍或者程序開頭注釋部分。
----在實際工作中發(fā)現(xiàn),許多情況下數(shù)據(jù)庫錯誤都是由于記錄個數(shù)比實際記錄個數(shù)大1個,以至于數(shù)據(jù)庫無法用打開。
----主要通過以下兩種辦法來對數(shù)據(jù)庫進行修復。
一、用Pctools、NU的Diskedit等工具軟件進行恢復:
----運行Pctools,選中無法打開的數(shù)據(jù)庫,按E文件進入編輯功能,按F1切換顯示模式。
----按F3進行編輯,將開始的第5個字節(jié)值減1,按F5存儲,然后退出Pctools,啟動VFP, 發(fā)現(xiàn)被破壞的數(shù)據(jù)庫可以打開使用了。
----由于許多操作者并不一定熟悉如何使用Pctools,因此我建議大家可以用比較熟悉的Excel程序根據(jù)下面的步驟來進行數(shù)據(jù)庫的恢復。
二、用Excel進行恢復。
----啟動Excel,選擇 "打開 "按鈕,出現(xiàn)打開對話框,在打開文件類型中選擇Dbase/VFP(*.DBF)文件類型,再選中被破壞的數(shù)據(jù)庫打開,這時不要做更改,只選擇 "保存 "按鈕,會出現(xiàn) "另存為 "對話框,仍選擇以原來文件名保存,會提示 "文件已經(jīng)存在,是否替換已有文件? ",選擇 "是 "。
----然后選擇 "文件 "菜單上的 "關閉 ",會出現(xiàn)提示 "數(shù)據(jù)庫文件不是Excel格式,要保留修改嗎?
----要保存為Excel格式,單擊 '是 ',然后在 '保存類型 '下拉列表框選 'Excel工作簿 ';
----要用現(xiàn)有格式保存并替換原來的文件,單擊 '是 ',然后單擊 '保存 ';
----要在關閉文件時維持現(xiàn)有格式并不作保存,單擊 '否 '。 "
----由于我們并沒有對數(shù)據(jù)庫的記錄進行改動,只是為了恢復數(shù)據(jù)庫,所以選擇最后一項 "在關閉文件時維持現(xiàn)有格式并不作保存 ",因此單擊 "否 ",退出Excel。
----啟動VFP,再次打開數(shù)據(jù)庫文件,發(fā)現(xiàn)數(shù)據(jù)庫文件已可以被打開了,但是觀察數(shù)據(jù)庫的結構,會發(fā)現(xiàn)數(shù)據(jù)庫結構中的索引不見了,不過數(shù)據(jù)庫的索引文件還存在。我們只需要給數(shù)據(jù)庫Add索引,并選擇原來的索引文件Open即可。
----添加索引文件后退出數(shù)據(jù)庫結構設置,并對數(shù)據(jù)庫重新索引一下,就可以繼續(xù)使用原 來被破壞的數(shù)據(jù)庫了。
三、如果是VFP6的DBF,那么用VFP8打開試一試。如果是VFP8的DBF,那么用VFP6打開試一試
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。