{ **** UBPFD *********** by delphibase.endimus.com ****
>> Программное сжатие базы данных Access используя DAO
Процедура позволяет сжать базу данных в формате Access, используя DAO.
Действие аналогичное пункту меню в Access "Сервис -> Служебные программы ->
Сжать и восстановить базу данных".
Параметры:
* DatabaseName - путь к базе данных
* Password - пароль базы данных
Зависимости: windows,SysUtils,Dialogs,DAO2000,ComObj
(Dialogs можно исключить используя MessageBox для вывода
сообщения исключительной ситуации)
Автор: savva, savva@nm.ru, ICQ:126578975, Орел
Copyright: Сапронов Алексей (Savva)
Дата: 31 мая 2002 г.
***************************************************** }//перед вызовом процедуры базу надо закрыть, а после - открытьprocedure TData.CompactAccessDatabase(DatabaseName, Password: string);
var
TempName: array[0..MAX_PATH] of Char; // имя временного файла
TempPath: string; // путь
Name: string;
tmpDAO: _DBEngine;
ClassID: TGUID;
V35, V36: string; // версия DAObegin
V35 := "DAO.DBEngine.35";
V36 := "DAO.DBEngine.36";
try// получим ClassIDtry
ClassID := ProgIDToClassID(v35);
excepttry
ClassID := ProgIDToClassID(v36);
exceptraise; // что то нам неизвестноеend;
end;
// получаем путь для временного файла
TempPath := ExtractFilePath(DatabaseName);
if TempPath = "" then
TempPath := GetCurrentDir;
//получаем имя временного файла
GetTempFileName(PChar(TempPath), "mdb", 0, TempName);
Name := StrPas(TempName);
DeleteFile(PChar(Name)); // этого файла не должно существовать :))if Password <> "" then
Password := ";pwd=" + Password;
tmpDAO := CreateComObject(ClassID) as _DBEngine;
tmpDAO.CompactDatabase(DatabaseName, Name, 0, 0, Password);
DeleteFile(PChar(DatabaseName)); // удаляем не упакованную базу
RenameFile(Name, DatabaseName); // переименовываем упакованную базуexcept// выдаем сообщение об исключительной ситуацииon E: Exception do
ShowMessage(e.message);
end;
еnd;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Программное сжатие базы данных Access используя DAO", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!