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

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

Параметры в Query. [D5, dBase, FoxPro]


Hawk2 ©   (2002-09-27 15:08:00) 

Мастера поведайте, как работать с параметрами в Query, а то у меня чего-то свойство Params в design-time не работает. Появляется окно добавления параметров, а там все не активизировано.


sniknik   (2002-09-27 19:06:00) [1]

а что в этой нецивилизованного?
эта запись тоже нормальняя, не считая того что ты тут ошибся :-) как и я ранее, но смысл правильный. а с параметрами я обычно делаю когда их много или когда дату передаю, в запросе ее писать обязательно ошибешся.


Hawk2   (2002-09-27 18:28:00) [2]

Урра!!! ПОЛУЧИЛОСЬ!!!
TO sniknik: ОГРОМНОЕ СПАСИБО!!!
а то я раньше писал "SELECT * FROM SomeTable WHERE Nomer="+StrToInt(Edit1.Text)+" "... и в том же духе но хочется както цивилизовано.


sniknik   (2002-09-27 17:14:00) [3]

вот эта строка
SQL.Add("SELECT * FROM Proba22 WHERE (Nomer=:Nom)");
все настройки переопределяет. параметры надо после определять.


sniknik   (2002-09-27 17:11:00) [4]

ты же говорил
"Params в design-time не работает"
а это рантфйм. изза этого все и путаются.

надо
SQL.Clear;
SQL.Add("SELECT * FROM Proba22 WHERE (Nomer=:Nom)");
SQL.Params.ParamByName("Nom").AsInteger:= 9;
Open;

чтото вроде этого.


Hawk2   (2002-09-27 17:04:00) [5]

Пробовал уже и так, но тут прикол, первый раз запрос выполняется без проблем, а потом ругается "Query1:Field "Nom" is of an anknown type."

procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.Params.CreateParam(ftInteger,"Nom",ptInput);
Query1.ParamByName("Nom").AsInteger := StrToInt(Edit1.Text);
With Query1 do
begin
Close;
SQL.Clear;
SQL.Add("SELECT * FROM Proba22 WHERE (Nomer=:Nom)");
Open;
end;
end;


Prooksius   (2002-09-27 16:51:00) [6]

Используй FIBPlus - у них есть такая штука, как макросы. Классная вещь. Я их как раз в Order By и использую.


sniknik   (2002-09-27 16:45:00) [7]

сначала сделай его true а после запрос с параметрами набери. если его позже менять не сработает.


sniknik   (2002-09-27 16:43:00) [8]

а там свойство такое рядом ParamCheck похоже оно у тебя false.


Hawk2   (2002-09-27 16:40:00) [9]

В том то и дело что "щелкни на Params и проставь значения.", а там все неактивно.


ch_victor   (2002-09-27 16:39:00) [10]

вот кстати
почему если указываешь параметры в секции order by
и меняешь c помощью параметра сортировку

то это не работает, что в сортировке нельзя использовать параметры?


sniknik   (2002-09-27 16:32:00) [11]

design-time? не работает.
то есть пытаешся выполнить поставив свойство Active в true.
а больше ничего не делаеш? Для десигна надо их в десигне и присвоить. щелкни на Params и проставь значения.


Hawk2   (2002-09-27 16:19:00) [12]

Можно: SELECT * FROM SomeTable WHERE (Nomer=:Nom) OR (Fio=:Fio)


ch_victor   (2002-09-27 16:17:00) [13]

тип параметра нужно выбрать
ptInput если ты хочешь его передавать в запрос


sunwheel   (2002-09-27 16:16:00) [14]

Попробуй присвоить параметру значение:

Query1.ParamByName("Nom").AsInteger := 0;


Max Zyuzin   (2002-09-27 15:45:00) [15]

А текст запроса можно посмотреть?


Hawk2   (2002-09-27 15:30:00) [16]

Ну написал я запрос, а почему мне выбрасывает окно "Query1:Perameters ":Nom" not found" или "Поле "Nom" неопределенного типа"?


ch_victor   (2002-09-27 15:15:00) [17]

в запросе должны использоваться параметры
например
select pole1,pole2 from table
where pole1=:param1 and pole2=:param2

после этого у тебя появятся параметры
и можно будет их видеть в disign-time

параметры указываются с двоеточием впереди


Наверх

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