Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с Ado (e_fail)

5.5K
05 октября 2004 года
Сэм
5 / / 30.12.2003
Кто-нибудь сталкивался с проблемой когда: при выборке данных возникает EOleException "Поставщик данных или другая служба вернули состояние E_FAIL"?
Сообщение возникает при некоторых sql-запросах, например: SELECT tbl1.fld1, tbl2.fld2 FROM tbl1 LEFT JOIN tbl2 ON tbl1.idx1=tbl2.idx2. При этом DataSet->Active = true отрабатывает без проблем, а исключение возникает в какой-то момент при листании DataSet->Next() или при вызове Count = DataSet->RecordCount – сразу.
Соединение с БД происходит через ADOConnection с использованием Microsoft OLE DB Provider for ODBC Drivers.
Проблема как-то связана с «Поставщиком данных», т.к. устраняется подключением БД через Microsoft Jet 4.0 OLE DB Provider. Аналогичный sql-запрос отрабатывает на MsAccess-е так-же без проблем
Задача написана на Cbuilder 6 с установленным Update Pack 4.
Может нужны еще какие-то обновления? Как порешить проблему?
Заранее спасибо…
294
06 октября 2004 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by Сэм
Кто-нибудь сталкивался с проблемой когда: при выборке данных возникает EOleException "Поставщик данных или другая служба вернули состояние E_FAIL"?
Сообщение возникает при некоторых sql-запросах, например: SELECT tbl1.fld1, tbl2.fld2 FROM tbl1 LEFT JOIN tbl2 ON tbl1.idx1=tbl2.idx2. При этом DataSet->Active = true отрабатывает без проблем, а исключение возникает в какой-то момент при листании DataSet->Next() или при вызове Count = DataSet->RecordCount – сразу.
Соединение с БД происходит через ADOConnection с использованием Microsoft OLE DB Provider for ODBC Drivers.
Проблема как-то связана с «Поставщиком данных», т.к. устраняется подключением БД через Microsoft Jet 4.0 OLE DB Provider. Аналогичный sql-запрос отрабатывает на MsAccess-е так-же без проблем
Задача написана на Cbuilder 6 с установленным Update Pack 4.
Может нужны еще какие-то обновления? Как порешить проблему?
Заранее спасибо…


Попробуй поставить runtime MDAC и JET посвежее (мелкомягкие раздают соотв. сервиспаки свободно). Ещё вопрос такой: как я понимаю, подключение идёт к базе даннах MDB, тогда зачем подключаться через ODBC, если можно Microsoft Jet 4.0 OLE DB Provider? Во втором случае прослойка между программой и БД будет несколько тоньше. Т.е. либо (1) программа -> ADO -> OLEDB -> ODBC -> JET -> БД либо (2) программа -> ADO -> OLEDB -> JET -> БД.

5.5K
06 октября 2004 года
Сэм
5 / / 30.12.2003
Насчет версий: стоит WinXP SP2 - не должно быть проблемы с версией MsJet... Насчет поставщика данных - так выходит универсально, не нужна пересборка программы при смене БД, настройка клиента опять же проще - любая версия Windows (от Win98SE)... хотя, с другой стороны, смена БД не так часто происходит...
294
07 октября 2004 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by Сэм
Насчет версий: стоит WinXP SP2 - не должно быть проблемы с версией MsJet... Насчет поставщика данных - так выходит универсально, не нужна пересборка программы при смене БД, настройка клиента опять же проще - любая версия Windows (от Win98SE)...


M$ Jet OLE DB Provider под Windows 98 тоже работает.

Цитата:
хотя, с другой стороны, смена БД не так часто происходит...


Точно. Кроме того, смена БД -- не только смена OLDEB-провайдера, но и частично замена SQL-команд. Например, преобразование строки к дате в Jet/Access, M$ SQL Server и Oracle происходит тремя разными способами; в Oracle, в отличие от Jet/Access, нет такого типа переменных как "счётчик", зато есть триггеры и последовательности и т.д.
Словом, универсальность -- очень трудоёмкая штука.

А Jet runtime и MDAC всё-таки качни...

Кстати, последние новости: Micro$oft решила отказаться от дальнейшей поддержки Jet (см. статью), новые верии больше не планируются. Разработчикам рекомендуется переходить на MSDE или SQL Server 2005 Express.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог