Текущий архив: 2003.12.19;
Скачать: CL | DM;
Вниз
Проблеммы с запросом ADOQuery с параметрами Найти похожие ветки
← →
Noir © (2003-11-25 18:34) [0]Вот какая беда тут у меня происходит. Не работает такая вот конструкция? то есть не возвращает результата никакого.
with DataModule2.q_chuser do
begin
if Active then Close;
SQL.Clear;
SQL.Add("Select * from users where nick= :p1");
Parameters[0].DataType:=ftString;
Parameters.ParamValues["p1"] := form2.Edit1.Text;
open;
end;
end;
Хотя следующий вариант работает отлично
with DataModule2.q_chuser do
begin
if Active then Close;
SQL.Clear;
SQL.Add("Select * from users where id_num= :p1");
Parameters[0].DataType:=ftInteger;
Parameters.ParamValues["p1"] := strtoint(form2.Edit1.Text);
open;
end;
end;
При подстановке вместо параметров четких значений в тело самого запроса все срабатывает.
Не подскажите ли в чем может быть моя ошибка?
Заранее благодарен.
D6, Oracle
← →
Johnmen © (2003-11-25 18:40) [1]Во-первых, я бы так написал
Parameters.ParamByName("pl").DataType:=...;
Parameters.ParamByName("pl").Value:=...;
А во-вторых, поле nick численное, а не символьное...
← →
Vlad © (2003-11-25 18:43) [2]>А во-вторых, поле nick численное, а не символьное...
Это почему ? :)
а так ?
with DataModule2.q_chuser do
begin
if Active then Close;
SQL.Clear;
SQL.Add("Select * from users where UPPER(RTRIM(LTRIM(nick)))= :p1");
Parameters[0].DataType:=ftString;
Parameters.ParamValues["p1"] := UpperCase(trim(form2.Edit1.Text));
open;
end;
end
← →
Serg (2003-11-25 18:44) [3]так может она и не должна ничего возвращать?
← →
Johnmen © (2003-11-25 18:45) [4]>Vlad © (25.11.03 18:43) [2]
>Это почему ? :)
Вот это навело на мысль такую
strtoint(form2.Edit1.Text);
← →
Vlad © (2003-11-25 18:47) [5]А вот это ни на что не навело ? :)
>where id_num= :p1"
← →
Johnmen © (2003-11-25 18:52) [6]>Vlad © (25.11.03 18:47)
Да-да-да... Действительно, там nick, а там id_num :)))))
Не обратил внимания...:)
← →
Noir © (2003-11-25 18:56) [7]Vlad, большое спасибо. именно так и сработало. а по поводу where id_num= :p1 - это я просто эксперементировал на предмет живости работы с параметрами и вводом в поля числа мне известного.
Еще раз большое спасибо. Работает.
← →
Shirson © (2003-11-26 11:37) [8]Для чего удалять гланды ректально? Параметры - вариантовые, так используйте это на всё катушку.
with DataModule2.q_chuser do
begin
if Active then Close;
SQL.Clear;
SQL.Add("Select * from users where nick= :p1");
// Parameters[0].DataType:=ftString;
Parameters.ParamValues["p1"] := form2.Edit1.Text;
open;
end;
end;
← →
Noir © (2003-11-26 12:10) [9]
> Shirson © (26.11.03 11:37) [8]
> Для чего удалять гланды ректально? Параметры - вариантовые,
> так используйте это на всё катушку.
Может быть инструмент коротковат, но гланды приходится удалять именно так, а Ваш вариант по непонятной причине не срабатывает.
← →
Shirson © (2003-11-26 14:02) [10]Странно. Везде срабатывает, а у вас - нет :)
Я таким вариантом и даты ищу, и integer, и string и чёрта в ступе. И всегда находится, что интересно :)
← →
Noir © (2003-11-26 16:16) [11]
> Shirson © (26.11.03 14:02) [10]
Не спорю. Ответ на вопрос может лежать на поверхности, но пока я его не вижу.
← →
sokohigh (2003-11-26 17:07) [12]а поле nick - наверное char, а не varchar?
← →
Noir © (2003-11-26 17:37) [13]
> sokohigh (26.11.03 17:07) [12]
VarChar2(15) (для полной ясности) :).
А вообще, сдается мне что тут не порядки с настройками подкючения. Без каких либо извращений нормально отрабатывает только выборка по типу Integer. C дробными числами выборку пока не пробовал производить - нет надобности (да и полей в базе дробных нет). А вот что касаемо типов String, Date то здесь только срабатывает при преобразовании к String, в верхний(возможно нижний) регистр с обрезанием всех пробелов.
Страницы: 1 вся ветка
Текущий архив: 2003.12.19;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.018 c