Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Сжатие БД Access


Автор: altarasjuk 2.6.2003, 10:25
Привет!
Подскажите как из делфи или через внешние библиотеки сжать БД access.

Автор: altarasjuk 3.6.2003, 12:15
Усё народ, разобрался, вот для тех кто не знает кусок кода:
Код

Const
  Provider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
Var
 tmpFile: String;
 jro: Variant;
 Src,Dest : WideString;
begin
 Src:= Provider + 'Data Source=' + fFileName;
 tmpFile:= GetTmpFileName();
 Dest := Provider + 'Data Source=' + tmpFile;
 if fPassword<>'' then begin
    Src := Src + ';Jet OLEDB:Database Password=' + fPassword;      //p1
    Dest := Dest + ';Jet OLEDB:Database Password=' + fPassword; //p2
 end;

 jro:= CreateOleObject('jro.JetEngine');
 try
   jro.CompactDatabase(Src,Dest);
 finally
   jro:= 0;
 end;
 DeleteFile(PChar(fFileName));
 RenameFile(tmpFile, fFileName);

fFileName - Полное имя файла текущей БД
fPassword - Пароль к БД (если его нет, то строки p1 и p2 не нужны)

Автор: altarasjuk 3.6.2003, 12:18
Забыл.... В юзезы надо ComObj, а GetTmpFileName() метод, для генерации уникального имени файла(хотя из названия понятно... smile.gif )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)