Еще раз про Ado
Для связи с Access создаю ADOTable. В режиме разработки все прекрасно, если подключить любой DataControl - все видно. Запускаю - ошибка: Project raised exeption class EVariantTypeCastError with message 'Couldn't convert variant of type(Null) into type (String)'
Ошибка возникает, если Active установить в true. Если его оставить false, то все прекрасно работает... пока не попытаешься его установить в true (прямо или через метод Open).
Перепробовал все способы - с ADOConnection и без него, с DataSource-DBGrid и без - все едино.
Самое смешное, что, во-первых, если после сбоя нажать Run, то все работает; во-вторых, если сделать Build и потом запустить exe'шник, то тоже все работает без сбоев. То есть ситуация не критическая... но раздражает.
Никто не знает, как от нее избавиться?
Для связи с Access создаю ADOTable. В режиме разработки все прекрасно, если подключить любой DataControl - все видно. Запускаю - ошибка: Project raised exeption class EVariantTypeCastError with message 'Couldn't convert variant of type(Null) into type (String)'
Builder не пятый ли?
Если да, то настоятельно рекомендую поставить патч для ADO и патч для самого билдера. Кстати, на всякий случай, какая версия MDAC и Jet?
Builder не пятый ли?
Если да, то настоятельно рекомендую поставить патч для ADO и патч для самого билдера. Кстати, на всякий случай, какая версия MDAC и Jet?
Нет, Builder 6 Enterprise Edition. Правда, диск левый, по крайней мере Help был обрублен - пришлось доставлять. Но больше ни с какими неприятностями не сталкивался. Пока.
Что касается MDAC и Jet... К стыду своему, я вообще не понимаю, о чем речь. Я никогда не работал на С++ с базами (только непосредственно на Access), первый раз попробовал связать их, не влезаю в глубину, и все получилось, кроме этого дурацкого сбоя. Так что я могу посмотреть версии MDAC и Jet... если Вы подскажете, где.
Нет, Builder 6 Enterprise Edition. Правда, диск левый, по крайней мере Help был обрублен - пришлось доставлять. Но больше ни с какими неприятностями не сталкивался. Пока.
Что касается MDAC и Jet... К стыду своему, я вообще не понимаю, о чем речь. Я никогда не работал на С++ с базами (только непосредственно на Access), первый раз попробовал связать их, не влезаю в глубину, и все получилось, кроме этого дурацкого сбоя. Так что я могу посмотреть версии MDAC и Jet... если Вы подскажете, где.
MDAC и Jet это как раз и есть библиотеки реализующие ADO.
Такая ошибка возникает тогда, когда тип поля в таблице access не идентифицируется ADO. Т.е. не понятно к какому типу приводить. Есть три выхода: Либа в DAOTable самому прописать все поля и их типы (но здесь может быть потеря данных), либо поставить версию ado посвежее. Либо взять версию access постарее.
MDAC и Jet это как раз и есть библиотеки реализующие ADO.
Такая ошибка возникает тогда, когда тип поля в таблице access не идентифицируется ADO. Т.е. не понятно к какому типу приводить. Есть три выхода: Либа в DAOTable самому прописать все поля и их типы (но здесь может быть потеря данных), либо поставить версию ado посвежее. Либо взять версию access постарее.
Нет, вариант Access постарее меня не устраивает.
Интересно, какой тип не идентифицируется ADO в таблице с двумя полями - счетчик и текстовое? Если счетчик, то почему замена его на числовое тоже не дает результата?
А где можно взять версию ADO посвежее? И как определить, что она посвежее?
MDAC и Jet это как раз и есть библиотеки реализующие ADO.
Такая ошибка возникает тогда, когда тип поля в таблице access не идентифицируется ADO. Т.е. не понятно к какому типу приводить. Есть три выхода: Либа в DAOTable самому прописать все поля и их типы (но здесь может быть потеря данных), либо поставить версию ado посвежее. Либо взять версию access постарее.
Jet -- OILE-библиотека доступа к файлам *.mdb, обычно ставится вместе с M$ Access ;). Если Access установлен (и если он свежий), значит, Jet наличествует, причём нужной для данного mdb-файла версии.
MDAC -- Microsoft Data Access Components, т.е. собственно библиотеки OLEDB, ODBC и ADO, в том числе OLEDB-провайдер и ODBC-драйвер для Jet.
Взять из можно с мелкомягкого сайта, но там сейчас ввели типа лицензионный контроль виндов. Попробуй вот эту ссылочку
1) Jet is deprecated, т.е. Micro$oft развивать его не будет. Новые версии Jet (буде таковые родятся) будут не более чем исправлениями найденных косяков, новых фенечек не появится. Посему Micro$oft рекомендует переходить на MSDE (это такая карманная верся M$ SQL Server)
2) На больших таблицах (например, в полмиллиона записей) Jet/Access начинает чудовищно тормозить, так что для больших проектов он неприемлем (т.е. хуже BDE/Paradox, я проверял). Косяки с DDL в Jet/Access появляются на гораздо более мелких таблицах.
3) Исходя из вышесказанного от себя -- IMHO -- рекомендую: по возможности, перейди с Jet на Firebird, например, или на PostgreSQL (про Oracle уж промолчу, хотя, имхо, Oracle rulezzz foreva).
Есть код под рукой,
через ADO, коннектимся к БД сделанной в Access'e,
по имени и полному пути к БД. настраиваются масссивы TADOTable, TDataSours & TDBGrid'ов. Все компоненты включаю TADOConnection создютя и настраиваются динамически (ран-тайм). если интересно закачайте прикрепление. Незнаю может это поможет...
Д.С.