對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2008/3/19 5:38:52
在web的系統中,如果是使用Access當資料庫的話,往往都會面臨一個問題,
就是資料刪除後,資料庫的檔案大小還是一樣大,
它並沒有因為裡面的資料被刪了而減少...
為了不讓我們的Access肆無忌憚的長大,
所以我們必須修復壓縮它一下!
在Access的[工具/資料庫公用程式]中,
有個[修復及壓縮資料庫],
但如果我們的資料庫放在那遙遠的主機上的話,
哪他下載下來"修理"完後再丟上去是有點浪費時間的...
(尤其遇到哪種主機代管商的網路不穩時...)
以下是一個壓縮資料庫的函數,
使用前提:主機須有安裝MDAC 2.1以上,可以使用FileSystemObject
呼叫方式
如果你的資料庫是access 97的話,
就修改一下Engine.CompactDatabase 那段 ,將
改成
就是資料刪除後,資料庫的檔案大小還是一樣大,
它並沒有因為裡面的資料被刪了而減少...
為了不讓我們的Access肆無忌憚的長大,
所以我們必須修復壓縮它一下!
在Access的[工具/資料庫公用程式]中,
有個[修復及壓縮資料庫],
但如果我們的資料庫放在那遙遠的主機上的話,
哪他下載下來"修理"完後再丟上去是有點浪費時間的...
(尤其遇到哪種主機代管商的網路不穩時...)
以下是一個壓縮資料庫的函數,
使用前提:主機須有安裝MDAC 2.1以上,可以使用FileSystemObject
Sub CompactDB(strDBFileName)
Set fso = CreateObject("Scripting.FileSystemObject")
dim strOldDB
strOldDB = server.MapPath(strDBFileName)
dim strNewDB
strNewDB = server.MapPath("New" & strDBFileName)
if fso.FileExists(strOldDB) then
'壓縮資料庫
Set Engine = Server.CreateObject("JRO.JetEngine")
strPvd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Engine.CompactDatabase strPvd & strOldDB , strPvd & strNewDB
set Engine = nothing
'刪除舊的資料庫
fso.DeleteFile strOldDB
' 將壓縮好的資料庫改回來
fso.MoveFile strNewDB, strOldDB
response.write "資料庫壓縮完畢!"
else
response.write "找不到指定的資料庫!"
end if
set FSO = nothing
end sub
呼叫方式
call CompactDB("yourdb.mdb")
如果你的資料庫是access 97的話,
就修改一下Engine.CompactDatabase 那段 ,將
Engine.CompactDatabase strPvd & strOldDB , strPvd & strNewDB
改成
Engine.CompactDatabase strPvd & strOldDB , strPvd & strNewDB & ";Jet OLEDB:Engine Type=4"