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

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

SQL запрос с параметром [D5, dBase, FoxPro]


Bayram Annanurov ©   (2002-08-26 10:29:00) 

Здрапствуйте.
Для ADOQuery1 выполняется SQL запрос с параметром:

begin
DShablon := CHR(39)+"text"+CHR(39); { определение значения шаблона }

ADOQuery1.Parameters.Clear; { определение параметра компонента ADOQuery1}
ADOQuery1.Parameters.Add;
ADOQuery1.Parameters[0].DataType := ftString;
ADOQuery1.Parameters[0].Name := "Shablon";
ADOQuery1.Parameters[0].Direction := pdInput;
ADOQuery1.Parameters[0].Value:= DShablon;

ADOQuery1.Close;
ADOQuery1.SQL.Clear; { определение SQL запроса}
ADOQuery1.SQL.Add("SELECT TOP 20");
ADOQuery1.SQL.Add("NAME");
ADOQuery1.SQL.Add("FROM Table01");
ADOQuery1.SQL.Add("WHERE NAME = : Shablon;");

ADOQuery1.Open;
end;


Проблема именно в параметре: если его выбросить, то все проходит гладко.
Сообщение об ошибке:
The application has impropertly defined a Parameter object.
Спасибо.


Bayram Annanurov   (2002-08-27 11:06:00) [1]

ЕСТЬ!!!
Parameters.Addна самом деле лишнее (ЮЮ).
Достаточно послезапроса (Val) определить значение параметра:
ADOQuery1.Parameters[0].Value := DShablon;

Спасибо всем !!!!!!!!!!!


ЮЮ   (2002-08-27 10:51:00) [2]

Только сейчас из IDE, всё замечательно работает

ADOQuery1.SQL.Text:="select * from tblJurnal where TurAgent=:Turagent";
ADOQuery1.Parameters[0].Value:=Edit1.Text;
ADOQuery1.Open;


Val   (2002-08-27 10:39:00) [3]

определите сначала текст запроса, затем параметры.


Bayram Annanurov   (2002-08-27 10:35:00) [4]

Здравствуйте.
ЮЮ, Вы предлагаете выбросить вообще вот этот кусок:

ADOQuery1.Parameters.Clear; { определение параметра компонента ADOQuery1}
ADOQuery1.Parameters.Add;
ADOQuery1.Parameters[0].DataType := ftString;
ADOQuery1.Parameters[0].Name := "Shablon";
ADOQuery1.Parameters[0].Direction := pdInput;
ADOQuery1.Parameters[0].Value:= DShablon;

??????

В этом случае Delphi считает, что
Line4: Incorrect syntax near "Shablon".Process stoped.
хотя весь syntaxочен даже correct.


ЮЮ   (2002-08-27 04:04:00) [5]

Зачем вручную делать Parameters[0]? Изменение ADOQuery1.SQL приводит к автоматическому преопределению Parameters. А вот затем надо сделать
ADOQuery1.Parameters[0].DataType := ftString;


ZrenBy   (2002-08-26 11:11:00) [6]

По-моему, в параметрах не надо использовать Chr(39)


Bayram Annanurov   (2002-08-26 11:09:00) [7]

Извините за опечатку


ivv   (2002-08-26 10:40:00) [8]

ADOQuery1.SQL.Add("SELECT TOP 20");
ADOQuery1.SQL.Add("NAME");
ADOQuery1.SQL.Add("FROM Table01");
ADOQuery1.SQL.Add("WHERE NAME = :Shablon");


Наверх

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