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

 
Сжатие БД Access (Jet OLEDB), перед 427 kb --> после 692 kb
НовичокЧок
Отправлено: 26.05.2005, 12:07


Ученик-кочегар

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



Здравствуйте !!!

Столкнулся со следующей проблемой:
Взял с этого форума код, позволяющий сжать БД Access, с помощью Microsoft.Jet.OLEDB.4.0. Вот он:

CODE

  AnsiString path=GetCurrentDir();
  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 OutputDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+"base1.mdb;";
  OutputDB = OutputDB + "Jet OLEDB:Database Password=yi82";
  WideString InputDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+"base.mdb;";
   InputDB = InputDB + "Jet OLEDB:Database Password=yi82";
  JetEng.OleFunction("CompactDatabase",InputDB,OutputDB);
  JetEng = Unassigned;


попробовал его использовать в программе, работает, только он скорее "расширяет" БД, а не сжимает. Моя БД в несжатом виде имела размер 487 kb, а после, так называемоего "сжатия", размер увеличился до 627 kb. И при ее загрузке Access ругается — "Unrecognized database format".

Хоть этот вопрос уже и затрагивался на форуме, но предложенные решения мне не помогли.
Подскажите !!! ПОЖАЛУЙСТА !!! в чем проблема и как ее можно решить (тольке без использования ADO).

Заранее благодарен.

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