Помогите! Работа с БД Excel через MFC
в котором осуществляется работа с базой данных MS Access через ODBC.
База данных представляет собой простейшую таблицу типа телефонной книжки и
физически расположена на том же компьютере, что и приложение. Как и написано
в книге, я проделал следующее:
1. После создания база данных была успешно зарегистрирована в системе
посредством "ODBC Data Sources" в Панели управления.
2. Для создания приложения был вызван "MFC Application Wizard".
3. На "Шаге 1" было выбрано: "Single Document".
4. На "Шаге 2" было выбрано: "Database view without file support", а в качестве
источника данных - ODBC: "Имя моей БД" (Recordset type = Snapshot).
Далее я оставил все опции проекта по умолчанию, добавил на форму нужные мне
Edit-контролы (поля в моей БД - текстовые) и связал их с соответствующими
переменными в классе CAppView (автоматически сгенеренным VC).
Как и положено для примера, приложение сразу заработало. Все записи считывались
из БД и отображались в окне моего приложения. Изменения, сделанные в окне моего
приложения также корректно переносились в исходную БД.
Теперь, собственно, к сути проблемы :) У меня есть задача, аналогичная
рассмотренному выше примеру, с той лишь разницей, что в качестве БД
используется не MS Access, а книга MS Excel. Я соответствующим образом
зарегистрировал xls-файл в системе, используя Microsoft Excel Driver (ODBC).
Для правильной работы нужным мне Excel-ячейкам я задал имя (аналог имени
таблицы в MS Access), без чего в "MFC Application Wizard'е" я бы не смог
выбрать источник данных.
Далее заново создал MFC-приложение, где в качестве источника данных выбрал
новую Excel-БД. Так вот, считывание данных из БД (файла Excel) и их отображение
происходит нормально. Если же в окне моего приложения изменить любое из полей,
то при переходе к следующей записи (измененные данные при этом должны
автоматически сохраниться в БД) появляется сообщение об ошибке "Ошибка
синтаксиса или нарушение прав доступа", и изменения, естественно, не
сохраняются.
Замена опций "Database view WITHOUT file support" на "Database view WITH file
support", или "Snapshot" на "Dynaset", при создании проекта не помогла.
При регистрации Excel-БД в системе я убедился, что галочка "Read Only" снята.
Принудительно задавал "текстовый" формат Excel-ячеек - тоже не помогло.
В то же время, использование непосредственно SQL-команды для модификации
данных в поле Excel-таблицы (m_pSet->m_pDatabase->ExecuteSQL("UPDATE Table1
SET Field1 = 10 WHERE N = 1") сработало без всяких ошибок.
В чем здесь может быть проблема, почему считывание данных из Excel-БД
присходит нормально, а запись (посредством автоматически сгенеренного
MFC-кода) - нет.
ОС: Windows XP
MS Office 2000
Заранее спасибо :-)