压缩和修复其他数据库的列表

Compacting and repairing a list of other databases

我能找到的大部分资源都来自 several years past 旧版本的 Access,我很好奇最佳实践/新方法是否已经曝光。

我有一个 table 包含我希望 compact/repair 的一堆 .mdb 文件的路径。正确的做法是什么?这仍然是正确的方法吗?

Function Compact_DB(path as String, databaseName as String) 
    'for example, path = "C:\MyFiles\dev\" 
    'databaseName = "MyDatabase.mdb"

    'COMPACT CHOSEN DATABASE, TO TEMPORARY DATABASE NAME 
    DBEngine.CompactDatabase path & databaseName, path & "Spare1.mdb" 

    'DELETE OLD DATABASE 
    Kill path & databaseName

    'RENAME TEMPORARY DATABASE TO ORIGINAL NAME 
    Name path & "Spare1.mdb" As path & databaseName 

End Function

然后 运行 循环访问我的所有数据库?

Sub Compact_All()
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset

    DoCmd.SetWarnings False

    rs.Open "select * from compactList", CurrentProject.Connection

    While Not rs.EOF
        call Compact_DB(rs("path"), rs("databaseName"))
        rs.MoveNext
    Wend

    rs.Close
    set rs = Nothing
End Sub

大部分内容没有改变。是的,这仍然是一个合适的方式。

只需删除流浪者 DoCmd.SetWarnings False。那不应该在那里。

进一步说明:Call 已弃用。使用 Compact_DB rs("path"), rs("databaseName") 而不是 Call.

的那一行

此外,While ... WEnd 大部分被替换为 Do While ... Loop。但这只是风格。

请注意,所有用户都需要完全关闭所有数据库。您无法压缩打开的数据库。