Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с TADOQuery.SQL [D6, MSAccess]


nomshar ©   (2002-09-09 00:01:00) 

Здравствуйте. Есть такая проблема.
Код:

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)"
Какие бы поля я не вводил в запрос результат прежний. Однако, если ввести в запрос все поля, либо просто *, то все спокойно работает и никаких ошибок не возникает. А если убрать из запроса хоть одно поле, то происходит та же ошибка. Если кто знает в чем тут дело, то очень прошу помощь. Программа горит.


Харальд   (2002-09-11 10:34:00) [1]

Ошибка "List index out of bounds(1)" скорее всего возникает из-за того что, в ADOQuery1 Fields Editor"ом созданы заведены все поля из таблицы. И при попытке выбора меньшего количества, возникает исключительная ситуация. Попробуй удалить поля из Fields Editor"а


ЮЮ   (2002-09-11 05:37:00) [2]

Вернёмся к началу:
При этом в 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 04:34:00) [3]

...
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.AddStrings(SQLMemo.Lines);
...


nomshar   (2002-09-11 01:45:00) [4]

Спасибо всем за ответы. И еще раз извиняюсь, конечно же ADOQUery1.SQL.Clear.
А список я очищал и происходило тоже самое. Пробовал делать и так:

ADOQuery1.SQL.Text:= SQLMemo.Lines.Text;

Результат был тот же.


3JIA9I CyKA   (2002-09-10 18:46:00) [5]

или совсем уж
ADOQuery1.SQL.Text := SQLMemo.Lines.Text;
8)


oss   (2002-09-10 18:20:00) [6]

или еще понятнее
ADOQuery1.SQL.Add(SQLMemo.Lines.text);


andrenkov   (2002-09-09 16:32:00) [7]

Не работай через Assign, делай через

ADOQuery1.SQL := SQLMemo.Lines;

Мы это широко используем в своих проектах. Главное, что бы список полей и параметров совпадал с ними же в design-time. Тогда в run-time можешь строить свой query.
Можно конечно делать ADOQuery1 := TADOQuery.create ...

С уважением,

Владимир


oss   (2002-09-09 15:14:00) [8]

а еще очисть весь список полей в этом квери,
либо создавай квери динамически


Black Cat   (2002-09-09 09:49:00) [9]

А такой код работает? Вообще-то
ADOQuery1.Clear;
не должно проходить. Попробуйте
ADOQuery1.SQL.Clear;


Наверх

Титульная страница Поиск, карта сайта Написать письмо