Форум: "Базы";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
ВнизПроблемы с TADOQuery.SQL Найти похожие ветки
← →
nomshar (2002-09-09 00:01) [0]Здравствуйте. Есть такая проблема.
Код:
procedure TDataForm.RunQueryBtn(Sender: TObject)
begin
try
ADOQuery1.Close;
ADOQuery1.Clear;
ADOQuery1.SQL.Assign(SQLMemo.Lines);
ADOQuery1.Open;
except
...
end;
При этом в SQLMemo находится следующий текст:
"select id, id_name, id_price from billtabl"
При нажатии кнопки RunQueryBtn происходит ошибка и генерируется исключение EListError со следующим сообщением: "List index out of bounds(1)"
Какие бы поля я не вводил в запрос результат прежний. Однако, если ввести в запрос все поля, либо просто *, то все спокойно работает и никаких ошибок не возникает. А если убрать из запроса хоть одно поле, то происходит та же ошибка. Если кто знает в чем тут дело, то очень прошу помощь. Программа горит.
← →
Black Cat (2002-09-09 09:49) [1]А такой код работает? Вообще-то
ADOQuery1.Clear;
не должно проходить. Попробуйте
ADOQuery1.SQL.Clear;
← →
oss (2002-09-09 15:14) [2]а еще очисть весь список полей в этом квери,
либо создавай квери динамически
← →
andrenkov (2002-09-09 16:32) [3]Не работай через Assign, делай через
ADOQuery1.SQL := SQLMemo.Lines;
Мы это широко используем в своих проектах. Главное, что бы список полей и параметров совпадал с ними же в design-time. Тогда в run-time можешь строить свой query.
Можно конечно делать ADOQuery1 := TADOQuery.create ...
С уважением,
Владимир
← →
oss (2002-09-10 18:20) [4]или еще понятнее
ADOQuery1.SQL.Add(SQLMemo.Lines.text);
← →
3JIA9I CyKA (2002-09-10 18:46) [5]или совсем уж
ADOQuery1.SQL.Text := SQLMemo.Lines.Text;
8)
← →
nomshar (2002-09-11 01:45) [6]Спасибо всем за ответы. И еще раз извиняюсь, конечно же ADOQUery1.SQL.Clear.
А список я очищал и происходило тоже самое. Пробовал делать и так:
ADOQuery1.SQL.Text:= SQLMemo.Lines.Text;
Результат был тот же.
← →
Друпи (2002-09-11 04:34) [7]...
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.AddStrings(SQLMemo.Lines);
...
← →
ЮЮ (2002-09-11 05:37) [8]Вернёмся к началу:
При этом в SQLMemo находится следующий текст:
"select id, id_name, id_price from billtabl"
При нажатии кнопки RunQueryBtn происходит ошибка и генерируется исключение EListError со следующим сообщением: "List index out of bounds(1)"
Какие бы поля я не вводил в запрос результат прежний. Однако, если ввести в запрос все поля, либо просто *, то все спокойно работает и никаких ошибок не возникает. А если убрать из запроса хоть одно поле, то происходит та же ошибка.
Ведь ошибка не обязательно происходит в
ADOQuery1.SQL.Assign(SQLMemo.Lines);
Даже, скорей всего, не там. Посмотри, что у тебя происходит на Open, в обработчиках ADOQuery1.
При нажатии кнопки RunQueryBtn происходит ошибка - вообще не корректно поставленный вопрос. Следовало бы указать в какой строке.
← →
Харальд (2002-09-11 10:34) [9]Ошибка "List index out of bounds(1)" скорее всего возникает из-за того что, в ADOQuery1 Fields Editor"ом созданы заведены все поля из таблицы. И при попытке выбора меньшего количества, возникает исключительная ситуация. Попробуй удалить поля из Fields Editor"а
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c