С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
3 / 3 / 0
Регистрация: 11.01.2011
Сообщений: 140
Записей в блоге: 2
1

сжимать при закрытии

26.09.2012, 07:00. Показов 2550. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
работаю с файлами через диспетчер связанных таблиц
те таблицы соответственно растут
но если в них поставить галочку на "сжимать при закрытии" в самом файле, то они сожмутся.

а как сделать то же самое не входя в связанную таблицу, а через основной рабочий файл
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2012, 07:00
Ответы с готовыми решениями:

Как выполнить код в закрытии формы при ее принудительном закрытии?
Привет всем) Суть вопроса такова: есть форма, и при её закрытии нужно выполнить код. Если закрывать...

Сохранить данные StringGrid при закрытии и восстановить их при запуске программы
Здравствуйте, уважаемые программисты! Пытаюсь сделать так, чтобы введенные данные в StringGrid...

Запускать другое приложение при старте своего и завершать при закрытии
Уважаемые форумчане подскажите пожалулуста. Пишу программу на Pure Basic и уже готовый файл уже...

Как избавиться от предложения сохранить книгу при ее закрытии не сохраняя ее при этом
При работе моя Excel'ская книга использует в References другую книгу , находящующся на сервере и...

2
Эксперт MS Access
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
3 / 3 / 0
Регистрация: 11.01.2011
Сообщений: 140
Записей в блоге: 2
26.09.2012, 10:40  [ТС] 3
Огромное спасибо
Помогло
0
26.09.2012, 10:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2012, 10:40
Помогаю со студенческими работами здесь

При выполнении разных операций с MS VS2013, например, при закрытии, иногда появляется ошибка
В кодерстве совсем-совсем новичёк, поэтому извиняйте за нубость вопроса. Пытаюсь разобраться в...

Нужно запустить функцию при закрытии окна, а также при изменении адреса страницы
Нужно запустить функцию при закрытии окна, а также при изменении адреса страницы(но не при...

Ошибка при закрытии OpenDialog без выбора файла и при нажатии кнопки Отмена
почему при закрытии OpenDialog (если не че не открыл), или при нажатии кнопку отмена вылазеет...

Как не сжимать содержимое?
Почему то со вчерашнего дня все папки и файлы на раб.столе стали с синими стрелками, сжатые. Новые...

Чем сжимать изображения
Верстальщики чем сжимаете изображения? Что бы PageSpeed от гугла пройти? У панды не получается всё...

автоматически сжимать файлы
Вопрос такой есть каталог который пополняется файлами. как реализовать процесс сжатия этих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru