Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизКак правильно передать параметру в запросе строку ...? Найти похожие ветки
← →
ZSergey (2004-03-31 20:36) [0]Уважаемые знатоки. Расталкуйте, почему не работает
динамичный запрос с диапазоном значений
хотя вроде бы все правильно:
S: string
s:="1200"+""" , """+"1404";
или
s:="""+"1200"+"""+","+"""+"1404"+""";
Myquery.sql.add("select ... ");
Myquery.sql.add("from ... ") ;
Myquery.sql.add("where a.tip in (:S)"); //хотя .. in ("1200","1404") работает
MyQuety.open;
запрос возвражает NULL! Как правильно
передать переменной S данную строку, чтобы работал запрос?
Может со скобками заморочки? Заранее благодарю!
← →
Desdechado © (2004-03-31 20:40) [1]s - переменная в Delphi,
:S - параметр запроса
а это разные веши
Myquery.sql.add("where a.tip in (" + S + ")");
← →
ZSergey (2004-03-31 20:53) [2]Ваш пример не работает, появляется ошибка conversion error from string "T".
Да и вопрос не в том, что S параметр или переменная!
Мне нужно передать значение именно в параметр, пусть будет SS!
← →
Nikolay M. © (2004-03-31 21:43) [3]В данном случае через параметр нельзя, только динамически формировать текст запроса.
← →
sniknik © (2004-03-31 21:57) [4]нужно, так чего не передаеш? где строка MyQuety.params/parameters/parambyname/parameters.parambyname/в зависимости от компанента....value:= s;
???
хотя так у тебя не сработает, conversion error from string явно говорит что преобразовать не может. типы не те.
пытаешся в строке как в массиве искать.
← →
sniknik © (2004-03-31 22:00) [5]Nikolay M. © (31.03.04 21:43) [3]
почему нельзя? есть же типы параметров массив, может и сработает с чем нибудь (на OLEDB как самый новый есть надежда, но сам не пробовал)
← →
Sergey_Masloff (2004-04-01 09:13) [6]Параметром тут ну никак не получится. Сервер разбирает текст запроса 1 раз а потом только связывает переменные. Тут 1 переменная и сервер только ее и свяжет. Ну нельзя же в самом деле выполнить запрос
select * from table
where field in("1,2,3,4")
а вы именно это пытаетесь сделать.
← →
Nikolay M. © (2004-04-01 09:42) [7]
> sniknik © (31.03.04 22:00) [5]
А ты сам ftArray у параметра пробовал выставить?
Не говоря уже о том, что в сабже указан IB, так что скорее всего OLE DB там и не пахнет.
Моя имха: только динамически. Буду рад, если переубедюсь на работающем примере :)
← →
Sergey_Masloff (2004-04-01 09:49) [8]Nikolay M. © (01.04.04 09:42) [7]
>в сабже указан IB, так что скорее всего OLE DB там и не пахнет
почекму? Что OLE DB для IB нет уже? с каких пор?
>Буду рад, если переубедюсь на работающем примере :)
и не надейся...
← →
Nikolay M. © (2004-04-01 09:55) [9]
> почекму? Что OLE DB для IB нет уже? с каких пор?
Да никуда он не девался, просто, скорее всего у автора BDE или IBX.
> >Буду рад, если переубедюсь на работающем примере :)
> и не надейся...
Убедил :)
← →
Sergey_Masloff (2004-04-01 10:01) [10]кстати тогда уж чего бы выполнить запрос с таким параметром:
s = "select anykey from anytable";
Query.SQL.Text := "select x,y,z from mytable where key in(:par)";
Query.Params[0].AsString := s;
Query.Open();
с точки зрения сервера такой же недопустимый вариант как первоначальный
← →
Nikolay M. © (2004-04-01 10:03) [11]
> "select anykey from anytable"
А на фига для этого параметр? :)
← →
sniknik © (2004-04-01 11:12) [12]Nikolay M. © (01.04.04 09:42) [7]
> А ты сам ftArray у параметра пробовал выставить?
почитай выше там прямо сказано что нет. и если пробовать то не прямо в визуальном компоненте его выставлять, а задать параметр через "грейтепараметр" у обьекта, обходя борландовские методы (возможно нереализованные для этого типа).
но сам то тип есть и не исключено что ктото его поддерживает, так что утверждать однозначно что такого не бывает я бы не стал.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c