Помогите! Работа с БД Excel через MFC
От: Аноним  
Дата: 27.05.03 06:45
Оценка:
В Visual C++ 6.0 скомпилировал пример (из книги) простого 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

Заранее спасибо
Re: Помогите! Работа с БД Excel через MFC
От: Forint Украина  
Дата: 27.05.03 10:23
Оценка:
Возможно у строк твоей табл. нет уникального идентификатора?
... << RSDN@Home 1.0 beta 6a >>
Re[2]: Помогите! Работа с БД Excel через MFC
От: tms320  
Дата: 27.05.03 11:25
Оценка:
Здравствуйте, Forint, Вы писали:

F>Возможно у строк твоей табл. нет уникального идентификатора?


Идентификатор есть. Иначе "MFC Application Wizard" не смог бы сгенерить проект
Но все равно спасибо за ответ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.