C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
MS Access
Oper01
Отправлено: 25.07.2004, 16:16


Станционный диспетчер

Группа: Участник
Сообщений: 145



Дайте часть кода для сжатии базы Access, я так и не смог это сделать. А нужно очень, т.к. размер файла БД составляет порядка 10 Мб, а в день таких файлов создаётся порядка 40 шт. А в месяц сколько получится ? Страшно представить...
Valdemar
Отправлено: 26.07.2004, 08:20


Мастер участка

Группа: Участник
Сообщений: 433



Я делал так:
CODE
   AnsiString path=ExtractFilePath(Application->ExeName);
   if (!DirectoryExists(path+"backup"))
   {
       CreateDir(path+"backup");
   }
   CopyFile((path+"base.mdb").c_str(),(path+"backup\base.mdb").c_str(),false);
   Variant JetEng;
   JetEng = CreateOleObject("JRO.JetEngine");
   WideString InputDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+"base.mdb;Jet OLEDB:Database Password=12345";
   WideString OutputDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+"base1.mdb;Jet OLEDB:Database Password=12345";
   JetEng.OleFunction("CompactDatabase",InputDB,OutputDB);
   JetEng = Unassigned;
   CopyFile((path+"base1.mdb").c_str(),(path+"base.mdb").c_str(),false);
   DeleteFile(path+"base1.mdb");

Перед сжатием я делал резервную копию.
** Oper01
Отправлено: 26.07.2004, 09:46


Не зарегистрирован







Спасибо, буду пробовать

Вернуться в Работа с базами данных в C++Builder