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

时间:2018-05-24 13:12:10

标签: vba ms-access access-vba ms-access-2010

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

我有一个表,其中包含一堆我希望压缩/修复的.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

1 个答案:

答案 0 :(得分:2)

大多数事情都没有改变。是的,这仍然是一种适当的方式。

只需移除迷路DoCmd.SetWarnings False即可。那应该不存在。

进一步说明:Call已弃用。使用Compact_DB rs("path"), rs("databaseName")代替Call的那一行。

此外,While ... WEnd大部分都被Do While ... Loop取代。但这只是风格。

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