Всем, здравствуйте!
Задача стоит следующая: программно заархивировать базу данных MS Access,
для того, чтобы положить её в архив и т. д. и т. п.
К БД обращаюсь через ODBC, используя MFC.
CDatabase m_dbTest;
m_dbTest.OpenEx(_T("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=test.mdb"));
//
// Здесь происходит работа с базой через CRecordset...
//
m_dbTest.Close();
if (!m_dbTest.IsOpen()) {
::SQLConfigDataSource(NULL, ODBC_ADD_DSN,
_T("Microsoft Access Driver (*.mdb)"),
_T("COMPACT_DB=test.mdb test.mdb\0\0"));
CFile flSource(_T("test.mdb"), CFile::modeRead ||
CFile::shareDenyWrite || CFile::typeBinary);
char cBuffer[1024];
// Проблема здесь - при попытке чтения вываливается исключение
// с сообщением, что доступ к файлу mdb запрещён!
// Но ведь перед этим я базу закрыл!
// Да и открываю я файл только для чтения!
UINT nCount = flSource.Read((void *) &cBuffer, 1024);
flSource.Close();
} // if
Как победить эту проблему?
Может кто сталкивался?
С уважением,
Дмитрий