|
A:如何修復被破壞的VFP表(*.dbf) ----目前在我國,有相當一部分正在運行應用程序是用VFP 編寫的,由于突然斷電、程序非法關(guān)閉等原因,經(jīng)常會導致VFP數(shù)據(jù)庫.DBF文件被破壞,如果數(shù)據(jù)庫被破壞了,用VFP打開數(shù)據(jù)庫.DBF時,會出現(xiàn) "notatable/dbf "錯誤提示,導致無法用VFP打開。 ----首先介紹一下VFP數(shù)據(jù)庫.DBF的文件結(jié)構(gòu): ----VFP數(shù)據(jù)庫*.DBF的文件結(jié)構(gòu)由頭記錄和數(shù)據(jù)記錄組成,頭記錄定義該DBF的結(jié)構(gòu)并包含與該庫相關(guān)的其它信息。頭記錄由文件位置0字節(jié)開始。 ----數(shù)據(jù)庫頭部幾個關(guān)鍵字節(jié)含義如下:(注:庫文件中存儲整數(shù)時低位字節(jié)在前) ----字節(jié)偏移說明 ----0 庫文件的版本類型 ----1-3 最近更新的日期(YYMMDD) ----4-7 庫文件中記錄的個數(shù) ----8-9 第一條記錄的起始位置 ----10-11 一條記錄的長度(包括刪除標記) ----其它字節(jié)的具體描述不在此贅述,可以參考有關(guān)部門書籍或者程序開頭注釋部分。 ----在實際工作中發(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)存在,是否替換已有文件? ",選擇 "是 "。 ----然后選擇 "文件 "菜單上的 "關(guān)閉 ",會出現(xiàn)提示 "數(shù)據(jù)庫文件不是Excel格式,要保留修改嗎? ----要保存為Excel格式,單擊 '是 ',然后在 '保存類型 '下拉列表框選 'Excel工作簿 '; ----要用現(xiàn)有格式保存并替換原來的文件,單擊 '是 ',然后單擊 '保存 '; ----要在關(guān)閉文件時維持現(xiàn)有格式并不作保存,單擊 '否 '。 " ----由于我們并沒有對數(shù)據(jù)庫的記錄進行改動,只是為了恢復數(shù)據(jù)庫,所以選擇最后一項 "在關(guān)閉文件時維持現(xiàn)有格式并不作保存 ",因此單擊 "否 ",退出Excel。 ----啟動VFP,再次打開數(shù)據(jù)庫文件,發(fā)現(xiàn)數(shù)據(jù)庫文件已可以被打開了,但是觀察數(shù)據(jù)庫的結(jié)構(gòu),會發(fā)現(xiàn)數(shù)據(jù)庫結(jié)構(gòu)中的索引不見了,不過數(shù)據(jù)庫的索引文件還存在。我們只需要給數(shù)據(jù)庫Add索引,并選擇原來的索引文件Open即可。 ----添加索引文件后退出數(shù)據(jù)庫結(jié)構(gòu)設(shè)置,并對數(shù)據(jù)庫重新索引一下,就可以繼續(xù)使用原 來被破壞的數(shù)據(jù)庫了。 三、如果是VFP6的DBF,那么用VFP8打開試一試。如果是VFP8的DBF,那么用VFP6打開試一試 |
|
|