Сжатие и исправление списка других баз данных - PullRequest
0 голосов
/ 24 мая 2018

Большинство ресурсов, которые я могу найти по этому вопросу, относятся к нескольким годам спустя для более старых версий Access, и мне любопытно, были ли обнаружены лучшие практики / новые методы.

Iу меня есть таблица, содержащая пути к куче файлов .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 голосов
/ 24 мая 2018

Большинство вещей не изменилось.Да, это все еще подходящий способ сделать это.

Просто удалите паразитные DoCmd.SetWarnings False.Этого не должно быть.

Еще одно примечание: Call устарело.Используйте Compact_DB rs("path"), rs("databaseName") вместо этой строки с Call.

Кроме того, While ... WEnd в основном заменяется на Do While ... Loop.Но это просто стиль.

Обратите внимание, что все базы данных должны быть полностью закрыты всеми пользователями.Вы не можете сжать открытые базы данных.

...