Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2018.03.04;
Скачать: CL | DM;

Вниз

Вопрос по SQL   Найти похожие ветки 

 
Мишаня   (2016-03-01 18:06) [0]

Здравствуйте мастера! Изучаю SQL, тестю на Firebird 2.5
Не работает вот такая конструкция:

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add("SELECT * FROM MYTABLE WHERE ((MYFIELD1 CONTAINING :Name_param1) or (MYFIELD2 CONTAINING :Name_param1)) and  (MYFIELD1=:Name_param2)");
IBQuery1.Params[0].AsString:=Edit1.Text;
IBQuery1.Params[1].AsString:=Edit2.Text;
if not IBQuery1.Prepared then IBQuery1.Prepare;
IBQuery1.Open;

Хотя совместные данные из эдитов точно есть в базе и должно показать результат, а ничего не находит... (((
Что делаю не так?


 
Мишаня   (2016-03-01 18:07) [1]

Вносил(смотрел) в IBExpert все...


 
Плохиш ©   (2016-03-01 18:12) [2]

В запросе три параметра


 
Мишаня   (2016-03-01 18:17) [3]

Для первого и второго данные подставляю через эдиты.


 
Мишаня   (2016-03-01 18:22) [4]

Заработала такая конструкция:

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add("SELECT * FROM MYTABLE WHERE ((MYFIELD1 CONTAINING :Name_param1) or (MYFIELD2 CONTAINING :Name_param2)) and  (MYFIELD1=:Name_param3)");
IBQuery1.Params[0].AsString:=Edit1.Text;
IBQuery1.Params[1].AsString:=Edit1.Text;
IBQuery1.Params[2].AsString:=Edit2.Text;
if not IBQuery1.Prepared then IBQuery1.Prepare;
IBQuery1.Open;

Что в SQL не так с именами? Все-равно не понимаю почему первый вариант не пашет?


 
эндсоувот ©   (2016-03-01 18:22) [5]

для начала надо уяснить и не сомневаться в том, что если выборка пуста, то под условие where не попало ни одной записи.

после этого надо выдохнуть и начать искать то условие, которое отсекло ожидаемые записи.


 
эндсоувот ©   (2016-03-01 18:24) [6]

Для первого и второго данные подставляю через эдиты.

парамс по индексу ничего не знает про то, что где-то есть еще параметр с таким же именем.

по индексу же присваиваешь


 
Мишаня   (2016-03-01 18:24) [7]

В запросе не допускается повторение параметров?


 
Мишаня   (2016-03-01 18:25) [8]

Аааа.... Нужен ParamByName наверно... ))


 
эндсоувот ©   (2016-03-01 18:27) [9]

В запросе не допускается повторение параметров?


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


 
Мишаня   (2016-03-01 18:30) [10]

Заработал первый вариант в другой редакции:

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add("SELECT * FROM MYTABLE WHERE ((MYFIELD1 CONTAINING :Name_param1) or (MYFIELD2 CONTAINING :Name_param1)) and  (MYFIELD1=:Name_param2)");
IBQuery1.ParamByName("Name_param1").AsString:=Edit1.Text;
IBQuery1.ParamByName("Name_param2").AsString:=Edit2.Text;
if not IBQuery1.Prepared then IBQuery1.Prepare;
IBQuery1.Open;

Теперь понятно где Муму зарыл Герасим...   )))


 
Мишаня   (2016-03-01 19:06) [11]

Всем спасибо за оперативные и ценные советы! ;)


 
Мишаня   (2016-03-01 23:16) [12]

Избаловали народ SQL-ем... )))


 
Кщд ©   (2016-03-02 07:40) [13]

>Мишаня   (01.03.16 23:16) [12]
>Избаловали народ SQL-ем... )))
SQL к данному вопросу никак не относится



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.005 c
2-1458222695
Новичок
2016-03-17 16:51
2018.03.04
Юниты


2-1456752598
Макака
2016-02-29 16:29
2018.03.04
Проверка условий


15-1470664634
KSergey
2016-08-08 16:57
2018.03.04
Письменность майя


15-1470376172
p
2016-08-05 08:49
2018.03.04
Road Map эмбаркадеро


15-1470691802
Юрий
2016-08-09 00:30
2018.03.04
С днем рождения ! 9 августа 2016 вторник