![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Guest_Sergey |
|
|||
Unregistered |
В 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 Заранее спасибо :-) |
|||
|
||||
valex13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 29.1.2003 Где: Иркук. область, г . Иркутск Репутация: нет Всего: 1 |
Попробуй открыть xls и указать в настройках монопольных доступ.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |