Вниз
Скачать: CL | DM;

Проблемы с 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
1-98136
Morfey COOL
2002-09-17 12:19
2002.09.30
Запуск приложения


14-98318
AL2002
2002-09-03 10:11
2002.09.30
Новый поисковик


1-98031
LEV
2002-09-18 21:56
2002.09.30
ВОПРОС


1-98124
KIR
2002-09-20 10:58
2002.09.30
Народ, как закрыть все MDIChild окна формы?


1-98129
dimanew
2002-09-20 12:18
2002.09.30
Какое св-во CheckListBox говроит что item




   Наверх