CFile не может прочитать mdb файл...
От: Boot32 Россия  
Дата: 21.12.03 17:28
Оценка:
Всем, здравствуйте!

Задача стоит следующая: программно заархивировать базу данных 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


Как победить эту проблему?
Может кто сталкивался?

С уважением,
Дмитрий
Re: CFile не может прочитать mdb файл...
От: Boot32 Россия  
Дата: 22.12.03 04:06
Оценка:
Вопрос снимается!
Совсем программировать разучился!

B> CFile flSource(_T("test.mdb"), CFile::modeRead ||

B> CFile::shareDenyWrite || CFile::typeBinary);

Вместо CFile::modeRead || CFile::shareDenyWrite || CFile::typeBinary нужно было написать:
CFile::modeRead | CFile::shareDenyWrite | CFile::typeBinary

Досадная ошибка...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.