1 | |
сжимать при закрытии26.09.2012, 07:00. Показов 2550. Ответов 2
Метки нет (Все метки)
работаю с файлами через диспетчер связанных таблиц
те таблицы соответственно растут но если в них поставить галочку на "сжимать при закрытии" в самом файле, то они сожмутся. а как сделать то же самое не входя в связанную таблицу, а через основной рабочий файл
0
|
26.09.2012, 07:00 | |
Ответы с готовыми решениями:
2
Как выполнить код в закрытии формы при ее принудительном закрытии? Сохранить данные StringGrid при закрытии и восстановить их при запуске программы Запускать другое приложение при старте своего и завершать при закрытии Как избавиться от предложения сохранить книгу при ее закрытии не сохраняя ее при этом |
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
26.09.2012, 08:23 | 2 |
Для вашей ситуации подойдет метод, описанный в статье из ФАКа Сжатие БД
Кликните здесь для просмотра всего текста
Сжатие через DAO-метод DBEngine.CompactDatabase.
Данный метод сжатия наиболее предпочтителен для MDB/MDE форматов БД расположенных "настольно" (без сети) или для сетевых БД, организованных по технологии "Файл-Сервер". Основным условием является доступность (подключение) Библиотеки DAO. Метод не пригоден для сжатия текущей БД (базы данных, в которой выполняется процедура сжатия), но прекрасно подходит для разделенных БД (см. Пункт 8.3). Для сжатия базы данных, в которой выполняется программный код, инициирующий данное сжатие, можно воспользоваться Вариантом 1 (см пункт 6.1) или, что намного лучше, Отдельным процессом, который и произведет данное сжатие (см. пункт 6.4). Кроме того можно попытаться воспользоваться (на свой страх и риск) вариантом, приведенным в Пункте 7.2 Сжатие производится следующим образом: - если к БД подключаются несколько пользователей, то перед сжатием БД необходимо убедиться, что ни один пользователь не подключен к базе. В противном случае система сгенерирует перехватываемую ошибку и сжатие БД выполнено не будет; - сформировать полный путь к сжимаемой БД и полный путь к новому (временному) файлу, в который сжатая БД будет записана; - сжать БД; - скопировать новый (появившийся в результате сжатия БД) файл на место старого (копирование под именем, которое принадлежало старому файлу); - удалить новый (временный) файл. В качестве примера можно привести два варианта реализации сжатия БД DAO-методом, отличающихся способами манипулирования файлами: 6.2.1. Пример 1 'ФУНКЦИЯ СЖАТИЯ БД DAO-Методом' ' gflngCompactDatabase(...)' 'ВХОДНЫЕ ПАРАМЕТРЫ ФУНКЦИИ:' ' CompactingDBPathAndName - строковый параметр, задающий ПОЛНЫЙ ПУТЬ (путь + имя файла)' ' к сжимаемой БД.' ' BackupBeforeCompactDB - необязательный логический параметр, указывающий на' ' необходимость сделать перед сжатием резервную копию сжимаемой БД (резервная' ' копия выкладывается в файл с именем "ИмяСжимаемогоФайла_Backup"). При' ' отсутствии параметра резервное копирование не производится.' 'ВОЗВРАЩАЕМОЕ ФУНКЦИЕЙ ЗНАЧЕНИЕ:' ' = 0, если сжатие произведено;' ' = Номеру возникшей ошибки, если выполнить сжатие не удалось.' 'ОСОБЕННОСТИ:' ' Для выполнения процедуры сжатия автоматически создается временный файл' ' с именем "ПолныйПуть\ИмяСжимаемогоФайла_Temp".' ' Резервное копирование, выполнение которого определяется параметром "BackupBeforeCompactDB",' ' производится в файл с именем "ПолныйПуть\ИмяСжимаемогоФайла_Backup"), при' ' этом старая копия резерва перезаписывается новой (фактически удаляется).' ' В случае, если сжимаемая БД открыта, то файл БД не будет скопирован (соответствующая' ' ошибка появится в момент копирования БД).' Public Function gflngCompactDatabase( _ CompactingDBPathAndName As String, _ Optional BackupBeforeCompactDB As Boolean = False) As Long Dim strTempFile As String On Error GoTo ErrHandler 'Формируем имя для временного ("принимающего") файла' strTempFile = Left(CompactingDBPathAndName, (Len(CompactingDBPathAndName) - 4)) & _ "_Temp" & Right(CompactingDBPathAndName, 4) 'Создаем (если надо) резервную копию файла БД перед сжатием' If BackupBeforeCompactDB = True _ Then FileCopy CompactingDBPathAndName, _ Left(CompactingDBPathAndName, (Len(CompactingDBPathAndName) - 4)) & _ "_Backup" & Right(CompactingDBPathAndName, 4) 'Сжимаем файл БД (с перезаписью сжатого файла в новый файл)' DBEngine.CompactDatabase CompactingDBPathAndName, strTempFile, dbLangCyrillic 'Перезаписываем сжатый (временный файл) на место несжатого (старого файла)' FileCopy strTempFile, CompactingDBPathAndName 'Удаляем временный файл' Kill strTempFile Exit Function ErrHandler: 'обрабатываем возможные ошибки' gflngCompactDatabase = Err.Number Err.Clear: Exit Function End Function Достоинства: Для манипулирования файлами (получения имени для временного файла и копирование файла) функция использует стандартные команды Access и не требует наличия на компьютере библиотеки "Microsoft Scripting Runtime" (SCRRUN.DLL), которая (как показывает практика) может отсутствовать; Недостатки: Для получения имени временного файла функция добавляет к имени сжимаемого файла суффикс "_Temp" ("ПолныйПуть\ИмяСжимаемойБД_Temp"), поэтому в случае, если имеется рабочая БД с подобным именем, то по окончании процесса сжатия она будет удалена. Данный недостаток удается избежать либо приняв правило "Не присваивать рабочим файлам БД имени, оканчивающегося на '_Temp'", либо изменив функцию (заменить добавление суффикса "_Temp" на путь и имя файла, специально отведенного для сжатия БД)
1
|
26.09.2012, 10:40 [ТС] | 3 |
Огромное спасибо
Помогло
0
|
26.09.2012, 10:40 | |
26.09.2012, 10:40 | |
Помогаю со студенческими работами здесь
3
При выполнении разных операций с MS VS2013, например, при закрытии, иногда появляется ошибка Нужно запустить функцию при закрытии окна, а также при изменении адреса страницы Ошибка при закрытии OpenDialog без выбора файла и при нажатии кнопки Отмена Как не сжимать содержимое? Чем сжимать изображения автоматически сжимать файлы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |