Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
ADO [17]
ASCII и CSV [12]
Access [20]
Alias [24]
BDE [37]
BLOB поля [19]
Clipper [2]
DB2 [2]
DBASE и DBF [26]
Fox Pro [1]
Interbase [21]
MSSQL [0]
ODBC [10]
Oracle [0]
Paradox [0]
SQL [29]
Sybase [1]
База данных [0]
Закладки [2]
Записи [0]
Индексы [10]
Компоненты и Базы данных [0]
Модуль данных [3]
Отчеты [2]
Ошибки БД [17]
Поиск [16]
Поля [0]
Сортировка и Фильтр [6]
Таблицы [0]

Наш опрос
Есть ли у Вас свой сайт?
Всего ответов: 48

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Базы данных » Access

Программное сжатие базы данных Access используя DAO
**** 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; // версия DAO
begin
  V35 := 'DAO.DBEngine.35';
  V36 := 'DAO.DBEngine.36';
  try // получим ClassID
  try
  ClassID := ProgIDToClassID(v35);
  except
  try
  ClassID := ProgIDToClassID(v36);
  except
  raise; // что то нам неизвестное
  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;
Пример использования: 

...
db.Close;
CompactAccessDatabase('database.mdb', 'password');
db.open;
...
Категория: Access | Добавил: Skinner (03.07.2008) | Автор: Savva E W
Просмотров: 396 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2024 Хостинг от uCoz