C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Переход от BDE к ADO
НовыйЧок
Отправлено: 11.01.2006, 13:06


Ученик-кочегар

Группа: Участник
Сообщений: 7



Доброе время суток!

Есть программа работающая с БД (Access) через BDE. Пришел к тому что надо переходить на ADO.
Данные из БД беру посредством TQuery. Следовательно надо использовать TADOQuery.
По идеи эти компоненты одинаковы по свойствам и методам, различия только в принципе подключения к БД.

Поменяв в DataModule соответствующие компоненты (TQuery на TADOQuery), появились следующие проблемы:

Первая — в коде:

CODE

DataModule1->ADOQuery1->Open();
DataModule1->ADOQuery1->First();
while (!DataModule1->ADOQuery1->Eof)
   {
     kom_nom->Items->Add();
     kom_nom->Items->Item[i]->Caption=DataModule1->ADOQuery1->FieldByName("name_kom")->AsString;
     DataModule1->ADOQuery1->Next();
    }
DataModule1->ADOQuery1->Close();



среда выдает ошибку "Either BOF or EOF is True? or the current record has been deleted". После этого добавил перед
CODE

DataModule1->ADOQuery1->Close();

следующее
CODE

DataModule1->ADOQuery1->First();


вроде заработало. Проверял, после перехода на последнюю запись свойства TADOQuery Eof=true и Bof=false. Запрос обычный на возвращение данных. Почему такое происходит?!

Вторая — все в том же коде, только при условии, что запрос ничего не возвращает, пустой курсор. Та же ошибка, Eof=true и Bof=true,
CODE

DataModule1->ADOQuery1->First(); — не помогает.


Пожалуйста, кто-нибудь объясните в чем проблема! (если можно то без кардинальных изменений, а то много пререписывать придется).

Заранее благодарен !!!
Guest
Отправлено: 11.01.2006, 13:25


Не зарегистрирован







QUOTE

Either BOF or EOF is True

Очень напоминет неустановленность обновления для 5-го BCB.
Update
НовыйЧок
Отправлено: 11.01.2006, 14:42


Ученик-кочегар

Группа: Участник
Сообщений: 7



Спасибо! Вечером посмотрю.

Вернуться в Работа с базами данных в C++Builder