Эта функция позволяет уплотнить базу данных и оптимизировать доступ. Если вы интенсивно работаете с базами данных, т.е. удаляете, вставляете и так далее, то в базе данных появляются пустоты. Еще эта функция поможет, если Вы переводите проект из старых версий. Эта функция принадлежит классу CDaoWorkspace:
static void PASCAL CompactDatabase ( LPCTSTR lpszSrcName, // это будем уплотнять LPCTSTR lpszDestName, // это получим LPCTSTR lpszLocale = dbLangGeneral, // язык int nOptions = 0 ); // это опции для смены версии и шифровки throw( CDaoException, CMemoryException ); static void PASCAL CompactDatabase ( LPCTSTR lpszSrcName, LPCTSTR lpszDestName, LPCTSTR lpszLocale, int nOptions, LPCTSTR lpszPassword ); throw( CDaoException, CMemoryException );
Имя должно указывать на закрытую базу данных, Вы должны указывать и расширения. В имени вы можете использовать пути UNC (Смотри MSDN: "Шаг 18 - Universal Naming Convention - UNC"). Пароль может понадобиться, если Вы хотите уплотнить базу данных защищенную паролем. Этот параметр требует специального форматирования. Вот так:
;PWD = lpszPassword
Язык отвечает за кодировку символов в базе данных и естественно влияет на сортировку.
Опции могут быть следующими:
В документации написано, что этот метод можно применить для копирования базы данных. Эта функция является аналогом функции MS Access.
Ну пример маленький. Специально с паролем:
void CTestRepDlg::OnButton1() { CDaoWorkspace cd; cd.CompactDatabase("c:/step.mdb","c:/new.mdb", dbLangCyrillic,dbEncrypt,";PWD=123"); }