Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сжатие базы ACCESS

9.5K
18 июня 2007 года
Borgir
97 / / 20.12.2006
День добрый!
Поиск по форуму не помог, неужели я первый озадачился такой вещью. Есть в программе MS ACCESS такая команда "сжать базу данных", это когда очищаются все удаленные когда-то записи (ведь физически они из файла не удаляются) и тд. При этом размер файла базы данных соответственно уменьшается.
Можно ли, используя ADO, осуществить данную операцию из моей программы?
1
19 июня 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Borgir
День добрый!
Поиск по форуму не помог, неужели я первый озадачился такой вещью. Есть в программе MS ACCESS такая команда "сжать базу данных", это когда очищаются все удаленные когда-то записи (ведь физически они из файла не удаляются) и тд. При этом размер файла базы данных соответственно уменьшается.
Можно ли, используя ADO, осуществить данную операцию из моей программы?


прикинь ты ПЕРВЫЙ. не считая той тысячи человек которые задавали вопрос до тебя. :)

Код:
WideString WSCurrConn = ADOConnection1->ConnectionString;

Variant JE = Variant::CreateObject("JRO.JetEngine");

   try{
      TAutoArgs<2> args;
      args[1] = WSCurrConn;
      args[2] = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\tmp\\myTmp.mdb";
     HRESULT hRes = JE.OleFunction("CompactDatabase",static_cast<TAutoArgsBase*>(&args));
   }
  catch(Exception& ex){
   ShowMessage("Error: "+ ex.Message);
   }
1
19 июня 2007 года
kot_
7.3K / / 20.01.2000
соответственно заменяешь файл базы данных тем который находится в c:\\tmp\\myTmp.mdb - надеюсь это понятно.
309
19 июня 2007 года
el scorpio
1.1K / / 19.09.2006
[quote=kot_]WideString WSCurrConn = ADOConnection1->ConnectionString;
//
args[2] = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\tmp\\myTmp.mdb";
[/quote]
Вопрос, если в строке ConnectionString уже указан путь к БД, то зачем в строке Provider нужен параметр Source?
1
19 июня 2007 года
kot_
7.3K / / 20.01.2000
Цитата: el scorpio
Вопрос, если в строке ConnectionString уже указан путь к БД, то зачем в строке Provider нужен параметр Source?


метод CompactDatabase требует передачи как минимум двух параметров - исходной базы и итоговой базы. так же туда можно передать кодировку и пароль.
после сжатия итоговой базой заменяешь исходную.

71K
27 апреля 2011 года
lyonovice
4 / / 27.04.2011
Доброе время суток!
Меня эта возможность очень обрадовала, но...
Цитата: kot_

 
Код:
...
     HRESULT hRes = JE.OleFunction("CompactDatabase",static_cast<TAutoArgsBase*>(&args));
     ...


На этой строке выскакивает исключение "... EOleSysError with message 'Ошибка'. ..." без собственно текста ошибки
Может что-то еще нужно сделать?
Спасибо!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог