Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ошибка


Автор: marvin 25.8.2004, 14:09
void __fastcall TForm1::Button1Click(TObject *Sender)
{ int k; AnsiString question; AnsiString imgfile;
bool haveimg; int ball;

k=QuestionQuery->FieldByName("k")->AsInteger;
ball=QuestionQuery->FieldByName("ball")->AsInteger;
question=QuestionQuery->FieldByName("question")->AsString;
haveimg=QuestionQuery->FieldByName("have_image")->AsBoolean;
imgfile=QuestionQuery->FieldByName("image")->AsString;
if(haveimg)Image1->Picture->LoadFromFile(imgfile);
if(!QuestionQuery->Eof)QuestionQuery->Next();
AnswerQuery->Close();
AnswerQuery->SQL->Clear();
AnswerQuery->SQL->Add("select * from answers where k="+IntToStr(k)+";");
AnswerQuery->Open();
Memo1->Lines->Clear();
Memo1->Lines->Add(question);
RadioGroup1->Items->Clear();
while(!AnswerQuery->Eof)
{RadioGroup1->Items->
Add(AnswerQuery->FieldByName("answer")- >AsString);
AnswerQuery->Next();
}

При работе с базой данных Access через ADO вылазит ошибка 'Either BOF or EOF is True or the current record has been deleted. Requested operation requires a current record', хотя установлены MDAC 2.8 и патч BCB5EntUpdate1 для C++Builder.

Автор: marvin 25.8.2004, 14:10
Пожалуйста, посоветуйте, если кто что знает.

Автор: Олег М 25.8.2004, 14:25
Цитата(marvin @ 25.8.2004, 17:09)
При работе с базой данных Access через ADO вылазит ошибка 'Either BOF or EOF is True or the current record has been deleted. Requested operation requires a current record', хотя установлены MDAC 2.8 и патч BCB5EntUpdate1 для C++Builder.

У тебя наверное пустой Recordset возвращает, посмотри количество записей. Попробуй запрос без where записать "select * from answers".

Автор: Guest 25.8.2004, 14:55
если записать просто select * from answers; то ошибка не исчезает, зато если закомментировать строки
Цитата
/*while(!AnswerQuery->Eof)
{RadioGroup1->Items->
Add(AnswerQuery->FieldByName("answer")- >AsString);
AnswerQuery->Next();
}*/

то ошибки нет

TADODataSet я не использую

использую только TADOConnection, TDataset и TADOQuery.


Автор: Олег М 25.8.2004, 15:08
Цитата(Guest @ 25.8.2004, 17:55)
то ошибки нет

Понятно, что нет. Ты здесь пытаешься обращаться к полям текущей записи, а у тебя её нет. Попробуй вначале MoveFirst сделать, или как там в борланде переити на первую запись. У тебя таблица answers точно не пустая?

Автор: marvin 25.8.2004, 16:45

AnswerQuery->First(); - без толку.

если закомментировать те строки, то в сетку TDBGrid выводит без проблем=> все эти нужные записи существуют(результат запроса не пустой), НО при закрытии программы опять та же ошибка.
Кажется тут причины где-то глубоко в Builder'е.

Автор: Олег М 25.8.2004, 16:49
А на какой конкретно строке вылетает?

Автор: Олег М 25.8.2004, 17:12
Цитата(marvin @ 25.8.2004, 19:45)
Кажется тут причины где-то глубоко в Builder'е.

Так там исходники должны быть открой да посмотри

Автор: Borisff2003 26.8.2004, 05:17
А какой тип у столбца answer?

Автор: marvin 26.8.2004, 12:20
"текстовый", как и столбец question у QuestionQuery.

Автор: Borisff2003 26.8.2004, 12:50
Странно, У меня
ADOQuery1->FieldByName("abbrev")->AsString;
проходит даже при пустом запросе

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)