Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сжатие БД ! [D7, Win95/98, Win2k, WinXP]


D3viL ©   (2004-08-27 09:07:00) 

Как сжать и восстановить Базу Acess.
 1)При удалении данных размер базы не изменяется даже если в базе 1 запись.
 2)База может весить очень много (2Гб).
 
   В Acess'e есть менюшка:
   "сервис>служебные программы>сжать и восстановить базу"
    при выполнении бд становиться сжатой,
 как сделать такое в моей проге (в Делфи 7)!


Erik1   (2004-08-30 17:48:00) [1]

Лучше использовать MSJet.
{ Microsoft DAO 3.6 Object Library }
{ Version 5.0 }

GUID_DAO36: TGUID = (D1:$100; D2:0; D3:$10; D4:($80,0,0,$AA,0,$6D,$2E,$A4));

_DBEngine = interface(_DAO)
   ['{00000021-0000-0010-8000-00AA006D2EA4}']
procedure CompactDatabase(const SrcName, DstName: WideString;DstLocale, Options, SrcLocale: OleVariant); safecall;
Также может понадобится
procedure RepairDatabase(const Name: WideString); safecall;

Это прямой интерфейс!


46_55_41_44   (2004-08-27 09:29:00) [2]

Да кстати выдрал это из своей проги... работает!!:)


46_55_41_44   (2004-08-27 09:26:00) [3]

var
  je  : Variant;
  Dest,Src : WideString;
  curBase : String;
begin
 if MessageBox(Application.Handle, PChar('Do you really want to Compact database?'), PChar('RRProjects'),MB_YesNo) = mrNo then
   exit;
  AdoConnection.Close;//Close ADO Connection
 curBase := 'Путь к базе\Имя.mdb';

 try
   Screen.Cursor := crHourGlass;
   Src := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + curBase;
   Dest := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + ExtractFilePath(curBase) + '\_pack$.mdb';
  try
    je := CreateOleObject('JRO.JetEngine');
  except
    MessageBox(Application.Handle, PChar('Cannot create JetEngine object!'), PChar('Error'),MB_ICONINFORMATION);
    exit;
  end;
   je.CompactDatabase(src, dest);
   DeleteFile(curBase);
   RenameFile(ExtractFilePath(curBase) + '\_pack$.mdb', curBase);
 finally
   AdoConnection.Close;
   screen.Cursor := crDefault;
 end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо