BDE + ADO + C++Builder = error?
Компилируется тоже все нормально, но когда программа запускается тут же вылетает ошибка "cannot load driver".
Провел эксперимент: убрал компонент TADOTable - все работает. Добавил этот компонент снова, но не стал прописывать ему вообще никакой ConnectionString - опять таже ошибка.
И еще интересная вещь. Если построить ЕХЕ-шник, то он выдает эту же ошибку только пока запущен Builder. Если Builder закрыть, то ЕХЕ-шник работает нормально.
Где тут собака порылась?
Компилируется тоже все нормально, но когда программа запускается тут же вылетает ошибка "cannot load driver".
Провел эксперимент: убрал компонент TADOTable - все работает.
Добавил этот компонент снова, но не стал прописывать ему вообще никакой ConnectionString - опять таже ошибка.
И еще интересная вещь. Если построить ЕХЕ-шник, то он выдает эту же ошибку только пока запущен Builder. Если Builder закрыть, то ЕХЕ-шник работает нормально.
Где тут собака порылась?
Могу тебя обрадовать. У тебя винда повалилась. По крайней мере та часть, что с ADO работает. Такие чудеса сами не происходят, ADO известный компонент, я сам его юзаю когда нужно сделать маленькие приложеньица. И он всегда был на высоте. Я и DBF через ADO ковыряю, так что скомпилируй, и запусти на машине с целой виндой, всё должно получиться.
Я наверно не достаточно подробно объяснил. Дело в том что изначально у меня в программе было несколько BDE-шных компонентов Table, которые работали с DBF-файлами. А потом я дабавил один ADO-шный компонент TADOTable и началось...
Хотя наверно можно вместо BDE-шных Table, тоже поставить TADOTable (то есть вообще избавиться от BDE-шных компонентов Table, но неохота переделывать.
На машине какой-нибудь пакости типа vipnet не установлено? У нас такое из-за випнета было.
Нет. Я даже не знаю что это такое.
А вы кто-нибудь у себя попробуйте поместить на форму сначала BDE-шный компонент TTable, и открыть им какую-нибудь таблицу. А затем поместить ADO-шный компонент TADOTable, им можно даже ничего не открывать. Скомпилируйте и запустите.
А вы кто-нибудь у себя попробуйте поместить на форму сначала BDE-шный компонент TTable, и открыть им какую-нибудь таблицу. А затем поместить ADO-шный компонент TADOTable, им можно даже ничего не открывать. Скомпилируйте и запустите.
vipnet -- гадко сляпанная пародия на Firewall+VPN.
Попробовал. Результат позабавил: из-под среды Access Violation, отдельно всё нормально запускается.
Вывод: хорошо, что я использую компоненты прямого доступа к данным (ODAC, DegisyData, Apollo), а не BDE или ADO!
Ещё инфа к размышлению: если перед запуском в дизайнере сделать всем табличкам (и BDE, и ADO) свойство Active = false, а на форму бросить кнопку
{
ADOTable1->Active = true;
Table1->Active = true;
}
Тогда возникает вопрос чайника, если я несколько таблиц, которые у меня сейчас в DBF-файлах, "скопирую" в одну базу MDB, то как работать с несколькими таблицами одной базы с помощью ADO? Это надо вместо каждого TTable ставить TADOTable и прописывать в нем соответствующую таблицу или как-то по-другому?
А вот с ACCESSом через ADO связываться куда проще.
И ещё: по-хорошему "таблицы" лучше не использовать. Учите SQL, пишите запросы для Query с параметрами.
Кстати, а для аксеса всё ещё проще. Используется компонент ADOStoreProc, ему указывается только имя запроса и значения требуемых параметров. Тексты SQL-запросов легко, удобно и красиво пишутся в самом аксесе. А запросы без параметров открываются в ADOTable, как таблицы - по имени запроса.
Всё - у вас есть удобная среда для написания и отладки доступа к данным, и есть удобная среда для написания и отладки интерфейса программы. Каждая из сред максимально независима от другой.
А BDE, равно как и базы данных, для которых он предназначался - музейный раритет ;)
пишу следующее
{
ADOTable1->Active = "false";
ADOTable1->TableName="Table2";
ADOTable1->Active = "true";
}
получаю ошибку
пишу следующее
{
ADOTable1->Active = "false";
ADOTable1->TableName="Table2";
ADOTable1->Active = "true";
}
получаю ошибку
я так подозреваю, что в ADOTable1 были заведены поля,
а в другой таблице они другие - и наверное написано : "field not found"
Если поля не заведешь - всё должно работать.