У меня есть приложение Access, разделенное FE / BE, которое импортирует данные и экспортирует отчеты в файл Excel xlsm. Пользователи выполняют различные действия в отчете Excel, которые добавляют записи в БД BE. Все соединения с BE DB открыты и закрыты, а наборы записей закрыты до того, как соединение db закрыто, и для него не установлено ничего. BE защищен паролем, и у меня около 20 активных пользователей каждый день.
Бэкэнд-база данных вздувается во время использования в течение дня и требует сжатия каждую ночь. Я пытаюсь определить, почему бэкэнд растет. В течение дня он увеличится с 10 МБ до более 100 МБ к концу дня.
Раздувание вызвано ссылками Excel, если все действия завершены в Access, БД BE увеличивается только на несколько КБ.
Я нашел много постов здесь и в Google и не могу найти никаких предложений, которые бы поддерживали БД в нормальном размере. Мне известно, что удаление и добавление записей вызывает вздутие живота, но мы добавляем только несколько сотен записей каждый день.
Образец кода Excel: мы используем пять отчетов Excel. Эти отчеты открываются, и макросы вызываются примерно 100 раз в день.
Dim db As DAO.Database, rstJournal As DAO.Recordset
Set db = DAO.OpenDatabase(tmpDir & "DBname.accdb", False, False, "MS Access;PWD=Password")
Set rstJournal = db.OpenRecordset("Select * from tblJournal", Options:=dbAppendOnly)
rstJournal.AddNew
rstJournal!J_Name = ActiveCell.Offset(i, 1).Value
...
RstJournal.Update
If Not rstJournal Is Nothing Then rstJournal.Close
If Not db Is Nothing Then db.Close
Set rstJournal = Nothing
Set db = Nothing