Форум: "Начинающим";
Текущий архив: 2018.03.04;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.001 c