摘要:通過該方法的應用,可以把數據庫及有關文件壓縮到含有空格的文件夾中,並且解決了由於Windows的並行性處理而引發的一系列問題。關鍵字:Winrar路徑空格
Winrar是目前比較流行的高壓縮率的壓縮軟件,有關它的使用報道文章也比較多,但他們都沒能解決如‘壓縮文件的路徑名含有空格'的等難題。本人在開發《軍械管理系統》課題期間,因為前台是VisualBasic、後台采用的是Access數據庫,要求把數據庫隨時備份到硬盤的‘c:ProgramFiles'文件夾下,這樣用通常的辦法就不能進行恢復。經過分析,已經研究出解決的辦法,下面作一介紹,以便同行借鑒。
1.解決空格的問題
在上面的表單中,如果按所選擇的路徑進行備份操作,將出現找不到文件的錯誤信息。解決方法是必須在未壓縮之前用MkDir在硬盤的根目錄中建立一個臨時的文件夾,把要操作的數據庫用FileCopy函數拷貝到臨時的文件夾中,在這裡進行文件的壓縮工作,之後再拷貝到"c:ProgramFiles"的文件夾中,具體程序如下:
1.1備份操作
tdir="c: emppath"'臨時路徑名
MkDir(tdir)'創建臨時路徑
FileCopyApp.Path&"jxgl.mdb",tdir&"jxgl.mdb"'把文件從默認路徑中拷到所創建的臨時文件夾裡
Rarexe=App.Path&"winrar.exe"
src=tdir&"jxgl.mdb"
des=tdir&"jxgl.rar"
FileString=Rarexe&"a-ep"&des&""&src
Result=Shell(FileString,vbHide)'在臨時的文件夾中完成壓縮的任務
IfErr.Number<>0Then
MsgBox"無法壓縮數據庫:"&Err.Description,vbCritical
ExitSub
FileCopytdir&"jxgl.rar","c:ProgramFilesjxgl.rar"'從臨時文件夾中再拷到所填寫的"c:ProgramFiles"裡
1.2恢復操作
tdir="c: emppath"'臨時路徑名
MkDir(tdir)'創建臨時路徑
FileCopy"c:ProgramFilesjxgl.rar",tdir&"jxgl.rar"'從"c:ProgramFiles"中把要恢復的壓縮文件拷貝到臨時文件夾中
Rarexe=App.Path&"winrar.exe"
des=tdir
src=tdir&"jxgl.rar"
FileString=Rarexe&"x-ep"&src&""&"jxgl.mdb"&""&des
Result=Shell(FileString,vbHide)'在臨時的文件夾中完成解包的任務
IfErr.Number<>0Then
MsgBox"無法解開數據庫:"&Err.Description,vbCritical
ExitSub
FileCopytdir&"jxgl.mdb","c:ProgramFilesmdb.rar"'從臨時文件夾中再拷到所填寫的"c:ProgramFiles"裡
2.解決數據庫恢復出錯的問題
Windows操作系統的一大特點就是進程的並行性,也就是在前一個任務未執行完之前,下一個任務已經開始執行,這有益於提高計算機的執行速度,但也存在著隱患。我們在數據庫恢復時就遇到了此類問題。
例如:Winrarxa:jxgl.rarjxgl.mdbc:jxgl
FileCopy"c:jxgljxgl.mdb","c:ProgramFilesjxgl.mdb"
上面這兩條命令行在PII/766計算機上執行沒有任何問題,但在C/366計算機上執行就出現了找不到"c:jxgljxgl.mdb"的錯誤,經過大家的仔細分析,問題出在"進程的並行性"上。為了保障第二條命令的正常進行,必須使第一條命令執行完,由此我們通過增加預留時間解決了該問題,方法如下:
Winrarxa:jxgl.rarjxgl.mdbc:jxgl
tt=Timer'取得機器的當前時間
DoWhilett>Timer-0.5'延遲0.5秒
Loop
FileCopy"c:jxgljxgl.mdb","c:ProgramFilesjxgl.mdb"
3.結束語
以上兩種問題的解決辦法未曾見到有關的報道,希望本文能對同行在軟件設計時,在數據庫的壓縮過程中有所幫助。
參考文獻:
謝東主編.VisualBasic開發多媒體應用程序.北京:清華大學出版社
作者姓名:李偉春
職稱:高級工程師
工作單位:公安海警高等專科學校計算機教研室
通信地址:浙江省寧波市北侖區公安海警高等專科學校計算機教研室
郵政編碼:315801
作者姓名:金梅
職稱:主治醫師
工作單位:寧波市第六人民醫院內科
通信地址:浙江省寧波市第六人民醫院內科
郵政編碼:315040