Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: 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 вся ветка

Текущий архив: 2002.09.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-98091
REA
2002-09-19 17:08
2002.09.30
Недержание свойств


14-98324
ded_di
2002-09-05 12:53
2002.09.30
редактор запросов


7-98391
Kick
2002-06-19 13:44
2002.09.30
Как можно программно свернуть все окна?


3-98022
bobr12
2002-09-10 13:03
2002.09.30
Опять Excel и InterBase


8-98237
skywalker
2002-02-15 16:03
2002.09.30
---|Ветка была без названия|---