2007-09-23

利用 ASP 對 Access 資料庫重組

由於 Access 資料庫沒有支援的 SQL 指令可做重組
而且在做刪除資料時,還是不會將空間釋放出來
這種狀況只能從 Server 上做重組釋放的動作
但不是每個人都可以進入 Server 上做這個動作
所以另外的辦法就是從 ASP 網頁上執行

<%
'CompactDB 成功將回傳 true,失敗將回傳 false
'DBUrl 以主目錄開始的資料庫相對位址字串
'passwd 資料庫密碼,如果沒有請輸入空字串
Function CompactDB(DBUrl,passwd)
Set fso = CreateObject("Scripting.FileSystemObject")
Dim strDB
strDB = server.MapPath(DBUrl)
Dim strNewDB
strNewDB = server.MapPath(DBUrl & ".tmp")

Dim login
If(passwd<>"") Then
login = ";Jet OLEDB:Database Password=" & passwd & ";"
Else
login = ""
End If

If fso.FileExists(strDB) Then
'壓縮資料庫
Set Engine = CreateObject("JRO.JetEngine")
strPvd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Engine.CompactDatabase strPvd&strDB&login,strPvd&strNewDB&login
Set Engine = nothing

'刪除舊的資料庫
fso.DeleteFile strDB
fso.MoveFile strNewDB,strDB

'回傳已成功的訊息
CompactDB = true
Else
'回傳失敗訊息
CompactDB = false
End If
Set fso = nothing
End Function
%>

檔案連結

0 回應: