/***********************************************
函數名稱: f_compactandrepairaccessdb
功能: 壓縮修復Access MDB資料庫
參數:
as_mdb 資料庫檔案所在的位置EX:f_compactandrepairaccessdb("C:/DataBase.mdb")
回傳:
0 表示動態配置成功
-1 表示動態配置失敗
設計者: Arno
完成日期: 2007.07.27
***********************************************/
n_cst_apisrv ln_cst_api
//檢查資料庫檔案是否存在
IF Not FileExists(as_mdb) THEN RETURN -1
//建立臨時檔
String ls_tmpFIle
ls_tmpFIle = Space(255)
ln_cst_api.GetTempPathA(255,ls_tmpFIle)
ls_tmpFIle+= "temp.mdb"
//宣告DBEngine
Integer result
oleo b j e c t ole_DBEngine
ole_DBEngine = Create oleo b j e c t
result = ole_DBEngine.ConnectToNewObject("JRO.JetEngine")
//OLE物件宣告失敗
IF result <> 0 THEN RETURN result
//透過 DBEngine 壓縮修復資料庫檔案
String sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123;'
String sOldMDB,sNewMDB
sOldMDB = sProvider + 'Data Source= ' + as_mdb
sNewMDB = sProvider + 'Data Source= ' + ls_tmpFIle
ole_DBEngine.CompactDatabase(sOldMDB, sNewMDB)
Destroy ole_DBEngine
//複製壓縮過之臨時檔至原來位置
FIleCopy(ls_tmpFIle,as_mdb,True)
//刪除臨時檔
FileDelete(ls_tmpFIle)
RETURN 0