В общем довелось мне тут ковыряться в чужом коде на предмет исправления и дополнения. Программа — обычная облочка для базы данных клиентов, написана на Делфи 5, для открытия формы соответствующего клиента использует параметризованные запросы.
Для задания параметра используется вот такой вот несложный код:
DataModule1.ADOQueryDeliver.Close;
DataModule1.ADOQueryDeliver.Parameters.ParamByName('id_cl').Value:=id_client;
//DataModule1.ADOQueryDeliver.Parameters.ParamByName('id_cl').Value:=id_client;
DataModule1.ADOQueryDeliver.Open;
Так вот. При попытке открыть форму выскакивает глубокомысленное сообщение вида: "Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record".
Если параметр вышеописанным способом не передавать — форма открывается, пустая конечно. Так что проблема точно в этом.
Заменяю вторую строчку в коде на закомментированную.
Запускаю адский делфевский дебуггер, пишу три вотча.
1. DataModule1.ADOQueryDeliver.Parameters.Items[0].Value
2. DataModule1.ADOQueryDeliver.Parameters.ParamByName(':id_cl').Value
3. DataModule1.AdoQueryDeliver.Parameters.ParamValues[':id_cl']
В ответ на первый пишет все как надо, нужное значение параметра.
На второй: "Delphi Exception EDatabaseError at $4DFF985".
А на третий — вообще "Function to be called, TParameters.GetParamValue, was eliminated by linker".
И теперь я уже ничего не понимаю.
Кстати, при попытке открытия датасета через среду, открывает он без проблем, а вот при закрыти выдает ту же ошибку про BOF и EOF.
Самое смешное, что программа эта уже пару лет замечательно работает в некой организации. Тот человек, который ее писал, давно уже уволился, и оставил за собой исходники. Вот при попытке эти самые исходники скомпилить мне этот "результат" и выдается. То ли исходники не те, то ли я на голову болен, то ли это божий промысел...
У кого-нибудь мысли есть?
Здравствуйте, <Аноним>, Вы писали:
АА>Так вот. При попытке открыть форму выскакивает глубокомысленное сообщение вида: "Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record".
Тебе необходимо установить два update для дельфи 5. И обновить MDAC — компоненты windows их ищи на сайте Майкрософт.
Все работает без глюков... А я?
<< RSDN@Home 1.1.4 stable SR1 rev. 568>>